跳到主要内容

n8n 中的 RAG#

什么是 RAG#

检索增强生成(RAG)是一种通过将语言模型与外部数据源相结合来提升 AI 响应质量的技术。RAG 系统不依赖模型内部训练数据,而是通过检索相关文档,使回答基于最新、领域特定或专有知识。RAG 工作流通常依赖向量存储来高效管理和检索外部数据。

什么是向量存储?#

向量存储是专用于存储和检索高维向量的特殊数据库,这些向量是文本、图像等数据的数值化表示。上传文档时,向量存储会将其分割为文本块,并通过嵌入模型将每个文本块转换为向量。

支持通过相似性搜索查询这些向量,其返回结果基于语义关联而非关键词匹配。这使得向量存储成为 RAG 及其他需要海量知识检索与推理的 AI 系统的核心基础。

如何在 n8n 中使用 RAG#

从 RAG 模板开始

👉 使用 RAG 入门模板立即体验 n8n 的 RAG 功能。该模板包含两个开箱即用的工作流:分别用于文件上传和文件查询。

向向量存储插入数据#

在智能体访问定制知识前,需先将数据上传至向量存储:

  1. 添加获取源数据所需的节点
  2. 插入向量存储节点(例如 简单向量存储)并选择插入文档操作
  3. 选择嵌入模型(用于将文本转换为向量嵌入)。查阅 FAQ 了解如何选择合适嵌入模型
  4. 添加 默认数据加载器 节点以分割内容。可使用默认设置或自定义分块策略:
    • 字符文本分割器: 按字符长度分割
    • 递归字符文本分割器: 按 Markdown、HTML、代码块或字符递归分割(推荐多数场景)
    • 词元文本分割器: 按词元数量分割
  5. (可选)为每个文本块添加元数据以增强上下文信息,便于后续筛选

查询数据#

支持两种主要查询方式:通过智能体或直接通过节点查询

使用智能体#

  1. 在工作流中添加智能体
  2. 将向量存储添加为工具并填写描述,帮助智能体判断调用时机:
    • 设置 limit 参数定义返回文本块数量
    • 启用 Include Metadata 为每个文本块提供额外上下文
  3. 添加数据插入时使用的相同嵌入模型

专业提示

为节省高成本模型的词元消耗,可先使用 向量存储问答工具 检索相关数据,再将结果传递给智能体。实操示例请参考 此模板

直接使用节点#

  1. 添加向量存储节点至画布并选择 Get Many 操作
  2. 输入查询或提示:
    • 设置 limit 参数控制返回文本块数量
    • 按需启用 Include Metadata

常见问题#

如何选择合适嵌入模型?#

嵌入模型的选择因场景而异:

通常小型模型(如 text-embedding-ada-002)速度更快、成本更低,适合短文本通用文档或轻量级 RAG 工作流。大型模型(如 text-embedding-3-large)具有更优的语义理解能力,适用于长文档、复杂主题或高精度要求的场景。

如何为我的场景选择最佳文本分割方式?#

这主要取决于数据特性:

  • 小文本块(如 200-500 词元)适合细粒度检索
  • 大文本块能保留更多上下文,但可能包含冗余信息

设置合适的重叠大小对 AI 理解文本块上下文至关重要。这也是为什么使用 Markdown 或代码块分割通常能优化文本块质量。

另一种有效方法是为文本块添加更多上下文(例如来源文档信息)。如需深入了解,可参阅 Anthropic 的这篇精彩文章