一句话定义
RAG(Retrieval-Augmented Generation)是在生成前先从外部知识库检索相关内容、把检索结果注入上下文再让模型作答的架构——用"查到的"替代"猜的",专治知识过期与私有数据幻觉。
为什么重要
kp-002 的两个先天缺陷——知识停在训练截止日、不知道私有数据——RAG 一并解决:模型不需要"知道"全部知识,只需要会"查"。它是企业落地最广的 LLM 架构(内部问答、文档助手、合规审查),也是 Agent 的标准器官:Agent 遇到"这个产品 2026 年的新保修政策是什么"时,正确动作是检索知识库(一个工具),而不是靠参数记忆作答。在 Agent 语境下,RAG 常常不是管线,而是"search_knowledge_base" 这个工具。
前置知识
kp-003(上下文注入的位置效应)、向量运算的基本直觉。
核心概念
标准管线(两阶段)
【离线:建索引】
文档 → 切块(chunk) → 嵌入(embedding) → 向量库
【在线:检索生成】
查询 → 嵌入 → 相似度检索 top-k → (重排 rerank)→ 注入上下文 → 生成
五个核心组件的设计要点
- 切块(Chunking):常用 256-1024 token,重叠 10-20% 防止语义被拦腰斩断;按结构切(标题/段落/条款)优于机械定长——检索质量的上限在切块就定了
- 嵌入(Embedding):文本 → 高维向量,语义相近 → 向量夹角小。嵌入模型决定"什么叫相关",选型后全部重嵌(换模型 = 换坐标系)
- 向量检索:近似最近邻(ANN)从百万向量中毫秒级取 top-k;常配元数据过滤(只搜 2026 年的文档、只搜某产品线)——过滤条件来自 Agent 的结构化输出(kp-005)
- 重排(Rerank):用交叉编码器对 top-50 精排出 top-5,检索准确率的性价比之王
- 注入:标注来源 + 放对位置(kp-003 的头尾效应)+ 引用编号让模型回答时能带出处(可信度与可审计性,kp-026)
Agent 中的两种用法
- 作为工具(agentic RAG):Agent 自主决定何时查、查什么、查几轮——查询可以基于前一轮检索结果细化("先查保修政策,发现分地区,再查华东区细则")
- 作为前置:每次请求固定检索注入(传统管线)——便宜可预测,适合 FAQ 型场景
原理与机制
为什么"检索了再答"能压幻觉?因为生成被条件化到了含有真实文档的上下文上:模型的分布从"参数记忆中关于保修政策的所有模糊印象"收缩为"对眼前这几段文本的阅读理解"。注意条件成立的前提——检索命中了正确的文档;检索失败时 RAG 反而更危险:模型会把不相关文档硬扯进答案(被迫营业),或依然靠记忆作答却带上假引用。
一个常被忽视的机制点:嵌入的"语义相似"≠"答案相关"。"退货政策"与"我想退钱"语义相近但表述迥异——这是检索 miss 的主因,解法是查询改写(让 Agent/小模型先把口语问题改写成检索友好表述)与混合检索(向量 + 关键词 BM25,抓专有名词与型号这类"字面匹配"更强的场景)。
直观类比
开卷考试 vs 闭卷考试:闭卷(纯模型)靠背,背过时的、没背过的都只能编;开卷(RAG)先翻书——但翻书能力决定一切:目录编得好(切块)、会翻到正确章节(检索)、翻到后再精读排序(重排)。最怕的是翻错页还硬抄(检索 miss 的被迫营业)。
实例与案例
企业知识库问答的失败与修复(真实常见链路):
| 症状 | 根因 | 修复 |
|---|---|---|
| 问"Q3 营销预算"返回 HR 文档 | 全库无此文档;检索硬凑 | 加"无相关结果"阈值的兜底提示:"知识库未覆盖,建议问财务系统" |
| 型号"XR-500"搜不到 | 嵌入对字母数字弱 | 混合检索(BM25 补位) |
| 答案拼接三份旧政策,互相矛盾 | 未按版本过滤 | 元数据过滤 effective_date <= today,取最新 |
| 回答不注出处 | 注入时没给编号 | 片段带 [1][2] 编号 + 提示要求引用 |
常见误区
- 误区一:"RAG 已死,长上下文直接塞"。全量塞入的成本随库线性增长且迷失中间(kp-003);RAG 是"按需取最相关 0.1%",两者是互补不是替代(当代组合:文件结构给长上下文,细节走检索)。
- 误区二:只调 top-k 不做重排。k 大注水、k 小漏检;rerank 是中间最优解。
- 误区三:忽视切块质量。在烂索引上换十个检索模型都不如在好切块上用一个。
- 误区四:检索结果无脑全量注入。top-20 每段 2K token = 40K 注水——重排后取 3-5 段、按相关度截断。
自测题
- RAG 压幻觉的机制前提是什么?该前提破坏时会发生什么?
- 为什么需要混合检索与重排?
- agentic RAG 与前置 RAG 的取舍?
(参考答案:1. 检索命中正确文档;miss 时模型被迫在不相关文本上编造或带假引用;2. 嵌入对字面/型号弱(BM25 补)、向量粗排召回高但排序糙(rerank 精排);3. Agent 自主多轮检索灵活但贵,前置固定注入便宜可预测。)
与其他知识点的关系
- 记忆的检索端 → kp-015;注入位置 → kp-003
- 查询改写用结构化输出 → kp-005;检索工具的设计 → kp-010
延伸阅读
- Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP(2020,命名出处)
- Anthropic, RAG 常见失败模式 官方指南(citation 与 contextual retrieval 章节)