n8n 中的 RAG
n8n 中的 RAG
什么是 RAG?
检索增强生成(RAG)是一种通过将语言模型与外部数据源相结合来提升 AI 回答质量的技术。RAG 系统不只依赖模型的内部训练数据,而是检索相关文档,将回答锚定在最新的、特定领域的或私有知识上。RAG 工作流通常依靠向量数据库来高效地管理和检索这些外部数据。
什么是向量数据库?
向量数据库是一种专门用于存储和检索高维向量的特殊数据库,这些向量是文本、图像或其他数据的数值表示。当你上传一个文档时,向量数据库会将其分割成多个块,并使用嵌入模型将每个块转换为向量。
你可以使用相似度搜索来查询这些向量,这种搜索基于语义含义而非关键词匹配来构建结果。这使得向量数据库成为 RAG 和其他需要检索与推理大量知识的 AI 系统的强大基础。
如何在 n8n 中使用 RAG?
从 RAG 模板开始
👉 使用 RAG 入门模板 快速体验 n8n 中的 RAG。该模板包含两个预构建的工作流:一个用于上传文件,一个用于查询文件。
将数据插入向量数据库
在智能体能够访问自定义知识库之前,你需要先将数据上传到向量数据库:
- 添加所需节点以获取源数据。
- 插入一个向量数据库节点(例如 Simple Vector Store),并选择插入文档操作。
- 选择一个嵌入模型,将文本转换为向量嵌入。有关如何选择合适嵌入模型的更多信息,请参阅常见问题。
- 添加一个 Default Data Loader 节点,用于将内容分割成块。你可以使用默认设置,或自定义分块策略:
- 按字符分割:按字符长度分割。
- 递归字符分割:按 Markdown、HTML、代码块或普通字符递归分割(适合大多数场景)。
- 按 Token 分割:按 Token 数量分割。
- (可选)为每个块添加元数据,以丰富上下文,方便后续过滤。
查询数据
你可以通过两种主要方式查询数据:使用智能体或直接通过节点。
使用智能体
- 在工作流中添加一个智能体。
- 将向量数据库作为工具添加,并为其提供描述,帮助智能体理解何时使用它:
- 设置限制数量,定义返回多少个块。
- 启用包含元数据,为每个块提供额外上下文。
- 添加你插入数据时使用的同一个嵌入模型。
专业技巧
为了节省昂贵模型的 Token 消耗,你可以先使用 Vector Store Question Answer Tool 检索相关数据,再将结果传递给智能体。查看此模板以了解实际操作。
直接使用节点
- 将向量数据库节点添加到画布,选择获取多个操作。
- 输入查询或问题:
- 设置限制数量以控制返回多少个块。
- 按需启用包含元数据。
常见问题
如何选择合适的嵌入模型?
合适的嵌入模型因场景而异。
一般来说,较小的模型(例如 text-embedding-ada-002)速度更快、成本更低,适合用于短文档、通用场景或轻量级 RAG 工作流。较大的模型(例如 text-embedding-3-large)语义理解能力更强,适合处理长文档、复杂主题,或对准确性要求较高的场景。
我的使用场景最适合哪种文本分割方式?
这很大程度上取决于你的数据特点:
- 小块(例如 200 至 500 个 Token)适合细粒度检索。
- 大块可能包含更多上下文,但可能变得模糊或嘈杂。
设置合适的块重叠大小对于 AI 理解块的上下文非常重要。这也是为什么使用 Markdown 或代码块分割通常能让分块效果更好。
另一个好方法是为块添加更多上下文(例如,注明该块来自哪个文档)。如果你想进一步了解此话题,可以阅读 Anthropic 的这篇精彩文章。