n8n 中的 RAG#
什么是 RAG#
检索增强生成(RAG)是一种通过将语言模型与外部数据源相结合来提升 AI 响应质量的技术。RAG 系统不依赖模型内部训练数据,而是通过检索相关文档,使回答基于最新、领域特定或专有知识。RAG 工作流通常依赖向量存储来高效管理和检索外部数据。
什么是向量存储?#
向量存储是专用于存储和检索高维向量的特殊数据库,这些向量是文本、图像等数据的数值化表示。上传文档时,向量存储会将其分割为文本块,并通过嵌入模型将每个文本块转换为向量。
支持通过相似性搜索查询这些向量,其返回结果基于语义关联而非关键词匹配。这使得向量存储成为 RAG 及其他需要海量知识检索与推理的 AI 系统的核心基础。
如何在 n8n 中使用 RAG#
从 RAG 模板开始
👉 使用 RAG 入门模板立即体验 n8n 的 RAG 功能。该模板包含两个开箱即用的工作流:分别用于文件上传和文件查询。
向向量存储插入数据#
在智能体访问定制知识前,需先将数据上传至向量存储:
- 添加获取源数据所需的节点
- 插入向量存储节点(例如 简单向量存储)并选择插入文档操作
- 选择嵌入模型(用于将文本转换为向量嵌入)。查阅 FAQ 了解如何选择合适嵌入模型
- 添加 默认数据加载器 节点以分割内容。可使用默认设置或自定义分块策略:
- 字符文本分割器: 按字符长度分割
- 递归字符文本分割器: 按 Markdown、HTML、代码块或字符递归分割(推荐多数场景)
- 词元文本分割器: 按词元数量分割
- (可选)为每 个文本块添加元数据以增强上下文信息,便于后续筛选
查询数据#
支持两种主要查询方式:通过智能体或直接通过节点查询
使用智能体#
- 在工作流中添加智能体
- 将向量存储添加为工具并填写描述,帮助智能体判断调用时机:
- 设置 limit 参数定义返回文本块数量
- 启用 Include Metadata 为每个文本块提供额外上下文
- 添加数据插入时使用的相同嵌入模型
专业提示
为节省高成本模型的词元消耗,可先使用 向量存储问答工具 检索相关数据,再将结果传递给智能体。实操示例请参考 此模板。
直接使用节点#
- 添加向量存储节点至画布并选择 Get Many 操作
- 输入查询或提示:
- 设置 limit 参数控制返回文本块数量
- 按需启用 Include Metadata
常见问题#
如何选择合适嵌入模型?#
嵌入模型的选择因场景而异:
通常小型模型(如 text-embedding-ada-002)速度更快、成本更低,适合短文本通用文档或轻量级 RAG 工作流。大型模型(如 text-embedding-3-large)具有更优的语义理解能力,适用于长文档、复杂主题或高精度要求的场景。
如何为我的场景选择最佳文本分割方式?#
这主要取决于数据特性:
- 小 文本块(如 200-500 词元)适合细粒度检索
- 大文本块能保留更多上下文,但可能包含冗余信息
设置合适的重叠大小对 AI 理解文本块上下文至关重要。这也是为什么使用 Markdown 或代码块分割通常能优化文本块质量。
另一种有效方法是为文本块添加更多上下文(例如来源文档信息)。如需深入了解,可参阅 Anthropic 的这篇精彩文章。