Skip to content
阅读进度0%
知识库待复核

RAG 面试题

围绕召回、切分、引用、权限和失败定位讲解 RAG 面试题,配有回答思路、追问与自测。

我的学习与文章检索 →
学习记录仅保存在当前浏览器,可随时取消标记。

RAG 面试题 ​

这一组题目围绕一个场景:员工查询公司的报销制度。回答时先给结论,再说明证据、取舍和验证方法;不要把工具名当作设计依据。

核心问题 ​

1. 为什么 RAG 不等于 embedding + top-k? ​

RAG 把检索得到的外部证据用于生成。向量检索只是可选的召回方式:制度编号适合精确匹配,语义问法适合向量检索,统计报销总额则可能需要结构化查询。完整链路还包括文档解析、版本与权限、候选排序、上下文组装、答案生成和引用检查。

追问:制度昨天更新,今天仍回答旧金额,先查什么?先检查数据同步和索引版本,再看召回片段是否过期,最后检查答案缓存。模型更大不能解决这条链路里的更新问题。

2. BM25、向量检索、混合检索和 rerank 怎么选? ​

先用真实问题建立基线。精确术语、编号和人名要检查关键词通道;同义表达要检查向量通道。混合检索可以合并互补候选,但不能直接相加不同通道的原始分数;可尝试按名次融合,再用验证集比较。Rerank 负责给候选重排,通常无法找回候选集中缺失的文档。

验证方法:固定语料和问题集,比较关键词、向量、混合三组的 Recall@k,再固定候选比较重排前后的 MRR、最终答案与延迟。实验过程见 检索策略 和 重排序。

3. chunk 大小如何选择? ​

小片段便于精确命中,但容易丢掉表头、条件和例外;大片段能保留上下文,却可能稀释主题并挤占模型输入。按标题、段落、表格结构切分作为基线,再比较不同 token 预算。重叠比例属于实验参数,不是通用最优值。

失败案例:片段只保留“上限 500 元”,遗漏“仅适用于异地出差”。验收时要检查支撑答案的条件是否一并进入上下文,并保留文档 ID、章节、页码和版本。参见 文档切分。

4. 答案错了,如何定位? ​

检查位置观察到的现象下一步
原始文档标准证据不存在或解析丢失修复数据接入、解析或问题边界
召回候选证据存在但未进入候选查查询改写、索引、过滤和召回
最终上下文候选有证据,组装后消失查重排、去重、截断和 token 预算
生成答案证据完整但金额/条件错查指令、模型能力和答案校验
引用答案正确,引用指向错文档查证据 ID 映射和断言支持关系

不要只比较答案是否“看起来合理”。给同一问题注入人工选定的正确证据,是区分检索与生成瓶颈的一种对照实验。

5. 权限和删除怎样影响设计? ​

认证身份由服务端取得,检索范围由权限系统决定。用户传来的 tenant_id 或模型生成的过滤器不能直接成为授权依据。检索、缓存、引用查看和原文下载都需要遵守同一权限边界;删除或撤权后,索引和缓存也要有失效路径。

验收用例:用户 A 能看、用户 B 不能看的同一文档;文档撤权前后;旧缓存命中;正文已删除但向量仍残留。期望是受保护内容不进入无权限用户的模型上下文。详见 生产实践。

追问角度 ​

  • “没有答案”和“检索失败”怎么区分?语料中有证据却未找回是召回失败;确认语料没有支持时才标无答案。
  • 检索指标上涨,答案为何变差?检查新增噪声、重复片段、截断,以及评估集是否偏向单一问题类型。
  • 如何报告改进?保留同一批问题的前后结果、失败分类、样本量、成本和延迟。指标定义见 评估指标。

示例回答骨架 ​

“我会先固定制度文档版本,并标注一批含普通问答、例外条款、无答案和越权请求的样本。建立关键词/向量基线,按候选、上下文、答案和引用四层定位失败。只有在验证集上改善答案且延迟可接受时,才增加重排或查询改写。上线后用独立测试集与撤权用例检查回归。”

自测 ​

任选一个错误答案,画出它实际经过的数据链路;用一条 trace 说明最早出错的位置,并提出一个只改变单个变量的实验。如果只能说“换模型试试”,应回到 RAG 评估 补齐诊断过程。

基于 VitePress 构建