Skip to main content

Documentation Index

Fetch the complete documentation index at: https://nvd-54.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

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

构建知识库

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

教程:语义搜索

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

从检索到 RAG

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

检索管道

典型的检索工作流如下所示: 每个组件都是模块化的:你可以在不重写应用逻辑的情况下替换加载器、分割器、向量嵌入或向量存储。

构建块

文档加载器

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

文本分割器

将大文档分割成更小的块,使其可以被单独检索并适合模型的上下文窗口。

向量嵌入模型

向量嵌入模型将文本转换为数字向量,使含义相似的文本在向量空间中距离相近。

向量存储

用于存储和搜索向量嵌入的专用数据库。

检索器

检索器是一个接收非结构化查询并返回文档的接口。

RAG 架构

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

两步 RAG

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

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

了解如何构建一个可以使用检索增强生成回答基于数据的问题的问答聊天机器人。 本教程介绍两种方法:
  • 使用灵活工具执行搜索的 RAG 智能体——适合通用场景。
  • 每次查询只需一次 LLM 调用的两步 RAG 链——快速高效,适合简单任务。

智能体 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:
    """从 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-6",
    tools=[fetch_url], # 用于检索的工具
    system_prompt=system_prompt,
)

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

了解如何构建一个可以使用检索增强生成回答基于数据的问题的问答聊天机器人。 本教程介绍两种方法:
  • 使用灵活工具执行搜索的 RAG 智能体——适合通用场景。
  • 每次查询只需一次 LLM 调用的两步 RAG 链——快速高效,适合简单任务。

混合 RAG

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

教程:带自我纠正的智能体 RAG

一个混合 RAG 的示例,结合了智能体推理与检索和自我纠正。