写点什么

Milvus + n8n:通过分析 GitHub 文档打造垂直领域的智能问答

  • 2025-08-11
    陕西
  • 本文字数:6184 字

    阅读完需:约 20 分钟

作者:周弘懿(锦琛)

背景与挑战

在构建面向特定技术领域(如一个框架、一个平台或一个软件库)的问答机器人时,我们通常会面临以下核心挑战:


问题一:知识滞后性


技术文档,尤其是在活跃的开源项目中,更新非常频繁。新的 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 向量库中召回问题对应的答案,将答案整合到大模型的输出中返回客户;否则就直接通过大模型进行一个通用的回答。


流程图大致如下所示:



操作步骤

前提条件

1、n8n 安装与配置

输入以下命令,创建一个名字为 n8n_data 的数据卷,并创建 n8n 运行容器


docker volume create n8n_data
docker run --name n8n -d \ -e N8N_SECURE_COOKIE=false \ -p 5678:5678 \ -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/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


你是主控 AI,负责统筹不同的专业子代理,以执行复杂的用户任务。
你有以下的Agent/Tool
1. MilvusDocumentAgent Agent负责搜索所有Milvus相关的文档,当涉及到Milvus相关搜索,运行这个Agent
其他情况下,直接在该节点执行
复制代码



左下角的 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(链路追踪)是可观测的核心。它能将单次工作流执行所经过的所有节点串联成一条完整的、可视化的调用链。这使得开发者可以:


  1. 快速定位错误:清晰看到流程在哪一步中断及其上下文。

  2. 分析性能瓶颈:直观了解每个节点的耗时,找出拖慢整体流程的环节。

  3. 理解数据流转:追踪数据在各个节点间的传递与变换过程。


没有 Trace,诊断复杂工作流的故障就像大海捞针,因此它是确保平台稳定与高效的关键。


目前比较尴尬的是,n8n 并没有提供原生的可观测平台的接入支持,比如 langfuse 的 Trace 能力集成,暂时还没实现,参考文档。在社区也有大量 Trace 方面的讨论,参考文档,官方暂时没有实现。


本例子参考了一些民间的解决方案,实现了 n8n 与opentelemetry的集成。


集成了opentelemetry后,可以对接任何可观测平台,比如 skywalking、Jaeger 等开源可观测平台,这里以阿里云 SLS 为例子。

操作步骤

首先通过 git 命令下载项目,镜像打包


git clone https://github.com/pbrissaud/n8n-opentelemetry
cd n8n-opentelemetry
docker build -t n8n-otel:latest .
复制代码


启动镜像,输入 trace 相关的环境变量,这部分请参考阿里云官方文档


docker run --name n8n -d \    -e N8N_SECURE_COOKIE=false \    -e OTEL_SDK_DISABLED="false" \    -e OTEL_SERVICE_NAME="n8n" \    -e OTEL_LOG_LEVEL="info" \    -e OTEL_EXPORTER_OTLP_ENDPOINT="https://taihao-server-cn-hongkong-prod.cn-hongkong-intranet.log.aliyuncs.com:10010" \    -e OTEL_EXPORTER_OTLP_HEADERS="x-sls-otel-project=taihao-server-cn-hongkong-prod,x-sls-otel-instance-id=taihao-cn-hongkong,x-sls-otel-ak-id=xxx,x-sls-otel-ak-secret=xxx" \    -p 5678:5678 \    -v n8n_data:/home/node/.n8n n8n-otel:latest
复制代码


启动后,重新运行一下之前的 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


用户头像

还未添加个人签名 2020-10-15 加入

分享阿里云计算平台的大数据和AI方向的技术创新和趋势、实战案例、经验总结。

评论

发布
暂无评论
Milvus + n8n:通过分析GitHub文档打造垂直领域的智能问答_GitHub_阿里云大数据AI技术_InfoQ写作社区