背景:n8n 与 RAG 知识库集成的挑战
n8n 作为一款强大的开源自动化工作流工具,正获得越来越多用户的青睐。它由前《加勒比海盗》视觉设计师 Jan Oberhauser 于 2019 年创立,旨在提供比 Zapier 等工具更灵活、成本更低的自动化方案。 n8n 秉持“自由可持续,开放且务实”的理念,其核心在于通过 可视化与代码 双模式,让用户能够连接不同应用,实现复杂流程的自动化(官方文档:https://docs.n8n.io/)。用户熟悉后,用其构建简单的工作流通常相当快捷,并且支持一键将工作流发布至公网,提供了极大的便利性。
n8n 常被形容为“自动化领域的乐高”,强调其灵活性和组合能力。
然而,在 AI 应用日益普及的背景下,一个常见需求浮出水面:如何在 n8n 中高效地集成 RAG(Retrieval-Augmented Generation,检索增强生成)知识库?RAG 是一种结合了信息检索与文本生成的技术,能让大型语言模型在回答问题时,参考外部知识库,从而提供更准确、更具上下文的答案。
直接在 n8n 中构建 RAG 知识库被证实是一个相对复杂的过程。这通常需要开发者手动搭建两个独立的工作流:一个用于处理文件上传、向量化并存入数据库,另一个用于实现基于 RAG 的问答交互。
示例:左侧为文件上传工作流,右侧为 RAG 问答工作流。
即便成功搭建,这种原生方案在使用体验上也可能不尽人意。这促使我们思考:是否可以将外部成熟的知识库解决方案,例如广受欢迎的 FastGPT,接入 n8n 使用?
解决方案:利用 FastGPT 与 MCP 协议
FastGPT 是一个备受好评的开源 LLM 应用平台,尤其以其强大的 RAG 功能和易用性著称。近期 FastGPT 的更新(可关注其 GitHub: https://github.com/labring/FastGPT)带来了一个令人兴奋的特性:支持 MCP(Meta Component Protocol,元组件协议)。
MCP 旨在解决不同 AI 应用和服务间的互操作性问题,可以理解为一个“万能插座”协议。FastGPT 不仅支持作为 MCP 客户端接入其他服务,也能作为 MCP 服务端,将其能力(如知识库)暴露给其他兼容 MCP 的平台。
巧合的是,n8n 近期也官方支持了 MCP 协议。这意味着,可以将 FastGPT 的知识库能力通过 MCP 发布,然后直接在 n8n 中作为一个“工具”接入。实践证明,该方案完全可行,且对接过程相当顺畅。利用 FastGPT 成熟的 RAG 实现,集成后的知识库问答效果通常非常出色。
整个操作流程可以概括为以下几个步骤:
- 部署 n8n 环境(本地或服务器)。
- 部署或升级 FastGPT 至支持 MCP 的版本。
- 在 FastGPT 中创建并配置对外提供服务的 MCP-Server。
- 在 n8n 工作流中接入该 FastGPT MCP-Server。
部署或升级 FastGPT
FastGPT 从 v4.9.6 版本开始支持 MCP,建议使用最新稳定版(编写本文时为 v4.9.7-fix2)。这里介绍使用 docker-compose
进行部署或升级的方法(需要预先安装 Docker 环境)。
需要准备以下两个文件:
- FastGPT 最新的
docker-compose.yml
文件。 - FastGPT 最新的
config.json
文件。
可以从 FastGPT 的 GitHub 仓库获取这两个文件:
docker-compose-pgvector.yml
: https://github.com/labring/FastGPT/blob/main/deploy/docker/docker-compose-pgvector.ymlconfig.json
: https://raw.githubusercontent.com/labring/FastGPT/refs/heads/main/projects/app/data/config.json
注意:如果无法直接访问 GitHub,可以尝试寻找其他获取途径或使用国内镜像源。
以下步骤适用于全新部署和升级:
- 如果是升级,请务必先备份旧的
docker-compose.yml
和相关数据卷。 - 将获取到的最新
docker-compose.yml
和config.json
文件放置在同一个目录下。
在 config.json
文件中,需要特别关注 mcp.server.host
配置项。
- 如果 FastGPT 和 n8n 都部署在本地 Docker 环境中,可以将
mcp.server.host
设置为本机的局域网 IP 地址,端口通常固定为3005
。 - 如果部署在云服务器上,应将其设置为服务器的外网 IP 地址或域名。
确认配置无误后,在该文件目录下打开终端或命令行,执行以下命令:
docker-compose up -d
当看到类似下图的日志输出,且容器都正常运行时,表示部署或升级成功。
温馨提示:如果在拉取 Docker 镜像时遇到困难,可以尝试修改 docker-compose.yml
文件,将官方镜像地址替换为国内的镜像仓库地址(如阿里云镜像)。
在 FastGPT 中创建 MCP 服务
成功部署或升级 FastGPT 后,通过浏览器访问 FastGPT 的 Web 界面(默认为 http://127.0.0.1:3000
)。
导航至 工作台 -> MCP 服务 -> 新建服务。这里可以创建向外暴露能力的 MCP-Server。
创建服务后,点击 管理,可以看到可以向此 MCP 服务中添加“工具”。这些工具可以是 FastGPT 中创建的 Bot、工作流等应用。
这里遇到一个关键问题:目前似乎无法直接将 FastGPT 中已创建的“知识库”本身作为一个独立的工具添加到 MCP 服务中。如果将接入了知识库的 Bot 作为工具放入 MCP 服务,那么 n8n 端通过 MCP 调用时,获取到的可能是经过 Bot 内大模型处理(如总结、改写)后的内容,而非知识库检索出的原始片段。这可能不符合预期,特别是在需要精确引用原文的场景下。
一个巧妙的解决方法是利用 FastGPT 的 工作流 功能。可以在 FastGPT 中创建一个简单的工作流,其核心功能就是执行知识库搜索,并按需指定回复格式。
具体步骤如下:
- 在 FastGPT 中新建一个工作流。
- 在工作流中仅添加 知识库搜索 节点和 指定回复 节点(或其他必要的逻辑节点)。
- 配置 知识库搜索 节点,选择目标知识库,并设置相关参数(如最低相关度、引用数量上限等)。
- 配置 指定回复 节点,决定如何输出检索结果(例如,直接输出原始文本块)。
- 点击右上角的 保存并发布。
重要提示:工作流的名称建议使用英文,并且务必填写应用介绍。这些信息会在 n8n 中显示,有助于识别工具。
完成工作流创建和发布后,回到 MCP 服务 管理界面。
- 创建一个新的 MCP 服务(或编辑现有服务)。
- 将刚刚创建的包含知识库搜索的工作流添加为该服务下的一个工具。
添加完成后,点击 开始使用。
在弹出的窗口中,找到 SSE 一栏,复制提供的地址。这个地址就是刚刚创建的 FastGPT MCP-Server 的接入点。
在 n8n 中接入 FastGPT MCP 服务
现在,切换到 n8n 的工作流编辑界面。
- 选择一个合适的节点,例如 AI Agent 节点,在其 Tool 配置部分,点击加号 +。
- 搜索并添加官方提供的 MCP Client Tool 节点。
- 在 MCP Client Tool 的配置界面中:
- 将前面从 FastGPT 复制的 SSE 地址粘贴到 Server URL 字段。
- 可以为这个 Tool 节点设置一个描述性的名称(例如
FastGPT Knowledge Base via MCP
),方便在 Agent 中调用。
配置完成后,可以在 n8n 的 Chat 对话框(或其他触发方式)中进行测试。发出一个需要调用知识库的问题。如果配置正确,可以看到 n8n 成功调用了 FastGPT MCP 服务,并从 FastGPT 的知识库中获取了相关信息作为回答依据。
正如前面提到的,FastGPT 在轻量级 LLM 应用平台中,其 RAG 知识库的效果通常被认为是相当出色的。
此外,可以看到,在 FastGPT 中为工作流设置的名称和介绍,会作为工具信息显示在 n8n 端,帮助 Agent 理解和选择使用哪个工具。
拓展思路与其他接入方式
通过 MCP 将 FastGPT 知识库(封装在工作流中)接入 n8n 是一个高效且灵活的方法。基于此,还可以拓展:
- 将 FastGPT 的 插件 或 搭载了知识库的 Bot 本身打包成 MCP 服务对外提供。
- 利用 FastGPT 的 API 功能。FastGPT 允许将创建的应用(如搭载知识库的 Bot)发布为兼容 OpenAI API 格式的接口。
这种 API 方式也可以用于在 n8n 中接入 FastGPT 知识库:
- 在 n8n 的 AI Agent 节点(或其他需要调用 LLM 的节点)中,添加一个新的 Chat Model。
- 选择 OpenAI Compatible Chat Model 类型。
- 配置凭证 (Credentials):
Base URL
填写 FastGPT 提供的 API 地址。API Key
填写 FastGPT 应用对应的 API 密钥。
Model Name
可以任意填写,实际生效的模型将以 FastGPT Bot 内部配置的为准。
通过这种方式,n8n 会将请求发送给 FastGPT 的 API 端点,FastGPT 处理后返回结果。这相当于将 FastGPT 的 Bot(及其知识库)作为一个外部大模型服务来调用。
对比 MCP 与 API 方式:
- MCP 方式:
- 优点:更符合 n8n 的“工具”概念,可以在 Agent 中与其他工具组合使用,更原生;可能提供更丰富的元数据(如工具描述)。
- 缺点:设置步骤相对多一些(创建工作流、配置 MCP 服务)。
- API 方式:
- 优点:设置相对简单,只需获取 API 地址和 Key;对于只需将 FastGPT 作为单一问答引擎的场景很直接。
- 缺点:在 n8n 中表现为调用一个外部模型,而非一个可组合的“工具”;模型配置(如温度、max_tokens 等)可能需要在 n8n 端和 FastGPT 端协调。
开发者可以根据具体需求和偏好选择合适的集成方式。
发布与应用
无论采用哪种方式集成了 FastGPT 知识库,完成 n8n 工作流的调试后,可以方便地将其发布供外部使用。
例如,使用 Chat Message 作为触发节点时:
- 双击 Chat Message 节点。
- 开启 Make chat publicly available 选项。
- 系统会生成一个公开的 Chat URL 链接,复制此链接即可分享。
- 不要忘记 保存 (Save) 并 激活 (Activate) 工作流。
这个公开的聊天页面甚至可以在移动设备的浏览器中访问和使用。
值得一提的是,n8n 提供的这个公网聊天页面还支持许多定制化配置,例如设置密码访问、允许用户上传文件等。
这使得 n8n 非常适合用于快速构建 MVP (Minimum Viable Product) 产品原型,或为个人及团队内部搭建提效的 AI 工作流。
除了 Chat Message 节点,n8n 的许多其他触发节点(如 Webhook)也支持发布到外网访问,提供了极高的自由度。如果 n8n 部署在本地,可以通过内网穿透等技术实现外网访问。
结语思考:n8n 的价值定位
在讨论这类低代码/无代码自动化工具时,一个常见的问题是:为什么不直接用代码实现?对于熟悉编程的开发者来说,用代码似乎更直接、更可控。
确实,n8n 这类工具存在一定的学习曲线,初期上手可能需要投入一些时间。然而,一旦熟练掌握,其构建和迭代工作流的效率往往远超传统代码开发,特别是在涉及集成多个 API 和服务的场景下。n8n 强大的节点生态和社区支持能够满足从简单到复杂的各种自动化需求,让想法快速落地。
当然,对于需要高度定制、极致性能或涉及复杂底层逻辑的企业级项目,纯代码开发仍然是必要的。但对于大量的自动化场景、内部工具搭建、快速原型验证等需求,n8n 及其类似工具提供了一个非常高效且灵活的选择。将 FastGPT 这类优秀的 AI 应用通过 MCP 等协议集成进来,进一步拓展了 n8n 的能力边界。