Skip to content

RAG 检索优化专项面试题

目录

1. 使用说明

  • 对应知识主题RAG 检索优化距离、排序和向量数据库篇
  • 角色:资深面试官从词法与语义互补追问到灰度检索服务,高级技术应聘者负责给出公式、候选漏斗、权限和诊断边界;
  • 回答顺序:先用 1~3 句专业短答,再用生活化解释;必须区分 BM25、Dense、RRF、Cross-Encoder 和 MMR 的职责;

事实红线| 异构检索分数未经校准不能直接相加,Reranker 只能重排已召回候选,参数与质量结论都要用目标评测集验证;

  • 题目数量:7 题,严格覆盖 L1~L7。

阅读图例| L1~L2 概念与边界 · L3~L4 原理与实现 · L5 工程 · L6 架构 · L7 项目复盘

答案层级| 必答结论 · 小白解释 · 加分项 · 高频误区 · 下一问

2. 递进路线

图:RAG 检索优化 L1~L7 递进路线

替代文本: L1 混合检索目标 → L2 组件职责边界 → L3 BM25/RRF/MMR 原理 → L4 候选漏斗实现 → L5 检索退化排障 → L6 可灰度架构 → L7 示例文档助手复盘。

图表加载中…

读图结论: 蓝色阶段建立概念与边界,紫色阶段进入原理与实现,橙色和青色阶段验证工程与架构能力,绿色阶段用项目证据完成复盘。

题链从“为什么需要 sparse + dense”开始,逐步进入融合与精排,再检查能否保存每层候选、定位质量退化,并在硬权限和版本约束下设计可回滚检索系统。

图:RAG 检索失败的分层诊断决策树

替代文本: 先固定问题、权限、版本和必要证据 ID;若没有任何可见候选则定位无召回,有候选但必要证据未进入任一路则定位错召回,证据进入后掉出可选 Top-N 则定位排序错,排序正确但未进入 final_context 则定位上下文丢失;若上下文正确,就停止盲调检索。

图表加载中…

读图结论: 检索排障的关键不是继续改 Top-k,而是找到必要证据首次消失的那一层;候选快照与稳定证据 ID 把无召回、错召回、排序错和上下文丢失分成可独立验证的问题。

图中每个叶子节点对应不同的止损与回归范围:无召回先查数据与索引,错召回重放查询与硬约束,排序错只回退融合或重排版本,上下文丢失则查最终选片策略。必要证据已进入 final_context 后,应转交生成层,不再用检索参数掩盖忠实度问题。

3. 一问一答

第 1 题|L1 概念|RAG 如何平衡召回率与精确率,为什么要分召回和重排两阶段?

核心考察点|Recall、Precision、候选噪声与两阶段计算边界

面试官提问

请结合候选规模、计算成本和最终上下文说明 Recall 与 Precision 如何权衡,为什么不能只把 Top-k 调大或直接对全库精排。

30 秒专业短答

我会把目标拆成候选 Recall、前排 Precision 和最终答案质量:Sparse/Dense 用较大的 k_recall 快速保覆盖,融合去重后只把有限 k_rerank 候选送给 Cross-Encoder,最后按 k_context 或 Token 预算选证据。K 过小会漏召回,过大会增加重复、冲突、尾延迟和窗口挤压;Reranker 只能改善已有候选顺序,不能补回漏掉的证据,所以 K 必须在固定集上联合 Recall、排序、答案、P99 和成本实测。

小白解释

先让多名图书管理员从大仓库快速挑出一车可能相关的书,再请专家细看这车书并重新排序;专家再认真,也不能评价根本没被推到面前的那本书。

  • 合格线| 区分 k_recallk_rerankk_context,说明召回覆盖、前排精度、窗口噪声和 Reranker 候选边界;
  • 加分项| 给出 K 扫描实验,联合 Recall@k、MRR/nDCG、答案正确性、P95/P99、Token 与成本;
  • 高频误区| 用“增大 Top-k”同时解决漏召回和回答跑偏,或声称 Reranker 能补回未召回文档;
  • 下一问| 两阶段明确后,继续区分每个检索与融合组件具体解决什么问题。

第 2 题|L2 边界|关键词检索和语义检索有什么区别,如何与融合、重排协作?

核心考察点|词法、语义、融合、精排和多样性边界

面试官提问

请从匹配信号、擅长查询、失败模式、工程成本和验证数据五个维度比较 BM25 与 Dense,再说明 RRF、Cross-Encoder 和 MMR 的位置。

30 秒专业短答

BM25 根据分词、词频、IDF 和字段权重匹配,适合错误码、字段名、版本号和精确短语,但对词面不重合的同义问法较弱;Dense 把 Query 与文档编码到向量空间,适合语义改写,但依赖领域 Embedding,可能把“意思接近但事实不相关”的内容排高。两路通常互补:RRF 融合不可直接比较的排名,Cross-Encoder 对有限候选联合精排,MMR 再按需要控制重复;是否采用混合链路必须在相同查询分桶上比较 Recall、排序、延迟和成本。

小白解释

BM25 像按书名和编号找书,Dense 像按“内容意思相近”找书;RRF 汇总不同管理员的名次,专家再精排,最后 MMR 避免桌上全是同一本书的复印页。

  • 合格线| 能从五个维度比较 Sparse/Dense,并准确说明融合、精排与多样性的职责;
  • 加分项|ERR_CONN_RESET 与“连接总被远端断开”举例,并说明 Analyzer、Embedding 版本、相似度分布和分桶 Recall 证据;
  • 高频误区| 只回答“一个看关键词、一个看语义”,或认为向量检索必然替代 BM25;
  • 下一问| 组件职责明确后,进一步解释 BM25、RRF 和 MMR 如何计算及其损失信息。

第 3 题|L3 原理|BM25、RRF 和 MMR 的核心直觉与公式边界是什么?

核心考察点|BM25、RRF、MMR 的计算直觉、保留信息和参数边界

面试官提问

不要求背完整推导,但要讲清词频饱和、排名融合与多样性惩罚。

30 秒专业短答

BM25 用 IDF 强调稀有词,以 k1 控制词频饱和、以 b 校正文档长度;RRF 按 Σ 1/(c+rank_r(d)) 融合名次,避免未经校准直接相加异构分数,但会丢失分数幅度;MMR 用 λ sim(q,d) - (1-λ) max sim(d,s) 平衡查询相关性与已选结果重复度。三者参数都依赖语料与任务,没有通用最优值。

小白解释

一个关键词第一次出现很有用,出现一百零一次不会再增加同等价值;不同评委的分数标准不同时可以先合并名次;挑资料时既要贴题,也要避免全挑同一种说法。

  • 合格线| 词频饱和、长度归一化、按 rank 融合、相关性/多样性权衡;
  • 加分项| 指出 RRF 候选深度和重复 Chunk 会影响结果,MMR 朴素实现可接近 O(K²)
  • 高频误区| 未经校准直接相加 BM25 与余弦分数,或声称 RRF 一定优于学习排序;
  • 下一问| 掌握公式后,把多路候选、硬过滤、融合和精排落到可重放实现。

第 4 题|L4 实现|如何实现一个可诊断且权限安全的混合检索漏斗?

核心考察点|查询保真、检索内 ACL、候选数据契约与分层 Trace

面试官提问

请按查询处理、过滤、双路召回、融合、精排和上下文选择说明数据契约。

30 秒专业短答

我会保留 raw_query,对规范化、别名和受约束改写做版本记录;可信服务端生成 ACL/版本硬过滤并推入 BM25 与 Dense 两路,候选携带 stable_id、retriever、rank、score、index_version 与过滤理由。随后去重、RRF 融合、有限候选 Cross-Encoder 重排、二次授权、必要时 MMR/父块展开,最后在 Token 预算内选上下文,并保存每层快照供重放。

小白解释

每位找书员都只能进你有权限的书架,并在选书单上写明从哪路找到、原名次和版本;合并后专家重排,最终桌上放哪些书也要留记录,这样答错时知道是哪一环出了问题。

  • 合格线| 原查询保留、每路 pre-filter、rank/score/version、融合、精排与最终上下文;
  • 加分项| 改写保留否定/实体/时间条件,命中缓存后再授权,Reranker 超时降级到融合排名;
  • 高频误区| 先跨权限全库检索再过滤,或只保存最终答案而没有中间候选;
  • 下一问| 漏斗可重放后,才能定位“Recall 上升但答案变差”或某类查询突然退化。

第 5 题|L5 工程|线上偶发检索为空或回答跑偏,如何用日志和数据逐层定位?

核心考察点|候选漏斗的可观测信号、分层止损和防回归

面试官提问

请分别说明偶发空召回与回答跑偏的首要假设、日志字段、排查顺序和回归方法,并覆盖切片粒度、向量相似度与 Prompt 窗口溢出。

30 秒专业短答

我先固定失败 request_id、raw/rewrite query、身份/ACL 和语料、索引、Embedding、Reranker、Prompt、Model 版本,再找正确证据第一次消失的位置。偶发空召回先比较各节点 candidate_count、过滤前后数量、索引别名、缓存、依赖超时和版本一致性;稳定空召回再查文档是否存在、Chunk 是否过细/过大、Analyzer、向量相似度与 ANN。回答跑偏先看正确证据是否进入 final_context:未进入就查融合、重排、去重、父块和 Token 预算,已经进入才查窗口截断、冲突证据、Prompt 和生成忠实度。修复后重放原样本和相邻分桶,并固化 EvalCase、告警与 Runbook。

小白解释

先看正确的书有没有被任何管理员找到;找到后是否在合并名单掉队;专家是否误排;最后是否因为桌面空间不足被拿走。每一步都看当时的名单,不能只盯最终回答猜原因。

  • 合格线| 固定请求与版本,按语料→Chunk→索引→查询→召回→融合/重排→上下文→生成逐层重放;
  • 加分项| 能解释“偶发”为何优先查节点/缓存/版本/超时,并保存 score 分布、rank 变化、final_context Token 与截断位置;
  • 高频误区| 一上来调 Top-k、换 Embedding 或改 Prompt,没有先证明正确证据在哪一层丢失;
  • 下一问| 组件级故障能定位后,继续设计每层可独立灰度、降级和回滚的服务架构。

第 6 题|L6 架构|如何设计可灰度、可降级、可回滚的检索服务?

核心考察点|组件化版本、影子/灰度、降级语义、缓存隔离和回滚

面试官提问

请说明 Query Router、多路检索、Reranker 和版本配置如何独立演进。

30 秒专业短答

我会把 normalizer、router、filter、sparse、dense、fusion、reranker 和 context selector 分层版本化,硬权限与版本过滤独立于模型配置;候选版通过固定标注集、影子流量和按查询类型灰度比较,再逐级扩量。Dense 或 Reranker 超时可退回受权的 BM25/融合排名并标记 degraded,各层保留开关和旧版配置,缓存键绑定权限、语料、索引与检索版本以支持原子回退。

小白解释

找书系统的分词员、两类管理员、合票规则和专家都能单独换班;新员工先跟班不影响用户,再小范围上岗。专家请假时仍可用合票名单,但要标明是降级结果,且绝不能放松门禁。

  • 合格线| 独立版本与指标、硬过滤不降级、超时回退和版本化缓存;
  • 加分项| 精确检索作 ANN 基线、Rerank delta、候选快照和回滚演练;
  • 高频误区| 把权限当可降级功能,或只记录一个“检索版本”无法定位变化;
  • 下一问| 最后用示例 API 文档助手展示技术选型、失败闭环和证据边界。

第 7 题|L7 项目复盘|如何为多版本 API 文档助手设计检索优化?

核心考察点|面向查询分布的选型、可验证亮点、风险与事实边界

面试官提问

请说明查询类型、技术难点、方案亮点、代表性风险和验收;能否报告提升数字?

30 秒专业短答

这是源文档中的示例设计:错误码与字段名走字段级 BM25,自然语言故障由 Dense 补召回,可信版本/产品/租户过滤进入两路检索,未校准分数用 RRF 融合,有限候选再 Cross-Encoder 精排并按需父块展开。难点是改写保真、硬版本冲突和 Reranker 截断;代表性风险包括错误码被分词拆坏、ACL 缓存越界与 p95 长尾。验收应分桶比较 Recall@k、MRR/nDCG、端到端答案、阶段延迟和越权用例;本文没有真实实验,不能报告提升比例、延迟或成本数字。

小白解释

查“ERR-42”要按编号精确找,描述“付款一直转圈”则按意思找,两份名单合并后再让专家精排;旧版本和别人的私有报告从一开始就不能进候选。当前只有验证方案,没有真实跑分。

  • 合格线| BM25/Dense 互补、硬过滤、RRF、有限精排和分桶验收;
  • 加分项| 保存 raw/rewrite、每路 rank/score、final_context,并把失败样本变成回归资产;
  • 高频误区| 笼统说“混合检索效果更好”,或虚构 Recall/延迟收益;
  • 下一问| 本组题结束;后续进入 RAG 分层评测、版本门禁与生产观测。

4. 自测与评分

  • [ ] 用错误码与同义问法构造一个 BM25/Dense 互补小数据集;
  • [ ] 手算两路排名的 RRF,并说明它丢失了什么信息;
  • [ ] 注入 Reranker 输入截断,比较融合前后 stable_id 的排名变化;
  • [ ] 设计 ACL pre-filter、撤权缓存失效和跨权限回归;
  • [ ] 按准确性、原理深度、工程意识、项目表达、沟通结构各 0~5 分评分;
  • [ ] 第 7 题不得把示例方案包装成真实线上优化成果。

5. 事实边界与参考资料

  • 单一事实源:RAG 检索优化距离、排序和向量数据库篇
  • 源文档依据包括 BM25、RRF、DPR、BERT Reranking、ColBERT、HyDE 原始论文及 Elastic、Sentence Transformers 官方资料;
  • Top-k、RRF 平滑常数、MMR λ、融合权重、阈值和 Reranker 候选数必须按目标数据实测;

当前无法确认| 示例 API 文档助手的索引规模、真实 Recall/nDCG、阶段延迟、调用成本和线上收益。

6. 总结

一句话记忆: 检索优化是先用互补路径召得全,再对受权候选融合、精排和去重,而不是盲目增大 Top-k。

  • BM25 保留精确词信号,Dense 补充语义,两者没有绝对优劣;
  • RRF 按排名融合不可比分数,Cross-Encoder 只能重排已有候选;
  • MMR 治理重复与多样性,但不适合所有单一事实查询;
  • 每层候选和 final_context 都要可重放,ACL 必须在每路召回中生效;
  • 参数、质量和项目收益都必须由固定分桶评测与真实证据支持。