目录

n8n RAG 教程:构建能根据文档回答问题的 AI 知识库

AI 模型不了解你公司的规章制度、产品手册或 FAQ。RAG 的做法是:先把文档存入“向量数据库”,用户提问时检索出最相关的段落,再交给模型根据这些内容作答。

在 n8n 中,RAG 通常分为两个工作流:

① 导入文档:[获取文档] ─▶ [Vector Store:插入] ← [Embeddings] + [Document Loader + Text Splitter]

② 问答:    [Chat Trigger] ─▶ [AI Agent] ← [Chat Model] + [Memory] + [Vector Store 工具 ← Embeddings]

原理说明可以参考 Ollama 文本嵌入与 RAG。

选择向量数据库

节点特点适用场景
Simple Vector Store存储在 n8n 内存中,无需安装学习、测试(重启后数据会消失)
Qdrant Vector Store专用向量数据库,可用 Docker 自行托管正式使用
Postgres PGVector StorePostgreSQL + pgvector 扩展已在使用 PostgreSQL
Pinecone、Supabase 等云服务不想自行维护

下面先用 Simple Vector Store 演示,最后说明如何切换到 Qdrant。

工作流 ①:导入文档

1. 触发并获取文档

  • 测试时可以使用 Form Trigger 添加文件上传字段,直接上传 PDF。
  • 正式使用时,可以使用 Google Drive Trigger(文件夹中有新文件时触发)+ Google Drive 节点下载文件。

2. 添加 Vector Store 节点

添加 Simple Vector Store,将操作模式设为 Insert Documents,在 Memory Key 中填写一个名称,例如 company_docs(问答时也要使用同一个名称)。

3. 连接 Embeddings

在 Embeddings 插槽中选择嵌入模型:

  • Embeddings OpenAI
  • Embeddings Ollama(本地免费,中文建议使用 bge-m3)

导入和查询必须使用同一个嵌入模型,否则向量无法匹配。

4. 连接 Document Loader 和 Text Splitter

  • Default Data Loader:将 Type of Data 设为 Binary(文件)或 JSON(文本数据)。
  • 在 Data Loader 下连接 Recursive Character Text Splitter:
    • Chunk Size:每段的字符数,中文文档可以先尝试 500~800
    • Chunk Overlap:相邻段落重叠的字符数,例如 100

运行一次后,文档就会被切块、转换为向量并存储。

工作流 ②:问答

  1. When chat message received → AI Agent。
  2. 给 AI Agent 连接 Chat Model 和 Memory(同 AI Agent 入门)。
  3. 在 Tool 插槽中添加 Simple Vector Store,将操作模式设为 Retrieve Documents (As Tool for AI Agent):
    • Memory Key:company_docs
    • Description:查询公司内部规章制度与产品文档。回答任何有关公司政策或产品规格的问题前,都必须使用。
    • Limit:每次检索的段落数,例如 4
  4. 这个 Vector Store 也要连接同一个 Embeddings 模型。
  5. AI Agent 的系统提示词:
你是公司的内部知识库助手,请使用简体中文回答。
回答前务必先使用知识库工具进行查询。
只根据检索到的内容回答;如果找不到相关资料,请直接说“知识库中没有相关资料”,不要自行推测。

点击 Open chat 进行测试,询问文档中的内容。

Simple Vector Store 的数据存储在内存中,两个工作流必须在同一个 n8n 实例中运行,而且 n8n 重启后需要重新导入数据。

切换到 Qdrant(正式使用)

在 Docker Compose 中添加 Qdrant:

  qdrant:
    image: qdrant/qdrant
    volumes:
      - qdrant_data:/qdrant/storage
    restart: unless-stopped

(记得在 volumes: 区块中添加 qdrant_data:。)

将两个工作流中的 Simple Vector Store 都替换为 Qdrant Vector Store,在凭据的 URL 中填写 http://qdrant:6333,并指定相同的 Collection 名称。数据会永久保存。

提升回答质量

  • 文档质量最重要:扫描版 PDF 需要先转换为文本;表格和图片中的信息可能无法正确读取。
  • 调整切块大小:回答缺少上下文时增大 Chunk Size;回答混入无关内容时则缩小。
  • 添加元数据:在 Data Loader 中添加文档名称、类别等 metadata,回答时可以注明来源,也可以按类别筛选。
  • 更新文档:更新同一份文档时,先删除旧向量再重新导入,否则检索结果会同时包含新旧内容。
  • 选择合适的嵌入模型:中文内容建议使用多语言嵌入模型。

不止用于文档

同样的方法也可以用于:

  • 客服历史问答 → 自动回复常见问题
  • 产品目录 → 产品推荐助手
  • 会议记录 → “上次会议决定了什么?”

更新于 2026年10月12日