- 有限的上下文:它们无法一次性处理整个语料库。
- 静态知识:它们的训练数据在某个时间点被固定。
构建知识库
知识库是一个在检索过程中使用的文档或结构化数据的存储库。 如果您需要自定义知识库,您可以使用 LangChain 的文档加载器和向量存储,从您自己的数据构建一个。如果您已经有一个知识库(例如 SQL 数据库、文档数据库、CRM 或内部文档系统),您不需要重新构建它。您可以:
- 将其作为 Agentic RAG 中智能体的工具连接。
- 查询它并将检索到的内容作为上下文提供给 LLM (2-Step RAG)。
教程:语义搜索
了解如何使用 LangChain 的文档加载器、嵌入和向量存储,从您自己的数据创建可搜索的知识库。
在此教程中,您将构建一个 PDF 搜索引擎,使检索与查询相关的段落成为可能。您还将在这个引擎之上实现一个最小 RAG 工作流,以了解外部知识如何集成到 LLM 推理中。
从检索到 RAG
检索允许 LLM 在运行时访问相关的上下文。但大多数实际应用更进一步:它们将检索与生成集成以产生有根据、上下文感知的答案。 这是**检索增强生成(RAG)**的核心思想。检索管道成为结合搜索与生成的更广泛系统的基础。检索管道
典型的检索工作流程如下所示: 每个组件都是模块化的:您可以更换加载器、分割器、嵌入或向量存储,而无需重写应用程序的逻辑。构建模块
文档加载器
从外部来源(Google Drive、Slack、Notion 等)导入数据,返回标准化的 @[
Document] 对象。文本分割器
将大型文档分割成较小的块,这些块可以单独检索,并且适合模型的上下文窗口。
嵌入模型
嵌入模型将文本转换为数字向量,使具有相似含义的文本在该向量空间中彼此靠近。
向量存储
用于存储和搜索嵌入的专用数据库。
检索器
检索器是一个接口,给定非结构化查询即可返回文档。
RAG 架构
RAG 可以根据您系统的需求以多种方式实现。我们在下文中的各节中概述每种类型。延迟:在2-Step RAG中,延迟通常更可预测,因为 LLM 调用的最大数量是已知且受限制的。这种可预测性假设 LLM 推理时间是主要因素。然而,现实世界的延迟也可能受检索步骤的性能影响,例如 API 响应时间、网络延迟或数据库查询,这些可能会根据所使用的工具和基础设施而变化。
两步 RAG
在2-Step RAG中,检索步骤总是在生成步骤之前执行。这种架构简单且可预测,适用于许多应用程序,其中检索相关文档是生成答案的明确先决条件。教程:语义搜索
使用文档加载器、嵌入和向量存储构建可搜索的知识库,然后在它上面运行一个最小的检索后生成 RAG 工作流。
教程:评估 RAG 应用
构建一个简单的检索后生成 RAG 应用,并使用 LangSmith 测量答案的正确性、相关性、可靠性和检索质量。
智能体 RAG
智能体检索增强生成(RAG) 结合了检索增强生成和基于智能体的推理的优势。在回答问题之前检索文档,智能体(由 LLM 驱动)逐步推理并决定在交互过程中何时和如何检索信息。 :::python教程:深度智能体 RAG
构建一个文档问答智能体,它在查询时检索相关片段,将它们卸载到文件系统,并将分析委托给子智能体。
混合 RAG
混合 RAG 结合了 2-步 RAG 和智能体 RAG 的特点。它引入了查询预处理、检索验证和生成后检查等中间步骤。这些系统比固定管道更具灵活性,同时保持对执行的某些控制。 典型组件包括:- 查询增强:修改输入问题以提高检索质量。这可能涉及重写不明确的查询、生成多个变体或使用附加上下文扩展查询。
- 检索验证:评估检索到的文档是否相关和充分。如果不是,系统可能会重新调整查询并再次检索。
- 答案验证:检查生成的答案的准确性、完整性和与源内容的对齐。如有必要,系统可以重新生成或修订答案。
- 查询具有模糊或未明确说明的应用
- 需要验证或质量控制步骤的系统
- 涉及多个来源或迭代细化的工作流
教程:带自我纠正的智能体 RAG
一个混合 RAG 的示例,它结合了智能体推理、检索和自我纠正。
官方原文:src/oss/deepagents/retrieval.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。