RAG 链路每一层分别怎么测?
👔 Raina面试官: RAG 是检索、重排、生成三层。每一层你怎么分别测?
🙋 候选人:
- 分层 isolated test,再 E2E。
- 检索:Recall@K、MRR,固定 query 看 relevant doc 是否进 top-K。重排:rank 顺序是否把最相关 doc 顶上来,测 reranker 单独指标。生成:给定 fixed context,答案是否 faithful、有无超出 context 编造。
- E2E 测三层组合,但 bug 定位要靠分层——生成胡编可能是检索没召回,别只骂模型。
👔 Raina面试官: 只测 E2E 行不行?
🙋 候选人:
- 不行,E2E 只能发现答错了,很难知道哪层错。
- 最小也要检索+生成分测;有 reranker 就三层都测。线上 bad case 回放时标注 failure layer。
检索召回低和生成胡编怎么区分根因?
👔 Raina面试官: RAG 答错了——是检索没召回,还是模型胡编?测试上你怎么区分根因?
🙋 候选人:
- 用分层对照实验:固定 generation、换 retrieval;固定 retrieval、换 generation。
- 给模型喂 gold context(人工指定正确文档),若仍胡编 → generation 问题。只跑 retrieval,看 relevant doc 是否在 top-K → 召回问题。记录每 case 的 retrieved ids 和 answer faithfulness 分数,打标签 failure_layer=retrieval|generation|both。
- 别只看最终答案错,必须看中间 retrieval log,否则团队会互相甩锅。
👔 Raina面试官: 线上怎么快速判断?
🙋 候选人:
- dashboard 分retrieval hit rate 和 grounded answer rate两个指标。
- hit rate 低优先修索引/chunk;hit rate 高但 grounded 低优先修 prompt 或换模型。
知识库更新后怎么做回归?
👔 Raina面试官: 知识库更新了,回归测试增量跑还是全量跑?
🙋 候选人:
- 分层:受影响文档关联 case 增量必跑,核心集全量 periodic 跑。
- 增量:维护 doc→case 映射,改了哪些 doc 就触发关联 query 的 regression。全量:weekly 或 major KB release 跑完整 Eval。索引重建、embedding 模型变更视为全量事件。
- 新增文档测 smoke(能否被检索到),删除文档测旧 case 是否正确失效或更新期望。
👔 Raina面试官: 没有 doc-case 映射怎么办?
🙋 候选人:
- 最小方案:按 tag/目录划分 case 集,KB 按同样 tag 更新时跑对应子集。
- 长期应用 ingestion pipeline 自动关联变更 doc id 到 dependent queries。
Chunk 切分策略变更测试集怎么调整?
👔 Raina面试官: Chunk 大小或 overlap 改了,测试集要不要跟着动?
🙋 候选人:
- 要。chunk 策略变 = 检索行为变,原有 retrieval case 的期望可能失效。
- 保留 query 和 ground truth doc id 不变,重跑 recall@K 看是否提升或退化。新增 boundary case:答案跨 chunk 边界、需要两个 chunk 才能答全的问题。
- 删除依赖旧 chunk 边界的侥幸通过case,重新标注 expected supporting chunks。
👔 Raina面试官: 怎么知道哪些 case 失效了?
🙋 候选人:
- 对比变更前后retrieved chunk id diff,变化大的 case 优先人工 review。
- 设 retrieval diff 告警阈值,自动进 triage 队列。
Citation 不对或缺失算哪层问题?
👔 Raina面试官: 引用溯源不对或者没给 citation,算检索、生成还是产品层问题?
🙋 候选人:
- 分情况:没检索到 → retrieval;检索到了没引用 → generation/prompt;引用了但链接错 → product/工程。
- 测试 case 标注 expected citation doc id。有 doc 无 citation 是 faithfulness/citation compliance 问题。 citation 格式错(页码、锚点)是渲染或 metadata 问题。
- 每层独立指标:citation recall、citation precision、link validity。
👔 Raina面试官: 模型说根据文档但不给具体出处算 pass 吗?
🙋 候选人:
- 看产品 spec。若要求可验证引用,模糊归因不算 pass。
- RAG 产品 increasingly 要求 span-level citation,测试 rubric 要和 PM 对齐。
知识冲突时期望行为是什么?
👔 Raina面试官: 文档 A 和 B 矛盾,RAG 应该怎么答?你怎么测?
🙋 候选人:
- 先和产品定冲突策略:以新为准、以权威源为准、并列说明冲突、拒答。测试只验证是否执行策略。
- case 设计:注入矛盾 doc pair,期望行为明确写进 rubric。不应 silently 选一个或 hallucinate 调和。
- 还要测冲突检测是否触发——有些产品要求明确告诉用户来源存在矛盾。
👔 Raina面试官: 冲突 case 谁来维护?
🙋 候选人:
- 测试+业务专家共建golden conflict pairs,季度 review。
- 线上发现的新冲突类型回流进 Eval 集。
私有知识+公网模型泄露风险怎么测?
👔 Raina面试官: 私有知识库接公网模型,数据泄露风险你怎么测?
🙋 候选人:
- 测越权检索、prompt 套取、输出泄露三类。
- 越权:用户 A 的 private doc 不能被用户 B 的 query 召回。套取:诱导输出你的 system prompt / 全部 context。泄露:回答中是否出现未授权 doc 的原文片段。
- 用标记化 canary 字符串放进 private doc,query 诱导模型复述,检测输出是否含 canary。
👔 Raina面试官: 通过测试就能上生产吗?
🙋 候选人:
- 测试是必要条件不是充分条件,还要网络隔离、加密、审计、DPA 合规。
- 测试覆盖已知 attack vector;零信任架构覆盖未知风险。
Embedding 模型更换要重跑哪些测试?
👔 Raina面试官: 换了 embedding 模型,哪些测试必须重跑?
🙋 候选人:
- 全部 retrieval Eval + 依赖检索的 E2E case,generation-only case 可不动。
- embedding 变 → 向量空间变 → recall@K、MRR 可能大幅波动。至少跑核心 retrieval set 和 golden E2E,对比前后 diff。
- 若用 hybrid search,还要测 sparse 和 dense 权重是否需要重调。
👔 Raina面试官: recall 提升了但 E2E 下降,可能什么原因?
🙋 候选人:
- 可能召回了更多噪声 doc 干扰 generation,或 reranker 未同步优化。
- 分层看:retrieval 指标 up、generation faithfulness down → 检查 top-K 噪声和 rerank。
Top-K 和相似度阈值调参怎么测?
👔 Raina面试官: Top-K 和相似度阈值调参,测试怎么给出客观依据?
🙋 候选人:
- 扫参数网格,画recall-precision 曲线和 E2E 质量曲线,找 knee point。
- 固定 Eval query set,变 K∈{3,5,10,20} 和 threshold,记录 retrieval hit rate、noise rate、最终 answer score。选 Pareto 最优——不能只看 recall 最高。
- 线上 A/B 验证离线结论,防止 overfit Eval。
👔 Raina面试官: 参数调优要每次发版都跑吗?
🙋 候选人:
- 只有检索栈变更时重跑。纯 prompt 改动不必扫 K/threshold。
- 但要在 release checklist 里标记是否动检索参数。
答非所问但检索相关怎么判定?
👔 Raina面试官: 检索文档看着相关,但答案跑题了。这种 case 质量怎么判定?
🙋 候选人:
- 拆成两个分数:retrieval relevance 和 answer relevance,不能混为一谈。
- retrieval 相关 + answer 跑题 → generation/prompt 问题,case 标签 failure=generation。检索本身可以 pass。
- 用 judge 分别评文档是否相关答案是否回答问题,2x2 矩阵分类 failure mode。
👔 Raina面试官: 这种 case 算整体 fail 吗?
🙋 候选人:
- E2E 算 fail,但归因要写入 report,否则修错层。
- 对用户的体验是 fail,对工程团队需要精确路由。
