这篇学完你能回答什么
- 「完整讲一遍 RAG 链路,每一步在解决什么问题?」——一面几乎必问的开场题。
- 「模型都支持百万上下文了,为什么还要 RAG?」
- 「一个 RAG 系统效果差,你怎么定位是哪一环的锅?」
从一个真实场景讲起
老板扔给你一个需求:「把公司这三年的产品文档、售后工单、内部规范做成一个能问答的机器人。」
你的第一反应可能是:把文档全塞进 prompt 里?三年文档几千万字,塞不下,也塞不起——就算模型支持百万 token,每问一句话都过一遍全量文档,成本和延迟都会失控。
第二反应:微调一个模型把知识「学进去」?但文档下周就会更新,总不能每周训一次;而且模型学完也说不清「这句话是从哪份文件来的」,出了错没法追溯。
RAG(Retrieval-Augmented Generation,检索增强生成)就是第三条路,思路朴素得像开卷考试:别让模型背书,让它查书。 用户提问时,先从知识库里捞出最相关的几段,连同问题一起交给模型,让它照着材料回答。
老板扔来的需求
三年产品文档、售后工单、内部规范
第一反应 · 全塞进 prompt
三年文档几千万字,塞不下也塞不起
就算塞得下断点
每问一句都过一遍全量,成本和延迟失控
换第三条路 · RAG
先捞出最相关的几段,连问题一起交给模型
核心概念:一句话定义
RAG = 检索(Retrieval)+ 增强(Augmented)+ 生成(Generation)。用一次外部检索,把「模型不知道的知识」临时装进上下文,再让模型基于这些材料作答。
它解决三个模型的先天缺陷:不知道你的私有数据、知识有截止日期、胡说八道无从追溯。
张口就来,不用翻材料
教材下周改版就得重背;也说不清哪一页学的
Fine-tuning
文档下周就会更新,总不能每周训一次;出了错也说不清这句是从哪份文件来的
先翻到相关那几页,照着材料答
材料翻对了,人照样可能抄串行
Retrieval-Augmented Generation
用一次外部检索,把「模型不知道的知识」临时装进上下文,再让它基于这些材料作答
原理拆解:完整链路
| 环节 | 做砸了的症状 |
|---|---|
| ① 解析 | 表格变乱码、扫描件抽不出字 |
| ② 分块 | 答案被切成两半,永远召不回 |
| ③ 向量化 | 领域词理解不了,相似度失真 |
| ④ 索引 | 数据一涨延迟飙升 |
| ⑤ 查询理解 | 口语化问法搜不到 |
| ⑥ 召回 | 正确答案根本没进候选 |
| ⑦ 重排 | 答案在第 18 位,被截断丢掉 |
| ⑧ 组装 | 塞太多反而变笨(context rot,见 T1-3) |
| ⑨ 生成 | 有材料也胡说、引用对不上 |
| ⑩ 评测 | 全靠拍脑袋调参 |
最忌讳只说「切块、向量化、检索、生成」四个词。要讲成两条线:离线建索引只做一次、文档更新时增量做;在线查询每次提问都走一遍。分不分得开这两条线,直接决定面试官把你归到「建过系统」还是「调过 API」。
效果不好怎么定位?标准动作是先切开检索和生成 —— 把正确文档手工塞进 prompt,模型能答对就是检索的锅,还是答错就是生成 / prompt 的锅。这一刀下去,问题范围立刻缩小一半(详见 T2-8)。
面试让你「讲一遍 RAG」,最忌讳只说「切块、向量化、检索、生成」四个词。要讲成两条线——离线建索引和在线查询:
【离线·建索引】只做一次,文档更新时增量做
原始文档(PDF/Word/网页/工单)
↓ ① 解析:抽文字、表格、标题层级 → T2-2
↓ ② 分块 Chunking:切成可检索的语义单元 → T2-2
↓ ③ 向量化 Embedding:每块变成一个向量 → T2-3
↓ ④ 入库建索引:向量库 + 原文 + 元数据 → T2-4
▼
知识库(向量索引 + 倒排索引)
【在线·查询】每次提问都走一遍
用户问题
↓ ⑤ 查询理解:改写、扩展、路由 → T2-7
↓ ⑥ 检索召回:向量 + BM25 双路 → T2-5
↓ ⑦ 融合与重排 Rerank:从"召得全"到"排得准" → T2-5 / T2-6
↓ ⑧ 上下文组装:拼 prompt、控预算、带出处
↓ ⑨ 生成:LLM 基于材料作答 + 引用溯源
▼
答案(附引用)
↓ ⑩ 评测与迭代:badcase 回归集 → T2-8每一步在解决什么问题(面试答题时按这个节奏走,比罗列名词专业得多):
| 步骤 | 要解决的问题 | 做砸了的症状 |
|---|---|---|
| ① 解析 | 把非结构化文件变成干净文本 | 表格变乱码、扫描件抽不出字 |
| ② 分块 | 让每块语义完整又粒度合适 | 答案被切成两半,永远召不回 |
| ③ 向量化 | 让语义可计算 | 领域词理解不了,相似度失真 |
| ④ 索引 | 让千万级检索在毫秒内完成 | 数据一涨延迟飙升 |
| ⑤ 查询理解 | 用户提问和文档表述对不上 | 口语化问法搜不到 |
| ⑥ 召回 | 尽可能不漏(recall) | 正确答案根本没进候选 |
| ⑦ 重排 | 把最相关的顶到前面(precision) | 答案在第 18 位,被截断丢掉 |
| ⑧ 组装 | 在有限预算里给模型最优材料 | 塞太多反而变笨(context rot,见 T1-3) |
| ⑨ 生成 | 忠实于材料、不编造 | 有材料也胡说、引用对不上 |
| ⑩ 评测 | 知道哪一环拖后腿 | 全靠拍脑袋调参 |
这张表本身就是排障框架:面试官问「效果不好怎么定位」,标准动作是先切开检索和生成——把正确文档手工塞进 prompt,模型能答对,就是检索的锅;还是答错,就是生成/prompt 的锅。这一刀切下去,问题范围立刻缩小一半(详见 T2-8)。
工程实践(截至 2026-08)
RAG 的四代形态,这是 2026 年面试的必备坐标系:
| 形态 | 特征 | 适用 |
|---|---|---|
| Naive RAG | 检索一次 → 生成,固定管线 | 小型 FAQ、原型验证 |
| Advanced RAG | 加语义分块、混合检索、Rerank、查询改写 | 当前生产主流基线 |
| Agentic RAG | 由 Agent 决定检不检、检哪、够不够、要不要再检一轮 | 多跳推理、复杂问答(T2-9) |
| GraphRAG | 抽实体关系建图,支持跨文档推理与全局洞察 | 实体密集、关系复杂的领域(T2-9) |
一句话记住选型直觉:Advanced RAG 做基座,Agentic 作调度层,GraphRAG 按需加挂——具体决策树见 T2-10。
几个新手常踩的认知坑:
- RAG 不等于向量检索。 向量检索只是召回手段之一;BM25、SQL、图查询、Web 搜索都可以是 RAG 的检索源。把 RAG 等同于「向量数据库」是典型的半吊子回答。
- RAG 不是消灭幻觉,是给幻觉套缰绳。 材料给对了模型照样可能编,所以要有引用溯源和忠实度评测(T2-8)。
- 60% 的 RAG 项目死在从 demo 到生产的路上,死因高度集中在检索层设计和评测缺位,而不是模型不够强。
| 形态 | 特征 | 适用 |
|---|---|---|
| Naive RAG | 检索一次 → 生成,固定管线 | 小型 FAQ、原型验证 |
| Advanced RAG | 加语义分块、混合检索、Rerank、查询改写 | 当前生产主流基线 |
| Agentic RAG | 由 Agent 决定检不检、检哪、够不够、要不要再检一轮 | 多跳推理、复杂问答(T2-9) |
| GraphRAG | 抽实体关系建图,支持跨文档推理与全局洞察 | 实体密集、关系复杂的领域(T2-9) |
- 选型直觉
- Advanced RAG 做基座,Agentic 作调度层,GraphRAG 按需加挂 —— 决策树见 T2-10
- 坑一
- RAG 不等于向量检索:BM25、SQL、图查询、Web 搜索都能当检索源;等同于「向量数据库」是半吊子回答
- 坑二
- 不是消灭幻觉,是给幻觉套缰绳 —— 材料给对了模型照样编,所以要有引用溯源与忠实度评测(T2-8)
- 坑三
- 60% 的 RAG 项目死在从 demo 到生产的路上,死因集中在检索层设计和评测缺位,不是模型不够强
- 「RAG 已死」
- 答互补不是替代,理由四条:成本与延迟、长输入失焦 context rot、GB~TB 规模、权限时效过滤与溯源
「RAG 已死」之争:怎么答才不掉坑
每隔半年就有人喊一次「长上下文杀死 RAG」。面试官抛这个问题,考的不是立场,是你的工程判断力。标准答案是:互补,不是替代。 理由分四条:
- 成本与延迟:每次都灌百万 token,费用和首字延迟都是数量级差距;RAG 只送最相关的几千 token。
- 效果:输入越长模型越容易失焦(context rot),有实验显示模型在超过某个长度后准确率会「塌方」式下跌,不是线性变差。喂得多 ≠ 答得准。
- 规模:企业知识库动辄 GB 到 TB 级,任何上下文窗口都装不下。
- 可控性:RAG 能做权限过滤、时效过滤、引用溯源——这些是 toB 场景的硬需求,长上下文给不了。
加分收尾:长上下文真正改变的不是「要不要 RAG」,而是 RAG 的参数——窗口变大后可以放宽 chunk 粒度、多送几个候选、少做激进压缩。它让 RAG 更好用,而不是让它消失。
面试视角
- 先分两条线离线建索引 / 在线查询,分开讲
- 每步带一句这一环在解决什么问题
- 主动点归因检索和生成要分开定位
- 用四代形态收尾说清自己的项目落在哪一层
- 只说「切块、向量化、检索、生成」—— 名词罗列,看不出建过系统
- 把 RAG 说成向量数据库 —— 忘了 BM25、SQL、图查询也是检索源
- 「上了 RAG 就没有幻觉了」—— 材料给对了模型照样编
- 「长上下文迟早取代 RAG」—— 只有立场,成本、规模、可控性一条不提
- 问「效果差怎么办」,答「换个更强的模型」—— 没有拆环节的动作
- 离线 / 在线两条线分开讲,每步跟一句「解决什么问题」
- 主动说检索源不止向量:BM25、SQL、图查询、Web 搜索都算
- 提引用溯源与忠实度评测(T2-8)—— 知道幻觉只是被套上缰绳
- 答「互补不是替代」,再补一句:变的是 RAG 的参数不是存废
- 第一动作是把正确文档手工塞进 prompt,先切开检索和生成
Q2-01、Q2-02、Q2-17。小结与延伸
一句话总结:RAG 是给模型开卷考试——离线把书整理好、建好索引,在线快速翻到相关那几页递给它。链路上每一环都可能是效果瓶颈,所以真正的 RAG 能力不在于会搭,而在于出问题时知道该拆哪一环。
下一篇 T2-2 从链路第一环开始:文档怎么解析、怎么切块。
继续深入
本篇归属第 2 章「RAG 工程化」,去做这一章的题。