跳到主要内容
大型语言模型(LLM)功能强大,但它们有两个主要限制
  • 有限的上下文 — 它们无法一次性摄取整个语料库。
  • 静态知识 — 它们的训练数据在某个时间点是冻结的。
检索通过在查询时获取相关的外部知识来解决这些问题。这是检索增强生成(RAG)的基础:用特定于上下文的信息增强 LLM 的答案。

构建知识库

知识库是在检索过程中使用的文档或结构化数据的存储库。 如果您需要一个自定义知识库,您可以使用 LangChain 的文档加载器和向量存储来根据您自己的数据构建一个。
如果您已经有一个知识库(例如,SQL 数据库、CRM 或内部文档系统),您不需要重新构建它。您可以
  • 将其作为工具连接到代理式 RAG 中的代理。
  • 查询它并将其检索到的内容作为上下文提供给 LLM (两步 RAG)
请参阅以下教程以构建可搜索的知识库和最小的 RAG 工作流:

教程:语义搜索

了解如何使用 LangChain 的文档加载器、嵌入和向量存储从您自己的数据创建可搜索的知识库。在本教程中,您将构建一个基于 PDF 的搜索引擎,从而能够检索与查询相关的段落。您还将在此引擎之上实现一个最小的 RAG 工作流,以了解如何将外部知识集成到 LLM 推理中。

从检索到 RAG

检索允许 LLM 在运行时访问相关上下文。但大多数实际应用更进一步:它们将检索与生成相结合,以产生有根据的、上下文感知的答案。 这是检索增强生成(RAG)背后的核心思想。检索管道成为结合搜索和生成的更广泛系统的基础。

检索管道

典型的检索工作流如下所示 每个组件都是模块化的:您可以交换加载器、拆分器、嵌入或向量存储,而无需重写应用程序的逻辑。

构建模块

RAG 架构

RAG 可以通过多种方式实现,具体取决于您的系统需求。我们将在以下部分概述每种类型。
架构描述控制灵活性延迟示例用例
两步 RAG检索总是在生成之前发生。简单且可预测✅ 高❌ 低⚡ 快常见问题解答、文档机器人
代理式 RAG一个由 LLM 驱动的代理决定在推理过程中何时以及如何检索❌ 低✅ 高⏳ 可变可访问多种工具的研究助手
混合结合了两种方法的特点,并带有验证步骤⚖️ 中⚖️ 中⏳ 可变带有质量验证的领域特定问答
延迟:在两步 RAG 中,延迟通常更具可预测性,因为 LLM 调用的最大数量是已知且受限的。这种可预测性假设 LLM 推理时间是主要因素。然而,实际延迟也可能受到检索步骤性能的影响——例如 API 响应时间、网络延迟或数据库查询——这些可能因所使用的工具和基础设施而异。

两步 RAG

两步 RAG 中,检索步骤总是在生成步骤之前执行。这种架构简单且可预测,使其适用于许多应用程序,其中相关文档的检索是生成答案的明确先决条件。

教程:检索增强生成(RAG)

了解如何构建一个问答聊天机器人,该机器人可以使用检索增强生成来回答基于您数据的问题。本教程介绍了两种方法
  • 一个RAG 代理,它使用灵活的工具运行搜索——非常适合通用用途。
  • 一个两步 RAG 链,每个查询只需一次 LLM 调用——对于简单任务来说快速高效。

代理式 RAG

代理式检索增强生成(RAG)结合了检索增强生成和基于代理的推理的优点。代理(由 LLM 驱动)不先检索文档再回答,而是逐步推理并决定在交互过程中何时以及如何检索信息。
代理实现 RAG 行为唯一需要的是访问一个或多个可以获取外部知识的工具——例如文档加载器、Web API 或数据库查询。
import requests
from langchain.tools import tool
from langchain.chat_models import init_chat_model
from langchain.agents import create_agent


@tool
def fetch_url(url: str) -> str:
    """Fetch text content from a URL"""
    response = requests.get(url, timeout=10.0)
    response.raise_for_status()
    return response.text

system_prompt = """\
Use fetch_url when you need to fetch information from a web-page; quote relevant snippets.
"""

agent = create_agent(
    model="claude-sonnet-4-5-20250929",
    tools=[fetch_url], # A tool for retrieval
    system_prompt=system_prompt,
)

教程:检索增强生成(RAG)

了解如何构建一个问答聊天机器人,该机器人可以使用检索增强生成来回答基于您数据的问题。本教程介绍了两种方法
  • 一个RAG 代理,它使用灵活的工具运行搜索——非常适合通用用途。
  • 一个两步 RAG 链,每个查询只需一次 LLM 调用——对于简单任务来说快速高效。

混合 RAG

混合 RAG 结合了两步 RAG 和代理式 RAG 的特点。它引入了中间步骤,例如查询预处理、检索验证和后生成检查。这些系统比固定管道提供更大的灵活性,同时保持对执行的某些控制。 典型组件包括:
  • 查询增强:修改输入问题以提高检索质量。这可能涉及重写不清晰的查询、生成多个变体或用额外上下文扩展查询。
  • 检索验证:评估检索到的文档是否相关且充分。如果不是,系统可以优化查询并重新检索。
  • 答案验证:检查生成的答案的准确性、完整性以及与源内容的对齐。如果需要,系统可以重新生成或修订答案。
该架构通常支持这些步骤之间的多次迭代 此架构适用于
  • 查询模糊或不明确的应用程序
  • 需要验证或质量控制步骤的系统
  • 涉及多个来源或迭代优化的工作流

教程:带自校正的代理式 RAG

一个结合了代理式推理与检索和自校正的混合 RAG 示例。

以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.