RAG

别名:检索增强生成 / Retrieval-Augmented Generation

先从外部知识库检索相关片段,再把片段放进上下文,让模型基于证据回答。

更新于 2026/11/08
LLM检索应用

一句话定义

RAG 是在生成回答之前,先从外部知识库检索相关片段,把这些片段作为上下文交给模型,让回答基于可追溯的资料,而不是只依赖模型参数里的记忆。

典型流程

  1. 切分文档:把长文档切成大小合适的 chunk,并保留标题、来源等元数据。
  2. 建立索引:用嵌入模型把 chunk 转成向量,写入向量数据库或混合检索索引。
  3. 检索:把用户问题也转成向量,召回 top-k 相关片段,必要时再做关键词检索和重排序。
  4. 组装上下文:把片段、来源和问题一起放进 prompt。
  5. 生成回答:模型基于上下文作答,并尽量给出引用。

RAG 的检索与生成流程

关键判断

RAG 的上限往往由检索质量决定,而不是由生成模型单独决定。

常见变体

Naive RAG

固定切分 + 向量检索 + 直接拼接,链路短,适合做 baseline。

Advanced RAG

加入查询改写、混合检索、重排、上下文压缩等步骤,按失败点逐段优化。

Multi-modal RAG

检索文本、图像、表格等多模态片段,再交给多模态模型生成。

Retrieval-based LM

检索器作为模型的一部分,训练时联合/分阶段学习检索与生成;与“后挂 RAG”不同。

RAG 和微调怎么选

  • 知识更新频繁、需要引用来源:优先 RAG。改索引即可更新知识,不必重新训练。
  • 要改变模型的行为、风格或固定任务格式:优先 SFT。
  • 两者可以组合:用 SFT 教会模型如何使用检索结果,用 RAG 提供实时事实。

常见失败模式

  • 检索没召回:问题改写、chunk 粒度、嵌入模型不匹配都可能导致关键资料缺席。
  • 上下文过载:塞入太多片段会稀释重点,甚至让模型忽略真正相关的证据。
  • 切分破坏语义:把一段完整论证切成碎片,检索到的内容看起来相关但无法回答原问题。
  • 索引过期:文档更新后没有重建索引,回答仍基于旧资料。
  • 没有引用约束:模型可能把检索片段和自己的记忆混在一起,难以追溯。

评估看什么

看检索命中率、上下文相关性、答案忠实度和引用准确率;不要只给最终回答打分。

相关概念

  • Transformer:嵌入模型和生成模型通常都基于 Transformer 架构。
  • SFT:让模型学会遵循检索到的上下文,而不是凭记忆补全。