别只会说挂知识库:RAG 面试 10 题的落地答题清单
源文微信页触发环境验证码,本文按公开 RAG 面试题库与生产实践,改写成「怎么答 + 落地参数 + 追问红线」清单;与本地叙事向 RAG 深挖文互补,侧重可复述的工程答法。
面试官真正想听的,往往不是「我们用了 LangChain + 向量库」,而是:你为什么这么切、Top-K 怎么定、混合检索怎么并、Rerank 前后差多少、坏 case 怎么闭环。下面 10 题按「一句话结论 → 工程落地表 → 追问红线」组织,方便直接背进项目叙事。
先把答法框架钉死
任何一道 RAG 题,建议统一用三层结构回答:
1. 现象:用户侧看到什么(答偏、漏召回、延迟高)。
2. 定位:离线建库问题还是在线链路问题(切分 / Embedding / 召回 / 精排 / Prompt)。
3. 证据:你用过的指标或参数区间(Recall@K、延迟、chunk size)。

把这三层说清楚,比背「七步流水线」更像做过系统的人。
Q1:为什么还要 RAG?微调不就完了吗?
一句话:RAG 补「可变事实与私有语料」;微调补「风格、格式与稳定技能」——多数业务文档会变,优先 RAG。
| 维度 | RAG | 微调 |
|---|---|---|
| 知识更新 | 改库即可,分钟~小时级 | 重训/增量训,成本高 |
| 可追溯 | 可引用 chunk / 文档 ID | 知识压进权重,难引用 |
| 幻觉 | 靠检索证据约束 | 仍可能编造未见事实 |
| 适合 | 制度、FAQ、产品手册 | 口吻、工具调用习惯、领域术语 |
追问红线:别说「RAG 一定比微调准」。正确答法是:私有知识与时效性 → RAG;任务格式与领域说话方式 → 微调;两者常组合。
Q2:从提问到回答,链路怎么讲才完整?
一句话:离线「解析 → 切分 → Embedding → 入库」;在线「改写 → 召回 → 融合 → Rerank → 组 Prompt → 生成 → 评测」。
面试里不要只念步骤名,每个节点带一个决策点:
| 节点 | 你该顺嘴带出的决策 |
|---|---|
| 解析 | PDF 表格/OCR 是否进管线 |
| Chunk | size / overlap / 父子切分 |
| Embedding | 中英模型、维度、是否领域微调 |
| 召回 | 纯向量还是混合;Top-K |
| Rerank | Cross-Encoder;重排后 Top-N |
| 生成 | 强制「无依据则拒答」 |
追问红线:漏掉 Rerank 或评测闭环,会被当成只跑过 Demo。
Q3:Chunk 切多大?切错了怎么表现?
一句话:检索粒度要「够准」,生成粒度要「够全」——工程上常用小块召回、大块/父块喂模型。
| 策略 | 适用 | 风险 |
|---|---|---|
| 固定长度 | 基线最快 | 切断句子/表格 |
| 递归字符切分 | 生产默认 | 仍可能跨段语义漂移 |
| 语义切分 | 长文质量优先 | 成本高、边界抖动 |
| Parent-Child | 召回准 + 上下文全 | 要维护父子映射 |
落地参数经验区间(需用评测校准,不是银弹):
- 通用中文说明文档:
chunk_size300~800 tokens,overlap10%~15% - 表格/配置密集:偏小切分 + 标题元数据注入
- Parent-Child:叶子 128~256 用于检索,父级 1k~2k 用于生成
追问红线:说不出「切大信息稀释、切小丢上下文」以及 overlap 的用途,基本判为没调过。
Q4:Embedding 怎么选?维度越大越好吗?
一句话:先看语言与领域榜单,再看延迟/显存;维度是精度与成本的折中,不是越大越强。
答法要点:
1. 中文场景优先看中文检索榜(如 C-MTEB 一类),别只盯英文 MTEB。
2. 双塔 Bi-Encoder 负责「快召回」;别指望它单独扛精排。
3. 垂直领域(法务/医疗/内部术语)考虑对比学习微调,难负例比堆正样本更重要。
4. Matryoshka 一类可截断维度:先训高维,线上按 SLA 截到 256/512。
追问红线:答「我们用了 OpenAI Embedding」却说不出评测集与失败 case,等于没选型。
Q5:向量检索原理是什么?HNSW 你调过哪些参数?
一句话:Embedding 把文本投到高维空间,用近似最近邻(ANN)换亚线性查询;HNSW 是多层可导航小世界图。
| 参数 | 含义 | 调参直觉 |
|---|---|---|
M |
每点邻居数 | 大 → 更准更吃内存 |
ef_construction |
建图搜索宽度 | 大 → 索引质量好、建得慢 |
ef_search |
查询搜索宽度 | 大 → 召回升、延迟升 |
相似度优先余弦(看方向);欧氏易受向量模长/文档长度干扰。百万级以上不要吹「暴力扫全库」。
追问红线:只会说「向量库很快」,说不出精度/延迟/内存三角,会被立刻拆穿。
Q6:向量库怎么选:FAISS / Milvus / Qdrant?
一句话:库(嵌入进程)适合原型;数据库(独立服务)适合多副本、过滤与运维。
| 选项 | 你该说的选型理由 |
|---|---|
| FAISS | 单机/原型快,持久化与多租户要自造 |
| Milvus | 大规模、分布式、过滤表达式成熟 |
| Qdrant | 中小规模起步轻、过滤友好、运维面相对小 |
答法模板:「我们 QPS/数据量是 X,需要 metadata filter 和副本,所以选 Y;若只做 PoC 会用 FAISS。」
Q7:为什么必须混合检索?RRF 怎么并?
一句话:纯向量弱在精确串(型号、RFC、工单号);BM25 弱在同义改写——两路召回再用 RRF 融合。
def rrf_merge(rank_lists, k=60):
scores = {}
for results in rank_lists:
for rank, doc_id in enumerate(results):
scores[doc_id] = scores.get(doc_id, 0.0) + 1.0 / (k + rank + 1)
return sorted(scores, key=scores.get, reverse=True)
工程落地表:
| 场景 | 更吃哪一路 |
|---|---|
| 「怎么优化慢查询」 | 向量(语义) |
| 「RFC 7231」「SKU-8821」 | BM25(精确) |
| 口语缩写 vs 文档全称 | 混合 + Query 改写 |
追问红线:只会说「混合更好」,说不出 RRF / 加权融合差异与 k≈60 经验值,深度不够。
Q8:已经混合检索了,为什么还要 Rerank?
一句话:召回是 Bi-Encoder 粗筛;Rerank 是 Cross-Encoder 精排——先 Top-20~50,再压到 Top-3~8 进上下文。

| 对比 | Bi-Encoder 召回 | Cross-Encoder Rerank |
|---|---|---|
| 交互 | 问/文各自编码 | 问+文拼在一起打分 |
| 速度 | 可预计算、可 ANN | 在线逐对、只跑小集合 |
| 作用 | 从百万级捞候选 | 把真正相关的顶上去 |
中文开源常用 bge-reranker-v2-m3 一类;商业 API 也可。面试加分:报一组你项目里的「无 Rerank → 有 Rerank」相对提升(哪怕是小样本人工标注)。
追问红线:把 Rerank 说成「再搜一遍向量库」——概念错。
Q9:幻觉怎么压?Lost in the Middle 怎么防?
一句话:幻觉分「检索没给到」和「给了但模型不用」;前者修召回,后者修 Prompt/压缩/引用约束。
落地手段清单:
1. Prompt 强制:无依据则明确拒答;要求输出引用 chunk id。
2. 上下文压缩:长候选先摘要/抽取,避免中间段落被忽视(Lost in the Middle)。
3. 证据门槛:Rerank 分数低于阈值不入 Prompt。
4. 后校验:答案句子与证据做 NLI/字符级对齐抽检。
追问红线:只说「温度调低」——那是生成技巧,不是 RAG 幻觉治理主路径。
Q10:检索效果差,你的排查清单是什么?
一句话:先分「召不回」还是「召回了但生成差」,再按离线→在线逐项打点。
| 症状 | 优先检查 | 动作 |
|---|---|---|
| 关键词命中差 | 无 BM25 / 分词 | 上混合检索 |
| 同义问法全挂 | Embedding / 改写 | Query 改写、HyDE、多路改写 |
| Top 里有关但排序乱 | 无 Rerank | Cross-Encoder 精排 |
| 答案有料但偏题 | Prompt / 上下文过长 | 压 Top-N、摘要、引用约束 |
| 整体指标虚高 | 评测泄漏 | 重建问答对、按文档时效切分 |
最小评测闭环(面试一定要提):

- 离线:
Recall@K/MRR/nDCG - 生成:忠实度(Faithfulness)、答案相关性
- 工程:P95 延迟、单次 Rerank 候选数上限
坏 case 周会:抽 20 条失败,标注失败层(切分/召回/精排/生成),下周只改一层——这比空谈「继续优化 Prompt」更像工程负责人。
面试收尾:把项目讲成一条故事
收尾时用 30 秒串起来:
我们文档以制度与工单为主,精确串多,所以向量 + BM25 + RRF;召回 Top-40,BGE Rerank 压到 6 段;Prompt 强制引用与拒答;每周用 200 条标注集看 Recall@10 和忠实度,坏 case 按层归因。
能把「参数、指标、归因」三件事说圆,比背 10 个名词更值钱。源题单常见变体还会追问 Agentic RAG(多步检索/工具调用)——答法仍是:先证明单跳 RAG 的评测闭环,再谈何时需要 Agent 多跳,避免一上来堆概念。
小结
- RAG 面试考的是决策与证据,不是框架名。
- 切分、混合召回、Rerank、评测闭环是四块高频加分区。
- 每题准备:一句话结论 + 一张参数/对比表 + 一条追问红线。
- 讲项目时用「症状 → 定位层 → 指标变化」叙事,比背流水线更稳。
💻 配套实训环境与动手练习
本文涉及的相关技术指令、开发环境与工具链已内置在边学边练在线实验室中,无需繁琐安装配置,随时在浏览器中实践体验: