Milvus x n8n :自动化拆解Github文档,零代码构建领域知识智能问答

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,1000CU*H 3个月
简介: 本文介绍了在构建特定技术领域问答机器人时面临的四大挑战:知识滞后性、信息幻觉、领域术语理解不足和知识库维护成本高。通过结合Milvus向量数据库和n8n低代码平台,提出了一种高效的解决方案。该方案利用Milvus的高性能向量检索和n8n的工作流编排能力,构建了一个可自动更新、精准回答技术问题的智能问答系统,并介绍了部署过程中的可观测性和安全性实现方法。

作者:周弘懿(锦琛)


背景与挑战

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

  • 问题一:知识滞后性

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

流程图大致如下所示:

image.svg

操作步骤

前提条件


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的安全性再上一个台阶!

立即体验

我们诚邀您立即体验阿里云Milvus 的强大功能!欢迎加入向量检索 Milvus 用户交流群一起畅聊。

免费试用:产品新用户可免费试用入门版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

相关文章
|
1月前
|
存储 人工智能 自然语言处理
让你拥有一个AI大脑,这个32.1k Github项目是你不错的选择,支持PDF、Markdown、代码、视频成为你的知识内容
Quivr 是开源全栈 RAG 平台,助你打造“第二大脑”,支持多文档类型与多种 LLM,实现智能搜索与聊天。具备语义检索、本地部署、隐私保护等功能,适用于个人知识管理与企业知识库,界面简洁易用,是高效智能问答的理想选择。
|
4月前
|
JSON JavaScript API
MCP 实战:用配置与真实代码玩转 GitHub 集成
MCP 实战:用配置与真实代码玩转 GitHub 集成
1188 4
|
6月前
|
人工智能 网络安全 开发工具
vscode代码推送到github库菜鸡专用教程
vscode代码推送到github库菜鸡专用教程
|
8月前
|
Devops Shell 网络安全
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
331 16
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
|
11月前
|
开发工具 git Python
代码管理记录(二):Github代码上传实操
本文是关于如何使用Git将本地代码上传到GitHub的实操指南。介绍了Git的基本概念、安装方法,并通过详细的步骤指导用户从GitHub创建仓库到使用Git命令初始化、添加、提交代码,最终将代码推送到远程仓库。同时,还汇总了一些常见的错误及其解决方法。
306 2
代码管理记录(二):Github代码上传实操
|
存储 安全 API
GitHub主要仓库泄露访问令牌,代码与云环境面临风险
GitHub主要仓库泄露访问令牌,代码与云环境面临风险
GitHub主要仓库泄露访问令牌,代码与云环境面临风险
|
安全 网络协议 Shell
Github代码仓库SSH配置流程
这篇文章是关于如何配置SSH以安全地连接到GitHub代码仓库的详细指南,包括使用一键脚本简化配置过程、生成SSH密钥对、添加密钥到SSH代理、将公钥添加到GitHub账户以及测试SSH连接的步骤。
531 0
Github代码仓库SSH配置流程
怎样在GitHub上建立仓库、以及怎样实现分支代码的合并。保姆级别的教程
这篇文章是一份详细的GitHub使用教程,介绍了如何在GitHub上创建仓库、创建分支、编辑和发布更改内容、发起拉取请求以及合并分支的操作步骤。
怎样在GitHub上建立仓库、以及怎样实现分支代码的合并。保姆级别的教程
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之从GitHub下载代码失败是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

热门文章

最新文章