目录
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 Store | PostgreSQL + 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
运行一次后,文档就会被切块、转换为向量并存储。
工作流 ②:问答
- When chat message received → AI Agent。
- 给 AI Agent 连接 Chat Model 和 Memory(同 AI Agent 入门)。
- 在 Tool 插槽中添加 Simple Vector Store,将操作模式设为 Retrieve Documents (As Tool for AI Agent):
- Memory Key:
company_docs - Description:
查询公司内部规章制度与产品文档。回答任何有关公司政策或产品规格的问题前,都必须使用。 - Limit:每次检索的段落数,例如 4
- Memory Key:
- 这个 Vector Store 也要连接同一个 Embeddings 模型。
- 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日