MD 更新:2026/5/13

RAG(检索增强生成)

一句话定义:让 LLM 在回答问题前,先去外部知识库里查找相关资料,再基于查到的内容生成答案——就像允许考生带着参考书考试。

为什么需要它?

LLM 的知识被冻结在训练截止日期里。你问它”今天的股价”或”公司内部的报销流程”,它要么一无所知,要么编造一个听起来合理的答案(幻觉)。

更根本的问题:把所有知识都烧进模型参数里,代价极高——每次知识更新都要重新训练;而且模型记住的是”压缩后的统计规律”,不是可溯源、可审计的原始事实。

核心直觉

想象一个律师备考过程和出庭应答的区别:

Fine-tuning 像是把所有案例背进大脑,上庭时凭记忆答。问题是记错了无从发现,且记忆无法实时更新。

RAG 像是上庭时带着案例库,先在库里搜索相关判例,再基于检索到的真实文本给出论点。答案可溯源,知识库随时可更新,无需重新”培训律师”。

它是怎么工作的?

核心流程分两阶段:离线索引 + 在线检索生成

流程图

flowchart TD
    subgraph 离线阶段["📦 离线索引(一次性)"]
        D[原始文档] --> C[文本切块 Chunking]
        C --> E[Embedding 模型]
        E --> V[(向量数据库)]
    end

    subgraph 在线阶段["⚡ 在线检索生成(每次查询)"]
        Q[用户问题] --> QE[Embedding 模型]
        QE --> S{相似度检索}
        V --> S
        S --> TOP[Top-K 相关片段]
        TOP --> P[拼装 Prompt]
        Q --> P
        P --> LLM[LLM 生成]
        LLM --> A[最终答案]
    end

    style 离线阶段 fill:#f0f4ff,stroke:#4a6cf7
    style 在线阶段 fill:#f0fff4,stroke:#2ecc71

关键步骤解析:

① 切块(Chunking):文档不能整个塞给检索器,需要切成合适大小的片段(通常 256~512 tokens)。切得太小,上下文丢失;切得太大,噪音多、检索精度低。

② 向量化(Embedding):用 Embedding 模型将文本转换为高维向量。语义相近的文本,向量在空间中距离也近。这是语义检索(而非关键词匹配)的基础。

③ 相似度检索:用户问题同样向量化,在向量数据库中找最近的 K 个片段。常用算法:余弦相似度、HNSW 近似最近邻。

④ 增强生成:将检索到的片段拼入 Prompt,通常格式如下:

基于以下参考资料回答问题:
[检索到的内容]

问题:{用户问题}
请仅基于上述资料作答,如无相关信息请说明。

关键组件 / 核心要素

组件作用常见选型
文档切块器将原始文档分割为可检索的片段LangChain TextSplitter、自定义按段落切
Embedding 模型将文本映射为语义向量text-embedding-3-small、BGE、E5
向量数据库存储向量,支持高效相似度检索Pinecone、Chroma、pgvector、Weaviate
检索器执行查询,返回 Top-K 结果稠密检索、稀疏检索(BM25)、混合
LLM基于检索内容生成最终答案GPT-4、Claude、Llama
Reranker(可选)对检索结果二次排序,提升精度Cohere Rerank、BGE Reranker

与相关概念的关系

  • vs Fine-tuning:Fine-tuning 改变模型参数(内化知识),RAG 不改变参数(外挂知识)。知识频繁更新、需要溯源时选 RAG;需要模型掌握特定风格或推理方式时选 Fine-tuning。两者可以结合。
  • vs 长上下文(Long Context):直接把所有文档塞进上下文也能实现类似效果,但代价是推理成本随文档量线性增长,且模型对超长上下文中间部分的关注度下降(“lost in the middle”问题)。RAG 通过检索只取相关片段,更高效。
  • 依赖于 向量数据库:语义检索的核心基础设施。
  • 依赖于 Embedding 模型:Embedding 质量直接决定检索精度上限。
  • AI Agent 使用:Agent 中的记忆模块通常基于 RAG 实现。

典型应用场景

  1. 企业内部知识问答 — 公司文档、报销政策、技术规范频繁更新,用 RAG 可以随时同步知识库而无需重训模型,且每个答案可追溯到原始文档。
  2. 客服机器人 — 产品手册、FAQ、退换货政策等结构化知识,RAG 能保证答案准确且来源可审计,避免 LLM 幻觉导致的客诉风险。
  3. 学术/法律文献分析 — 在海量论文或判例中检索相关内容,辅助研究员或律师快速定位证据,LLM 负责综合分析而非凭空生成。

常见误解与陷阱

  • ❌ 误以为:RAG 可以解决所有幻觉问题 ✅ 实际上:RAG 只能减少”知识缺失”导致的幻觉。如果检索到的内容本身有误,或 Prompt 设计不当导致 LLM 忽视检索结果,幻觉依然会发生。

  • ❌ 误以为:切块越细,检索越准 ✅ 实际上:过细的切块会丢失上下文,导致检索到的片段语义不完整。需要根据文档类型调整切块策略(如代码按函数切,文章按段落切)。

  • ❌ 误以为:向量相似度 = 语义相关性 ✅ 实际上:向量检索基于 Embedding 空间的距离,对”反义”处理较差(“不支持 X 功能”可能和”支持 X 功能”距离很近)。关键场景需结合关键词检索(混合检索)。

延伸阅读

  • 想深入理解原理 → 研究 FAISS 索引结构、HNSW 算法、Dense Passage Retrieval (DPR) 原论文
  • 想看工程实践 → LangChain / LlamaIndex 的 RAG 实现、RAGAs 评估框架
  • 想了解前沿进展 → GraphRAG(微软)、Self-RAG、Corrective RAG(CRAG)

关联概念

前置知识Embedding 向量 | Transformer | 向量数据库 同族概念Fine-tuning | Prompt Engineering | 长上下文模型 应用场景AI Agent | 企业知识管理 | 智能客服

学习路径