Milvus + n8n:通过分析 GitHub 文档打造垂直领域的智能问答
作者:周弘懿(锦琛)
背景与挑战
在构建面向特定技术领域(如一个框架、一个平台或一个软件库)的问答机器人时,我们通常会面临以下核心挑战:
问题一:知识滞后性
技术文档,尤其是在活跃的开源项目中,更新非常频繁。新的 API、功能变更、Bug 修复说明、版本兼容性问题等信息层出不穷。依赖于通用大模型(其知识有截止日期)或手动更新的知识库,很快就会过时,导致提供的答案不准确甚至是有害的。
问题二:信息幻觉与事实不准确
当通用大模型(LLM)被问及它不确定的问题时,它可能会“编造”答案,即产生幻觉。在技术问答中,一个虚构的函数名、一个错误的配置参数,可能会浪费开发者数小时的调试时间。
问题三:领域术语与上下文理解不足
每个技术领域都有其独特的术语、缩写和上下文(例如,在数据库领域 "partition" 和在磁盘管理中的 "partition" 含义不同)。通用 LLM 可能无法准确理解这些细微差别。
问题四:知识库维护成本高昂
手动跟踪文档变更、处理、然后更新知识库是一项繁琐、易错且耗时的工作,难以规模化。
本文将聚焦于业界领先的 Milvus,并借助低代码工作流编排平台 n8n,向您展示如何将二者无缝结合,结合 GitHub 的 API 快速搭建一个企业级的垂直领域智能问答应用。同时会介绍一下如何构建一个生产可用的 n8n,聚焦在可观测和安全上。
通过与 Milvus 的结合使用,重点解决了以下智能问答中常见的问题:
一、非结构化数据处理的碎片化与高延迟
传统 RAG 数据管道依赖手动脚本处理文档分块、向量化、存储等流程,各环节割裂且难以实时更新,导致 Milvus 中的向量数据与源数据存在严重延迟。
Milvus 的突破性价值:
通过 高性能批量写入接口,支持 n8n 工作流中实时生成的向量数据高速入库(如每秒数万条),确保数据时效性;
提供 动态 Schema 管理,允许 n8n 灵活处理多模态数据(如文本+图像混合分块),避免因数据结构变更导致的流程中断。
二、复杂系统的运维成本高
自建向量检索系统需独立维护数据分片、索引构建、负载均衡等模块,运维复杂度极高。
Milvus 的突破性价值:
以 全托管服务 提供自动扩缩容、滚动升级、全链路监控告警能力,使 n8n 工作流无需关注底层运维,专注业务逻辑编排;
通过 混合查询(标量+向量) 能力,允许 n8n 在数据预处理阶段嵌入业务标签(如文档分类),提升后续检索精准度。
阿里云 Milvus 基本原理介绍
基本原理与架构概述
Milvus 是专为向量相似性搜索设计的分布式数据库,其核心基于以下关键技术:
近似最近邻搜索(ANN):通过 HNSW、IVF、PQ 等算法实现高效向量检索,平衡精度与速度。
向量索引与查询分离:支持动态构建多种索引类型(如 FLAT、IVF_FLAT、IVF_PQ、HNSW),适配不同场景需求。
向量数据分片与分布式计算:数据水平切分(Sharding)并行处理,实现高吞吐与低延迟。
采用云原生和存算分离的微服务架构。该架构分为接入、协调、执行和存储四层。各组件可独立扩展,确保了系统的高性能、高可用性和弹性。它依赖成熟的第三方组件(如 etcd、对象存储)进行数据和元数据管理,稳定可靠。

阿里云 Milvus 系统架构图
使用场景
阿里云 Milvus 适用于任何需要进行“相似性”匹配的场景。其核心应用包括:
图像视频搜索:如电商平台的以图搜图、安防领域的人脸识别和视频轨迹追踪。
文本语义搜索:构建智能客服、企业内部文档知识库和代码搜索引擎,能精准理解用户意图,而非简单的关键词匹配。
个性化推荐系统:根据用户的行为和偏好向量,实时推荐最相似的商品、音乐、新闻或视频。
前沿科学与安全:在生物信息学中加速药物分子筛选,或在网络安全领域进行异常流量和欺诈行为检测。
智能驾驶数据准备与挖掘:对点云图像、车载传感器收集的音视频等多模态数据进行向量数据的实时查询。
n8n 平台介绍
n8n,全称 NodeNation,意寓“节点连接”,是一个开源的、可视化的工作流自动化平台,被誉为“程序员的 Zapier”或可自部署的 Make。它允许用户通过连接不同的“节点”(Node)来构建强大的自动化任务。每个节点代表一个具体的操作,例如读取数据库、调用 API、发送邮件、处理文件或执行 AI 模型。用户可以在一个可视化的画布上,通过拖拽和连接这些节点,将复杂的业务流程、数据同步、定时任务等轻松实现自动化,而无需编写大量代码。其核心特点在于高度的灵活性和可扩展性,支持数百种应用和服务的即用型集成。
基础概念:
节点(Node):负责集成外部服务和实现功能的核心载体。工作流的最小功能单元,代表一个独立操作步骤(如发送 HTTP 请求、解析 JSON、写入数据库)。通过输入/输出端口传递数据(JSON 格式),支持本地执行或分布式执行。
工作流(Workflow):由多个节点按逻辑顺序连接而成的自动化流程,支持分支、循环、错误处理。支持事件驱动(Webhook)与定时调度两种触发模式,是执行引擎的输入。
执行引擎(Engine):n8n 的运行时核心,负责解析工作流定义和拓扑、调度节点执行、管理任务队列与错误重试。
卷(Volume):在容器化部署(如 Docker)中,用于持久化存储 n8n 配置、工作流数据与日志的存储空间。通过绑定宿主机目录到容器路径(如
/home/n8n/.n8n
),避免数据丢失。
方案概述
为了达到快速搭建一个企业级的垂直领域智能问答应用的效果,我们将在 n8n 中创建两个工作流。其中第一个工作流用来定时拉取 GitHub 上 Milvus 产品的文档数据,写入 Milvus 向量库中。第二个工作流使用 AI Agent,结合大模型的能力判断客户的提问,当问及的问题与 Milvus 产品相关就从 Milvus 向量库中召回问题对应的答案,将答案整合到大模型的输出中返回客户;否则就直接通过大模型进行一个通用的回答。
流程图大致如下所示:

操作步骤
前提条件
已创建阿里云 Milvus 实例。具体操作,请参见快速创建Milvus实例。
已开通服务并获得 API-KEY。具体操作,请参见开通DashScope并创建API-KEY。
github 创建 openapi key,请参见 GitHub认证。
已安装本地 docker,请参见 Docker&Docker Compose安装(离线+在线) 。
1、n8n 安装与配置
输入以下命令,创建一个名字为 n8n_data 的数据卷,并创建 n8n 运行容器

安装成功验证
启动后访问部署的 n8n 服务 IP 地址http://127.0.0.1:5678/ 进入 n8n 的登陆页面,设置管理员账号密码,并登陆进管控台。

阿里云 Milvus 接入配置
创建 Milvus 账号,输入 Base URL、Username 和 Password,顶部连接验证通过即可。
注意
将 Base URL 替换为您的阿里云 Milvus 公网地址,并在后面需要加端口 19530。
将 Username 替换为您的阿里云 Milvus 用户。
将 Password 替换为您的阿里云 Milvus 密码。

GitHub 接入配置
创建 GitHub 账号,开通方式参考文档,输入 User 和 Access Token,顶部连接验证通过即可。

2、工作流配置:拉取 GitHub 数据创建知识库
在 n8n 平台上添加工作节点,选择 GitHub 的 List files 节点

选择 GitHub 接入的 Credential,填写仓库 Owner、仓库 Name 以及需要创建向量的 Path,如下图所示,然后执行 Execute step 查看输出。

在 Split Out 输出节点配置参数中,选择 download_url 字段,配置一个 Split Out Node 做字段提取。

为避免执行后可能会出现 null 或者.png 结尾的文档,进一步可能影响后续 Http 获取的正确性,所以我们还需要配置一个 If Node,过滤掉 null 和非.md 的链接,If Node 节点具体配置如下图所示。

接下来配置一个 Http Request 节点,URL 为之前的 download_url 参数,测试输入输出,如下图所示。

自此,milvus 官网的文档内容我们已经成功提取了,这部分完整工作流如下图所示。

接下来就需要对解析的网页内容,向量化后输入 milvus 数据库,我们在上述工作流的基础上添加一个后继节点 Milvus Vector Store,选择 Milvus 接入的 Credential,选择一个 collection,这里使用了 n8n_test,为了便于测试,选择 Clear Collection 开关打开,这样每次插入时会自动清除数据。

在 Milvus Vector Store 节点配置的左下角添加 embedding 模型,我们这里选择 text-embedding-v1 模型,dataloader 使用 Default Data Loader,并选择之前参数中的 data 字段。


最后,因为考虑到 github 上文档的实时性,我们需要定时同步所有文档,因此添加一个 Schedule Trigger 节点,定时执行,放在最前面进行工作流的触发,具体配置如下,我们这里选择定期同步的周期为每天。

github 上提取文档内容以及录入 milvus 向量库的工作流已经配置完成,如下图所示。

执行该工作流,查看下面交互式日志。

验证阶段登录阿里云Milvus控制台,选择您配置的 Milvus 实例,单击右上角 Attu Manager 进入 Attu 页面,可以看到对应的 n8n_test collection 数据已存在,点击加载 collection,左侧 collection 处显示绿灯,且有加载 entity 即可。


现在,我们已经可以实现成功将 GitHub 拉取数据创建知识库。
3、工作流配置:大模型结合 Milvus 检索增强
为了实现智能化的问答,接下来我们重新创建一个工作流,选择 When chat message received 节点,当收到输入框内容回车后触发。

接下来创建一个 AI Agent 节点,通过接受 Chat 输入,当客户搜索 Milvus 相关信息时,我们希望从之前创建的知识库进行内容召回,除此之外,采用大模型的默认输出返回。在本例中,输入以下内容作为 System Prompt

左下角的 Chat Model 我们选用 qwen-plus 模型。

中间 Memory 选用 Simple Memory,最多保持 5 条上下文

右下角 Tool 位置,添加 Milvus Vector Store,模式采用作为 Tool 方式,Collection 选取之前创建知识库对应的 n8n_test,召回限制设置 4,可以选择 Metadata,以便当 chunk 数据中包含 metadata 可以有更好的精确度。其中 Rerank 简单来说,核心作用是“精加工”和“优化”,它在粗糙的向量检索结果之上,进行一次更精确、更智能的排序,从而把最相关的结果顶到最前面,弥补了召回率高精准度低的情况。 Rerank 可以视情况选取,在本例子中不选。

再后接一个 Set 节点,将文本输出的内容提取出来

大模型结合 Milvus 检索增强的工作流已经配置完成,如下图所示。

验证效果
执行 Chat 工作流,输入一个 Milvus 相关的技术问题,比如 “Milvus 的 Data Classification 策略有哪些?”
可以看到 AI Agent 通过将 Milvus 知识库召回的内容,结合大模型润色总结,输出了一个可读性较强的内容。

查看 n8n 的执行监控日志,可以清晰的看到每个步骤的输入输出,如图 Milvus 向量召回可以看到原始的与内容相关的文档,同时左侧可以看到整个问答的链路以及内部一些细节,体验非常好。

n8n 可观测
工作流编排平台如 n8n、Dify 等,通过连接不同服务(如 API、数据库、AI 模型)来自动化复杂任务。随着工作流节点增多、逻辑变复杂,一个任务的执行路径如同一个微服务调用链,可观测性变得至关重要。
其中,Trace(链路追踪)是可观测的核心。它能将单次工作流执行所经过的所有节点串联成一条完整的、可视化的调用链。这使得开发者可以:
快速定位错误:清晰看到流程在哪一步中断及其上下文。
分析性能瓶颈:直观了解每个节点的耗时,找出拖慢整体流程的环节。
理解数据流转:追踪数据在各个节点间的传递与变换过程。
没有 Trace,诊断复杂工作流的故障就像大海捞针,因此它是确保平台稳定与高效的关键。
目前比较尴尬的是,n8n 并没有提供原生的可观测平台的接入支持,比如 langfuse 的 Trace 能力集成,暂时还没实现,参考文档。在社区也有大量 Trace 方面的讨论,参考文档,官方暂时没有实现。
本例子参考了一些民间的解决方案,实现了 n8n 与opentelemetry的集成。
集成了opentelemetry后,可以对接任何可观测平台,比如 skywalking、Jaeger 等开源可观测平台,这里以阿里云 SLS 为例子。
操作步骤
首先通过 git 命令下载项目,镜像打包
启动镜像,输入 trace 相关的环境变量,这部分请参考阿里云官方文档。
启动后,重新运行一下之前的 case,重新问一个问题。

查看 docker logs 可以看到 trace 已经打印出来。

查看 Trace 平台可以看到数据已上报。

n8n 安全
“我的密码足够复杂,不可能被攻破!” ——这是无数系统管理员在遭遇安全事件前,最常持有的信念。
然而,现实往往比想象更加残酷。对于像 n8n 这类功能强大且高度可扩展的自动化工作流平台而言,潜在的安全风险远不止于账户泄露本身。
n8n 的一大优势在于其开放性:支持用户自由安装第三方 npm 节点,极大地提升了功能的灵活性和可拓展性。但正因如此,这种开放性也带来了不容忽视的安全隐患。一旦攻击者获取了账户权限,他们不仅能随意查看、修改甚至删除您精心设计的工作流(Workflow),更可利用节点安装机制,植入恶意代码模块。更为严峻的是,这些第三方节点通常以与 n8n 主进程相同的权限运行。这意味着,一个恶意节点可能直接获得服务器的执行权限,进而实现远程命令执行、横向渗透、数据窃取,甚至完全掌控整个服务器系统。到那时,数据被删除或许只是最轻微的后果——更严重的情况可能是敏感信息被长期窃取、系统被用作跳板发起进一步攻击,或是服务器沦为僵尸网络的一部分。
因此,我们必须清醒地认识到:强大的工具,必须配以同等严谨的安全策略。
本例子将使用动态密码(2FA)技术,保障 n8n 的登陆安全。
操作步骤
前提有一部手机,下载 Microsoft Authenticator (或其他同类应用如 Authy, Google Authenticator)
首先登录你的 n8n,点击左下角的齿轮图标进入 Settings,然后选择 Personal。在这里,你会看到 Two-factor authentication (2FA) 的选项,点击 Enable 2FA。


这时候屏幕上会弹出一个独一无二的二维码。这个二维码就是 n8n 和你的手机应用之间建立信任的信物。
打开手机上安装好的 Microsoft Authenticator 应用,点击右下角的“+”号,选择“扫描二维码”。对准你电脑屏幕上的二维码,轻轻一扫。

你的 n8n 实例就已经被添加进来了。你会看到一个由 6 位数字组成的,每 30 秒刷新一次的动态密码。

再回到 n8n 界面,在二维码下方的输入框里,填入你手机 App 上刚刚生成的 6 位动态密码,然后点击确认。至此,n8n 就有了 2FA 的保护。
启用 2FA 后,n8n 会提供给你一组一次性的恢复代码如下图,最好拿小本本记录一下,若手机损坏丢失后,下次 disable 2FA 重置时需要提供。

此后,在输出账号密码后,还需要输入 2FA code,n8n 的安全性再上一个台阶!

立即体验
免费试用:产品新用户可免费试用入门版 8 vCPU 32 GiB1 个月,领取地址(https://free.aliyun.com/?spm=5176.29677750.J_8HFJQ_URHoEpVHXyAYU8c.1.e939154ajm3J4u&searchKey=milvus)
年付 5 折:覆盖阿里云 Milvus 全规格产品
欢迎前往产品详情页购买体验!https://www.aliyun.com/product/milvus
评论