跳转至

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. 将向量存储作为工具添加并给它一个描述以帮助代理理解何时使用它:
    • 设置限制来定义返回多少个块。
    • 启用包含元数据为每个块提供额外上下文。
  3. 添加您在插入数据时使用的同一个嵌入模型

专业提示

为了在昂贵的模型上节省令牌,您可以首先使用向量存储问答工具来检索相关数据,然后再将结果传递给代理。要查看实际操作,请查看此模板

直接使用节点#

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

常见问题#

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

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

一般来说,较小的模型(例如 text-embedding-ada-002)更快、更便宜,因此非常适合简短的通用文档或轻量级 RAG 工作流。较大的模型(例如 text-embedding-3-large)提供更好的语义理解。这些最适合长文档、复杂主题或准确性至关重要的情况。

我的用例最佳的文本分割是什么?#

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

  • 小块(例如 200 到 500 个令牌)适合精细检索。
  • 大块可能携带更多上下文,但可能变得稀释或噪杂。

使用正确的重叠大小对于 AI 理解块的上下文很重要。这也是为什么使用 Markdown 或代码块分割通常可以帮助使块更好的原因。

另一个好方法是为它添加更多上下文(例如关于块来自哪个文档的信息)。如果您想阅读更多关于这方面的内容,可以查看 Anthropic 的这篇优秀文章

此页面是否
💬 微信

🚀 与作者交流

关注公众号
n8n实战笔记公众号
n8n实战笔记
📚 教程 💡 案例 🔧 技巧
添加微信
添加作者微信
1对1 专业指导
⚡ 快答 🎯 定制 🚀 支持