大型语言模型(LLM)很强大,但有两个关键限制:
  • 有限上下文:它们无法一次摄入完整语料库。
  • 静态知识:它们的训练数据冻结在某个时间点。
检索通过在查询时获取相关外部知识来解决这些问题。这是 Retrieval-Augmented Generation(RAG) 的基础:使用特定上下文信息增强 LLM 的答案。

构建知识库

知识库是在检索期间使用的文档或结构化数据仓库。 如果你需要自定义知识库,可以使用 LangChain 的 document loaders 和 vector stores 基于自己的数据构建一个。
如果你已经有知识库(例如 SQL 数据库、CRM 或内部文档系统),不需要重新构建它。你可以:
  • 在 Agentic RAG 中将它作为代理的 tool 连接。
  • 查询它,并将检索到的内容作为上下文提供给 LLM (2-Step RAG)
查看下面的教程,构建可搜索知识库和最小 RAG 工作流:

教程:语义搜索

学习如何使用 LangChain 的 document loaders、embeddings 和 vector stores 从自己的数据创建可搜索知识库。 在本教程中,你将基于 PDF 构建搜索引擎,用于检索与查询相关的段落。你还将在该引擎之上实现最小 RAG 工作流,了解如何将外部知识集成到 LLM 推理中。

从检索到 RAG

检索让 LLM 能够在运行时访问相关上下文。但大多数真实应用会更进一步:它们会将检索与生成集成,产生有依据且上下文感知的答案。 这是 Retrieval-Augmented Generation(RAG) 背后的核心思想。检索管线会成为更广泛系统的基础,将搜索与生成结合起来。

检索管线

典型检索工作流如下: 每个组件都是模块化的:你可以替换 loaders、splitters、embeddings 或 vector stores,而无需重写应用逻辑。

构建块

Document loaders

从外部来源(Google Drive、Slack、Notion 等)摄入数据,并返回标准化的 Document 对象。

Embedding models

Embedding model 会将文本转换为数字向量,使语义相近的文本在向量空间中彼此接近。

Vector stores

用于存储和搜索 embeddings 的专用数据库。

Retrievers

Retriever 是一种接口,会根据非结构化查询返回文档。

RAG 架构

RAG 可以根据系统需求用多种方式实现。下面几节概述每种类型。
架构描述控制力灵活性延迟示例用例
2-Step RAG检索总是发生在生成之前。简单且可预测✅ 高❌ 低⚡ 快FAQ、文档机器人
Agentic RAG由 LLM 驱动的代理在推理期间决定何时以及如何检索❌ 低✅ 高⏳ 可变可访问多个工具的研究助手
Hybrid结合两种方法的特征,并加入验证步骤⚖️ 中⚖️ 中⏳ 可变带质量验证的领域特定问答
延迟2-Step RAG 的延迟通常更可预测,因为 LLM 调用的最大次数已知且有上限。这种可预测性假设 LLM 推理时间是主导因素。不过,真实延迟也可能受到检索步骤性能影响,例如 API 响应时间、网络延迟或数据库查询,这些会随着所用工具和基础设施而变化。

2-step RAG

2-Step RAG 中,检索步骤总是在生成步骤之前执行。该架构直接且可预测,适合许多应用,其中检索相关文档是生成答案的明确前提。

教程:Retrieval-Augmented Generation (RAG)

了解如何使用 Retrieval-Augmented Generation 构建一个基于你的数据回答问题的问答聊天机器人。 本教程演示两种方法:
  • 使用灵活工具运行搜索的 RAG agent,非常适合通用用途。
  • 每次查询只需要一次 LLM 调用的 2-step RAG 链,对于简单任务快速高效。

Agentic RAG

Agentic Retrieval-Augmented Generation(RAG) 将 Retrieval-Augmented Generation 的优势与基于代理的推理结合起来。它不是在回答前检索文档,而是由一个(由 LLM 驱动的)代理逐步推理,并在交互期间决定何时以及如何检索信息。
代理要启用 RAG 行为,只需要访问一个或多个可以获取外部知识的 tools,例如文档 loaders、Web API 或数据库查询。
import { tool, createAgent } from "langchain";

const fetchUrl = tool(
    (url: string) => {
        return `Fetched content from ${url}`;
    },
    { name: "fetch_url", description: "Fetch text content from a URL" }
);

const agent = createAgent({
    model: "claude-sonnet-4-0",
    tools: [fetchUrl],
    systemPrompt,
});

教程:Retrieval-Augmented Generation (RAG)

了解如何使用 Retrieval-Augmented Generation 构建一个基于你的数据回答问题的问答聊天机器人。 本教程演示两种方法:
  • 使用灵活工具运行搜索的 RAG agent,非常适合通用用途。
  • 每次查询只需要一次 LLM 调用的 2-step RAG 链,对于简单任务快速高效。

Hybrid RAG

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

教程:带自我纠正的 Agentic RAG

一个 Hybrid RAG 示例,结合了 agentic reasoning、检索和自我纠正。