面试题就五问:RAG 是啥、原理、完整链路、各模块干什么、优势与不足。
下面按这个顺序答,最后一句话收口,再用项目把链路走一遍。
一、RAG 是啥
RAG = Retrieval-Augmented Generation,检索增强生成。
裸模型是闭卷考试:只靠参数里的旧知识,公司制度改了它不知道,还可能编。
RAG 是开卷考试:先从知识库找出相关段落,再让模型对着这些材料说话。

面试一句话:模型负责把话说圆,RAG 负责把开卷资料放到桌上。
闲聊、翻译不必上 RAG。要答「我们公司怎么规定」,必须上。
二、RAG 原理
原理就一件事:生成前多一次检索,用外部知识补模型不知道的东西。
用户问 → 把问题变成检索条件 → 从库里取出最相关的几块文本 → 和问题一起塞进提示词 → 模型基于这些证据生成(最好带引用)。
它不让模型变聪明,只解决两件事:知识过时 、闭卷胡编。检索找错了,生成一定错。
面试一句话:先找资料,再对着资料生成。
三、完整链路
完整 RAG 是两条路,不是「提问 → 检索 → 生成」三步就完。
- 离线索引: 文档 → 解析 → 切块 → Embedding → 写入向量库(文档更新再跑)
- 在线问答: 提问 →(改写查询)→ 检索 TopK →(重排)→ 拼提示词 → 生成并引用

面试一句话:离线把文档变成可搜的块,在线先搜再生成。
四、各模块作用
| 阶段 | 模块 | 干什么 | 做错了会怎样 |
|---|---|---|---|
| 离线 | 解析 | PDF/网页变成可切的文本 | 表格、页眉混进正文 |
| 离线 | 切块 | 切成检索单位,块之间留重叠 | 太大噪声高,太小语义碎 |
| 离线 | Embedding | 文本变成向量 | 入库和查询用了不同模型,召回飘 |
| 离线 | 向量库 + 元数据 | 存向量、原文、来源、权限 | 无法引用,或把不该看的搜出来 |
| 在线 | 查询处理 | 口语改成好搜的问法 | 「出差票怎么报」搜不准 |
| 在线 | 检索 | 向量 + 关键词取 TopK | 漏掉条款号、专有名词 |
| 在线 | 重排 | 先宽召回再压到 3~8 条 | 垃圾块塞进提示词 |
| 在线 | 生成 | 只根据资料写答案并带出处 | 资料不够仍瞎编 |
切块没有标准长度。中文制度常见 300~800 字加重叠,标准是:单独拿出来,人看了能懂。
检索为空:改写再搜一次;还空就说不知道,禁止用模型常识顶制度。

面试一句话:切块定召回上限,检索定回答下限,生成只是最后一公里。
五、优势与不足
和微调对比着说:
| RAG | 微调 | |
|---|---|---|
| 知识更新 | 换文档、重建索引 | 重新训练 |
| 可追溯 | 能指到某一节 | 知识融进权重 |
| 适合 | 制度、FAQ、接口文档 | 口吻、格式、推理习惯 |
优势: 更新快、能引用、比给每份文档微调便宜。
不足: 检索错则全错;切块和权限要自己扛;多跳问题一次检索经常不够;仍可能胡编(错块、截断、模型不听「只根据资料」)。
面试一句话:RAG 擅长把新知识塞给模型,不擅长让模型学会一种新能力。
六、总结(面试时这样说,大约 30 秒)
可以先完整说一遍,最后再用那句压住:
RAG 是检索增强生成,先把外部文档变成可检索的知识,再让模型对着检索结果生成,相当于开卷考试。
完整链路分两条:离线把文档解析、切块、向量化写入向量库;在线把用户问题检索出 TopK,必要时重排,拼进提示词再生成,并带上引用。
切块决定召回上限,检索决定回答下限,生成只是组织语言。
比微调强在更新快、能引用;弱在检索错就全错,切块和权限都要自己扛。资料不够就明确说不知道,不能用模型常识顶业务制度。
压轴一句:模型负责把话说圆,RAG 负责把开卷资料放到桌上。
七、结合项目:企业制度问答助手
场景:员工问请假、报销、出差,必须按现行制度答,并给出条款出处。前端对话页,后端 FastAPI,知识库是制度 Markdown/PDF。
为什么用 RAG:制度常改、必须能点到「哪一节」、答错有合规成本,不能闭卷蒙。
用户问「出差报销要哪些票」:

离线按标题切,4.2 差旅机票 单独成块,挂上来源和生效日期。在线改写查询后命中该块:机票要发票和行程单。Prompt 写死只根据资料答,每条带章节。
三条必须写进代码:检索为空禁止编细节、每条答案带引用、制度更新必须重建索引。
面试怎么讲这个项目:RAG 在这里是 Agent 的一个工具,规划到「要查制度」才检索;连续为空就转人工,不拿模型常识顶制度。
八、面试可能追问(短答)
Q:RAG 和微调怎么选?
A:知识常变、要引用、按文档答 → RAG。要改口吻、固定格式、领域推理习惯 → 微调。多数业务先 RAG。
Q:chunk 该多大?
A:没有标准值。从「单独拿出来人能看懂」出发,中文制度常见 300~800 字加重叠。用问答集看召回。
Q:只做向量检索够吗?
A:不够。条款号、专有名词要混合检索(向量 + BM25),再重排。纯向量容易漏「4.2.1」。
Q:检索为空怎么办?
A:改写再检一次;仍空就说资料里没有,转人工。禁止用模型常识顶制度。
Q:上了 RAG 还会胡编吗?
A:会。常见原因是检索到错块、块被截断、模型没遵守「只根据资料」。要用引用、拒答、抽检。
Q:Embedding 和聊天模型必须同一家吗?
A:不必。但入库和查询必须用同一个 Embedding。聊天模型可以换,向量空间不能混。