跳到主要内容

n8n 中的 RAG

什么是 RAG?

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

什么是向量数据库?

向量数据库是一种专门用于存储和检索高维向量的特殊数据库,这些向量是文本、图像或其他数据的数值表示。当你上传一个文档时,向量数据库会将其分割成多个块,并使用嵌入模型将每个块转换为向量。

你可以使用相似度搜索来查询这些向量,这种搜索基于语义含义而非关键词匹配来构建结果。这使得向量数据库成为 RAG 和其他需要检索与推理大量知识的 AI 系统的强大基础。

如何在 n8n 中使用 RAG?

从 RAG 模板开始

👉 使用 RAG 入门模板 快速体验 n8n 中的 RAG。该模板包含两个预构建的工作流:一个用于上传文件,一个用于查询文件。

将数据插入向量数据库

在智能体能够访问自定义知识库之前,你需要先将数据上传到向量数据库:

  1. 添加所需节点以获取源数据。
  2. 插入一个向量数据库节点(例如 Simple Vector Store),并选择插入文档操作。
  3. 选择一个嵌入模型,将文本转换为向量嵌入。有关如何选择合适嵌入模型的更多信息,请参阅常见问题。
  4. 添加一个 Default Data Loader 节点,用于将内容分割成块。你可以使用默认设置,或自定义分块策略:
    • 按字符分割:按字符长度分割。
    • 递归字符分割:按 Markdown、HTML、代码块或普通字符递归分割(适合大多数场景)。
    • 按 Token 分割:按 Token 数量分割。
  5. (可选)为每个块添加元数据,以丰富上下文,方便后续过滤。

查询数据

你可以通过两种主要方式查询数据:使用智能体或直接通过节点。

使用智能体

  1. 在工作流中添加一个智能体。
  2. 将向量数据库作为工具添加,并为其提供描述,帮助智能体理解何时使用它:
    • 设置限制数量,定义返回多少个块。
    • 启用包含元数据,为每个块提供额外上下文。
  3. 添加你插入数据时使用的同一个嵌入模型

专业技巧

为了节省昂贵模型的 Token 消耗,你可以先使用 Vector Store Question Answer Tool 检索相关数据,再将结果传递给智能体。查看此模板以了解实际操作。

直接使用节点

  1. 将向量数据库节点添加到画布,选择获取多个操作。
  2. 输入查询或问题:
    • 设置限制数量以控制返回多少个块。
    • 按需启用包含元数据

常见问题

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

合适的嵌入模型因场景而异。

一般来说,较小的模型(例如 text-embedding-ada-002)速度更快、成本更低,适合用于短文档、通用场景或轻量级 RAG 工作流。较大的模型(例如 text-embedding-3-large)语义理解能力更强,适合处理长文档、复杂主题,或对准确性要求较高的场景。

我的使用场景最适合哪种文本分割方式?

这很大程度上取决于你的数据特点:

  • 小块(例如 200 至 500 个 Token)适合细粒度检索。
  • 大块可能包含更多上下文,但可能变得模糊或嘈杂。

设置合适的块重叠大小对于 AI 理解块的上下文非常重要。这也是为什么使用 Markdown 或代码块分割通常能让分块效果更好。

另一个好方法是为块添加更多上下文(例如,注明该块来自哪个文档)。如果你想进一步了解此话题,可以阅读 Anthropic 的这篇精彩文章