AINotes 101
菜单

RAG

检索增强生成

先检索资料,再让模型基于资料作答,用外部知识替代参数记忆。

BUILD #core#engineering

一句话定义

RAG(Retrieval-Augmented Generation,检索增强生成)在模型生成之前,先从外部知识源检索相关内容,把它们放进上下文,再让模型基于这些内容回答。

一句话概括:把「背下来」换成「查一下」。

为什么重要

它一次性回应了语言模型的三个硬伤:

问题 RAG 的解法
知识有截止日期 检索到的资料永远是最新的
无法访问私有数据 把你的文档接进检索源
幻觉 回答有出处,可核查

同时它比微调便宜得多:更新知识只需更新索引,不需要重新训练。

完整链路

  1. 切分:把文档切成语义完整的片段。
  2. 索引:用 embedding 把片段向量化并存储。
  3. 检索:把用户问题向量化,召回最相近的若干片段。
  4. 重排序:用更精细的模型对候选片段重新打分。这一步的收益常被低估。
  5. 组装:把片段按相关性排序后放进上下文。
  6. 生成:要求模型只基于给定资料回答,并标注来源
  7. 兜底:资料不足时明确说「不知道」,而不是硬答。

决定效果的关键

多数 RAG 系统效果差,问题不在生成环节,而在检索环节。

  • 切分质量 > 模型选择:块切得好,弱模型也能答对。
  • 混合检索:向量检索 + 关键词检索(BM25),再融合结果。中文专有名词尤其需要。
  • 重排序:召回 50 条,重排取前 5 条,效果通常显著优于直接取前 5 条。
  • 查询改写:用户的问题往往不是好的检索词。先让模型改写成检索友好的形式。
  • 引用可核查:要求输出标注来源片段,这是发现幻觉的主要手段。

什么时候不该用 RAG

  • 知识量小(几十页以内):直接全部放进上下文更简单可靠。
  • 需要的是技能而非知识:该用工具或 Skills
  • 需要改变模型的风格或格式习惯:该用微调。

常见误解

  • 「上了 RAG 就不幻觉了」:检索到错误内容,模型会自信地复述错误。检索质量决定幻觉下限。
  • 「RAG 已经过时,长上下文取代了它」:长上下文成本高且注意力会稀释。两者是配合关系,不是替代关系。
  • 「把文档全丢进去就行」:无关内容会主动降低准确率。

延伸阅读

继续阅读

与 RAG 同属一个层级,或在本条目中被显式引用。