检索增强生成 — 检索质量决定上限的流水线决策
R — 原文 (Reading)
(转述)Lewis 等指出:预训练把知识压进参数,但参数化知识的更新需要重新训练、且难以审计与扩展;他们提出把非参数的可检索语料(Wikipedia 的 dense vector 索引)与序列到序列模型联合——检索器按查询取文档、生成器以"查询+文档"为条件作答,端到端联合训练。
— Patrick Lewis 等, "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks" (NeurIPS 2020)
(转述)后续实践形成共识:RAG 的答案质量由两段共同决定——检索段没找对材料,生成段再强也只能在错误前提上流畅发挥;因此系统评估必须把检索命中(能否召回正确来源)与生成忠实(答案是否忠于被检回的材料)拆开度量,否则无法归因。
— 检索增强系统评估的行业共识(RAG 三元组类指标的通行做法)
I — 方法论骨架 (Interpretation)
什么时候 LLM 直答不够用?三个信号:①知识过时(问的是模型训练截止后的事实)②私有知识(公司制度/产品手册/个人笔记,模型从未见过)③幻觉敏感场景(法律/医疗/客服承诺,错了要担责且要求给出处)。三条中一条就该考虑引入外部知识。
知识注入三路对比(先选路再施工):
- 长上下文: 文档总量小(塞得进窗口)时最简单——全量放进 prompt,无检索环节无检索错误;代价是 token 成本随文档线性增长、大海捞针效应使超长文档中部信息利用率下降;
- RAG: 语料大到塞不下或频繁更新时唯一经济解——按需取相关片段;代价是引入整条检索链路,每个环节都是新的失败点;
- 微调: 适合改变行为风格/格式/技能,不适合注入事实知识——事实会过时且易被幻觉覆盖,拿微调当知识库是常见误用(档位决策见
ml-pretraining-paradigm)。
RAG 流水线的四个关键决策:①切块 (chunking):粒度是第一杠杆——太大则噪声淹没信号,太小则语义断裂;按结构切(标题/段落/表格行)优于盲切固定长度,重叠块可缓解边界截断;②embedding 选型:向量检索的前提是"语义相近→向量相近",选型看目标语言与领域适配度,混合检索(向量+关键词 BM25)互补短板;③top-k 与重排 (rerank):召回宁多勿漏(大 k),再用交叉编码器精排出少而准的上下文——召回管覆盖率、重排管精度;④引用溯源:答案附出处既是合规需求也是幻觉抑制手段(强制生成器"只依据材料作答")。
核心立场:垃圾进垃圾出——生成器只能放大检索的质量,不能弥补它。检索不到正确片段的问题,换更大的模型毫无用处。
A1 — 文献中的经典应用 (Past Application)
(本批主题超出西瓜书覆盖范围,A1 改引学界公认的经典案例与公开记录)
案例 1: RAG 论文的知识密集任务验证
- 问题: 开放域问答等任务依赖大量事实知识,纯参数化模型(当时的大型 seq2seq)在知识密集任务上落后于显式带检索的系统,且知识更新困难。
- 方法论的使用: 把 Wikipedia 构建 dense passage 索引作为非参数记忆,与 BART 类生成器端到端联合训练;对比"仅生成""仅检索读段""RAG"三种配置。
- 结论: 联合检索+生成在开放域 QA 上超越当时的参数化 SOTA(转述);生成器能整合多文档证据并标注来源。
- 结果: RAG 成为"非参数记忆 + 参数化生成"范式的命名性工作;其架构骨架(dense retriever + conditioned generator)沿用至今。
案例 2: REALM 与"预训练即检索"的平行证明
- 问题: 能否让模型在预训练阶段就学会检索,而不是事后拼接?
- 方法论的使用: Guu 等把文本语料的神经检索器嵌入语言建模目标内部,以"检索到的文档帮助预测 masked 词"来同时优化检索器与编码器。
- 结论: 检索能力可以在预训练中学出,开放式问答显著受益(转述)——独立佐证了"显式外部知识优于纯参数记忆"的方向。
- 结果: REALM 与后来的 RAG/RETRO 共同确立"检索是知识注入的一等公民路线";工程界随后把它从训练技术简化为推理时的即插即用组件,才有了今天的通用 RAG 形态。
案例 3: "Lost in the Middle" 对长上下文路线的反制证据
- 问题: 上下文窗口越做越大,"干脆全部塞进 prompt"是否可以取代检索?
- 方法论的使用: Liu 等构造受控实验:把关键事实放在不同深度的超长上下文中,测试模型的抽取准确率随位置的变化。
- 结论: 多数模型呈现中间塌陷——开头与结尾的信息利用好,中部显著变差;单纯堆长上下文并不能保证等价的信息可达性(转述)。
- 结果: 为"长上下文 vs RAG"的选型提供了量化依据:文档规模小时长上下文的简单性占优,但"塞得下"不等于"用得上";超大文档场景 RAG 的按需供给仍有结构性优势。本 skill E 段的三路对比即建立在这类证据上。
A2 — 触发场景 (Future Trigger) ★
用户会在什么情境下需要这个 skill?
- 用户在搭企业知识库问答/客服机器人:LLM 不知道公司内部制度、产品手册内容,胡编或拒答。
- 用户的知识频繁更新(法规/价格/新闻),靠改 prompt 或重训都跟不上,想找可持续的知识供给方案。
- 用户场景不容忍幻觉(法务/医疗/金融合规),要求"答案必须能给出来源"。
- 用户已经搭了 RAG 但效果差:"明明文档里有答案却检索不到"/"检索对了答案还是错"——需要分段归因。
- 用户在三路之间纠结:"文档几十万字,是直接放长上下文、做 RAG、还是微调?"
语言信号 (用户的话里出现这些就应激活)
- "RAG/检索增强/retrieval-augmented"/"知识库问答"/"企业知识库"
- "切块/chunking 怎么切"/"chunk 大小"/"overlap 要不要加"
- "embedding 用哪个"/"向量库选型"/"混合检索/BM25"
- "top-k 设多少"/"要不要重排/rerank"/"召回率低怎么办"
- "引用/溯源/citation/给出来源"/"减少幻觉 hallucination"
- "长上下文还是 RAG"/"该不该微调注入知识"/"模型不知道我们的私有资料"
与相邻 skill 的区分
- 与
ml-prompting-methodology的区别: prompting 是零外部知识档位的施工规范(提示怎么写得好);本 skill 是引入外部知识库的架构决策。"模型不知道 X"这类知识缺口不是措辞问题,先走本 skill 判定要不要建检索;确定留在纯提示档后才轮到那边。 - 与
ml-pretraining-paradigm的区别: 那是四档总决策树(从零训/微调/PEFT/提示),本 skill 是其中"知识注入"维度的深化——三路对比常与那边的档位选择串联:先那边定档,知识缺口部分移交本 skill 施工。反向信号:RAG 也解决不了风格/技能问题 → 回那边升微调档。 - 与
ml-llm-evaluation的区别: 那管 LLM 能力的验收态度量(benchmark/污染/judge);本 skill 管"我这个 RAG 系统哪里不行"的开发态诊断,其中生成段的忠实度评估会借用 judge 类工具但目的不同。 - 与
ml-evaluation-design的区别: 那提供比较检验的统计原则;本 skill 特化出"检索/生成分段指标"(命中率/MRR 忠实度/相关性)的评估对象。
E — 可执行步骤 (Execution)
当 skill 被激活后, agent 应按以下步骤执行:
直答不足判定
- 核对三信号:知识过时?私有知识?幻觉敏感?逐条确认并记录哪条命中。
- 完成标准: 写明"命中信号 X/Y/Z,故需外部知识注入";三条都不命中 → 劝退,留在纯提示档(移交
ml-prompting-methodology)。 - 判停条件: 三信号全不命中 → 流程终止并说明理由;用户坚持上 RAG → 记录分歧后再进步骤 2。
三路选型
- 估语料量级与更新频率:总量塞得进上下文且低频更新 → 长上下文优先(简单即正义);量大或高频更新 → RAG;问题是风格技能而非事实知识 → 微调(移交
ml-pretraining-paradigm),RAG 不解决此类问题。 - 完成标准: 路线选定 + 一句话理由;判停条件: 用户坚持微调注知识 → 显式提示"事实知识会被幻觉覆盖且难更新"的风险声明后再继续。
- 估语料量级与更新频率:总量塞得进上下文且低频更新 → 长上下文优先(简单即正义);量大或高频更新 → RAG;问题是风格技能而非事实知识 → 微调(移交
切块策略
- 按文档结构定切分单位(标题层级/段落/表格行),设合理 overlap;禁止无脑固定 500 字硬切。
- 完成标准: 抽查 20 个块——每块语义自足、无关键句被拦腰斩断。
- 判停条件: 语料无结构可言(纯流式文本/OCR 噪声大)→ 先做清洗与结构化预处理,切块顺延;预处理成本超预算 → 记录风险后用保守大块+overlap 过渡。
检索链配置
- embedding 选型(语言/领域匹配)→ 混合检索开关(关键词+向量)→ 召回 k 取宽(如 20)→ 重排取窄(如 top 3-5 进上下文)。
- 完成标准: 每个环节有默认配置与调整旋钮清单。
- 判停条件: 预算不允许独立重排模型 → 用"召回宽+embedding 好"的简化链起步,并把重排列入迭代路线图。
分段评估基线(先于一切调优)
- 构造评测集:真实用户问题 + 标准答案 + 正确来源文档标注(哪怕手工 50 条);分别测检索命中率与生成忠实度。
- 完成标准: 两段分数各自落盘,成为后续所有改动的对照基线。
- 判停条件: 检索命中率低 → 问题在步骤 3-4,回炉检索链,禁止去调生成 prompt;检索高但答案错 → 问题在生成段(prompt 约束/上下文超载/模型能力),进入步骤 6。
迭代与溯源加固
- 按分段诊断结果单变量改进(切块→召回→重排→生成约束),每改动跑一遍分段评估;上线前启用引用溯源(答案附出处链接,无据可引时明确说"材料未覆盖"而不是编)。
- 完成标准: 迭代记录表(改动/检索分/生成分/结论)+ 溯源机制生效证据。
- 判停条件: 多轮迭代后检索分仍低于可用线且语料质量是根因 → 上报"知识治理问题,非检索工程能解",把来源清洗/时效标记列为前置条件后暂停迭代。
B — 边界 (Boundary) ★
不要在以下情况使用此 skill
- 纯推理/写作/翻译类任务(无需外部事实): 加检索只会引入无关干扰与延迟,这是负优化。
- 知识总量小且稳定: 直接放 system prompt/长上下文即可,RAG 是过度工程。
- 目标是教模型新技能/风格/输出格式: 这是微调的领地(见
ml-pretraining-paradigm),检索注入不了"怎么做事",只能注入"是什么"。 - 结构化数据的精确查询(SQL 能答的问题): 别用向量相似度硬查数据库,Text-to-SQL/BI 工具是对口工具;"模糊语义搜索"与"精确字段查询"是两种问题。
文献与实践反复警告的失败模式
- 检索错误比幻觉更隐蔽: 编造的答案尚可能因离谱被识破,而"一本正经地基于错误材料作答"看起来完全可信;没有分段评估的系统对此完全免疫——你甚至不知道坏在哪一段。
- 只调生成端: 效果差就换更强的模型/改 prompt,实际瓶颈在检索召回——垃圾进垃圾出,生成器放大的是检索的质量而非弥补它。
- 切块拍脑袋: 固定长度硬切把表格、代码、条款腰斩;块太大稀释信噪比、太小丢失指代与上下文——切块是 RAG 第一杠杆也是最常被敷衍的一环。
- 评估混为一谈: 只报端到端准确率,检索与生成的贡献不可分解,每次改动都在盲调。
- 把 RAG 当万能补丁: 材料本身互相矛盾/过期/有错时,RAG 忠实检索出的也是矛盾与错误;知识治理(来源权威性/时效标记/冲突清洗)先于检索工程。
作者盲点 / 时代局限(本批为外推补全)
- 必须声明: 本 skill 主题超出西瓜书(2016)覆盖范围——书中既无 LLM 更无检索增强概念(BOOK_OVERVIEW 批判确认提示范式与大模型语境整体缺席);本 skill 是对该时代局限的外推补全,素材为 2020-2023 交叉学科文献共识转述,方法论仍在快速演化(GraphRAG/Agentic RAG/长上下文成本骤降对三路边界的持续改写),执行时应核对当前格局。
- "检索质量决定上限"的边界也在移动: 超长上下文与推理型模型正在改变"必须精准检索"的前提——三路对比的具体阈值(多大算塞不下)随硬件与定价快速漂移,本 skill 给的是决策框架而非恒久数字。
- 评估指标尚未标准化: 忠实度/相关性/召回的自动度量(含 LLM-as-judge 变体)自身有偏差(详见
ml-llm-evaluation),自动分高不等于用户体验好,最终须有人工抽检校准。 - 西瓜书的 NFL 思想在此依然成立: 不存在对所有语料与问法都最优的切块/检索配置,任何"最佳实践清单"脱离具体语料谈优劣都是空话。
容易混淆的邻近方法论
- RAG ≠ 向量数据库: 向量库只是检索链的一个组件;没有好的切块与重排,最好的向量库也救不了召回质量。
- 语义检索 ≠ 关键词检索: 向量擅长同义改写、弱在专有名词与编号精确匹配;BM25 反之——混合检索是常态而非锦上添花。
- 知识注入 ≠ 能力注入: RAG 补"知道什么",微调改"会做什么";二者不可互替(详见三路对比)。
- 引用存在 ≠ 答案忠实: 模型可能列出真实出处但答案与出处内容不符;溯源机制要配合忠实度抽查才有意义。
相关 skills
- depends-on: ml-methodology-router(总入口), ml-pretraining-paradigm(三路选型的上层档位框架)
- contrasts-with: ml-prompting-methodology(零外部知识档位 vs 外部知识注入架构)
- composes-with: ml-llm-evaluation(生成段 judge 工具与偏差校正), ml-evaluation-design(分段评估的统计原则), ml-experiment-tracking(流水线各组件版本与评估记录)
审计信息
- 来源性质: 扩充批E·交叉学科——主题超出西瓜书(2016)覆盖范围,R 段为公认文献的转述表述(均已标注"(转述)")
- 验证通过: 待流水线三重验证复核
- 测试通过率: 待阶段 4 测试 (详见 test-prompts.json)
- skill_version: 0.0.1
- 蒸馏时间: 2026-08-24