Skip to content

n8n 中的 RAG

什么是 RAG

检索增强生成 (RAG)是一种通过将语言模型与外部数据源相结合来改进 AI 响应的技术。RAG 系统并非仅仅依赖模型的内部训练数据,而是检索相关文档,以将响应与最新的、特定领域或专有的知识相结合。RAG 工作流程通常依赖于向量存储来高效地管理和搜索这些外部数据。

什么是向量存储?

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

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

如何在 n8n 中使用 RAG

从 RAG 模板开始

👉 使用RAG Starter Template在 n8n 中试用 RAG 。该模板包含两个现成的工作流程:一个用于上传文件,一个用于查询文件。

将数据插入到向量存储中

在您的代理可以访问自定义知识之前,您需要将该数据上传到向量存储:

  1. 添加获取源数据所需的节点。
  2. 插入一个向量存储节点(例如简单向量存储)并选择插入文档操作。
  3. 选择一个嵌入模型,将您的文本转换为向量嵌入。有关选择正确嵌入模型的更多信息,请参阅常见问题解答。
  4. 添加默认数据加载器节点,用于将内容拆分成块。您可以使用默认设置,也可以自定义分块策略:
    • 字符文本拆分器:
    • 按字符长度拆分。
    • 递归字符文本拆分器:
    • 按 Markdown、HTML、代码块或简单字符递归拆分(推荐用于大多数用例)。
    • 标记文本拆分器:
    • 按标记数量拆分。
  5. (可选)向每个块添加元数据以丰富上下文并允许以后进行更好的过滤。

查询数据

您可以通过两种主要方式查询数据:使用代理或直接通过节点。

使用代理

  1. 代理添加到您的工作流程中。
  2. 将向量存储添加为工具并添加描述,以帮助代理了解何时使用它:
    • 设置
    • 限制
    • 以定义返回的块数。
    • 启用
    • “包含元数据”
    • 为每个块提供额外的上下文。
  3. 添加插入数据时使用的相同嵌入模型

专业提示

要在开销较大的模型上节省令牌,您可以先使用“向量存储问答”工具检索相关数据,然后再将结果传递给代理。要查看此模板的实际效果,请查看。

直接使用节点

  1. 将您的向量存储节点添加到画布并选择获取多个操作。
  2. 输入查询或提示:
    • 设置
    • 返回区块数量的
    • 限制
    • 如有需要,
    • 启用“包含元数据”

常见问题解答

如何选择正确的嵌入模型?

正确的嵌入模型因情况而异。

一般来说,较小的模型(例如)速度更快、成本更低,因此非常适合处理简短的通用文档或轻量级 RAG 工作流程。较大的模型(例如)能够提供更好的语义理解。它们最适合处理长文档、复杂主题或准确性至关重要的情况。

对于我的用例来说,最好的文本分割是什么?

这又很大程度上取决于您的数据:

  • 小块(例如 200 到 500 个标记)适合细粒度检索。
  • 大块的信息可能承载更多的背景信息,但可能会变得稀薄或嘈杂。

使用正确的重叠大小对于 AI 理解块的上下文至关重要。这也是为什么使用 Markdown 或代码块拆分通常有助于优化块。

另一个好方法是添加更多上下文(例如,关于该块来自哪个文档)。如果你想了解更多,可以看看Anthropic 的这篇精彩文章