召回率为 75% 时,剩余 25% 为什么没有召回?
未标记
考查重点:证据丢失位置与漏召回归因。从原文、解析结果、索引、召回候选到最终上下文逐层检查,找到正确证据首次丢失的位置,再分别修复并复测
本题目录
参考答案
核心回答
75% 只能说明当前评测有缺口,不能直接说明剩余部分都由同一种原因造成。我会拿出漏召样本,沿着源文档 → 解析与索引 → 粗召回候选 → 重排 → 最终上下文逐段定位,判断正确证据在哪一步丢失,再做对应改动。
先确认 75% 的口径:如果是文档级 Recall@20,缺的是标注相关文档或片段;如果是 100 个问题中 75 个至少命中一项相关证据,实际是问题级 Hit Rate@20。还要明确这 20 条是粗召回结果、重排结果,还是最终送给模型的内容。否则“剩余 25%”对应的样本和故障位置都可能判断错。
真正需要回答的是:这些失败中,有多少是知识没有正确入库,有多少是查询或索引检索不到,有多少在排序和上下文组装时被丢弃,以及各类判断有什么证据。不能仅凭看到某个坏例,就认定“都是切分太碎”,再把一组优化手段全部加上。
先把一个失败样本完整回放出来
为每条漏召样本保留原始问题、必要会话上下文、应命中的证据及理由,并对齐当时的文档版本、索引、过滤条件与检索配置。记录各阶段的片段 ID、来源、排名和分数,以及过滤、去重、截断的原因。
先复核标注是否仍然成立:目标文档是否适用于问题中的产品版本、时间和用户权限,是否已有另一份等价证据。若问题本来超出知识库范围或当前用户无权访问,应进入无答案、范围或权限评测,不能为了提高召回率而放宽访问边界。
回放时保持同一批数据和配置。若线上已经更新文档,而离线还在用旧的片段 ID 对照,可能产生“证据找到了,但因为 ID 变了而判漏召”的假象。
第一步:正确证据真的进入索引了吗
从已知目标文档反查,而不是先换模型:
- 原文是否导入成功,是否存在同步延迟、更新失败或错误的索引别名。
- 解析是否保留了答案所在的表格、图片文字、标题、条件和否定词。
- 切分后能否找到一段或一组足以支撑答案的内容,是否把条件与结论拆散,或把多个主题混进一个过长片段。
- 文档版本、租户、产品、时间等元数据是否正确,是否在检索过滤中被意外排除。
可以直接按文档 ID、关键词或原句检查解析文本与片段。原文有答案但解析结果没有,是解析问题;片段内容正确但未写入目标索引,是入库问题;正确文档被错误标签过滤掉,是元数据或规则问题。这些情况都不是更换 Embedding 就能解决的。
过滤排查应在授权数据范围内进行,区分“规则实现错误”与“按权限正确排除”。
第二步:在索引里,为什么没进入前 20 条
查询是否表达了完整需求
检查用户简称、专业术语、错误码、版本号,以及多轮问答中省略的实体。把原始查询与改写后的查询分别回放,观察改写是否补全了上下文,还是丢掉了版本、时间或否定条件。
关键词能找到、向量路径找不到,可能与领域表述、短查询、精确标识或 Embedding 匹配有关;向量能找到、关键词找不到,则继续检查分词、同义表达和检索字段。对照结果用于缩小范围,不能直接推断某种检索方式在所有问题上更好。
是语义排名问题,还是近似检索损失
确认查询和文档向量使用兼容的模型版本、预处理、维度与相似度设置,排除模型更换后没有重建索引等配置问题。
在同一批允许访问的向量上,可以用精确检索作对照:
- 精确搜索中正确片段也排得很低,优先检查查询表达、片段内容和向量表示;单纯扩大近似搜索范围未必有效。
- 精确搜索能排到前面,近似搜索却漏掉,再检查近似索引、搜索范围、量化或过滤方式带来的损失。
- 正确片段排在截断边界附近,可以测试扩大粗召回候选池,但要同时观察延迟与后续筛选开销。
不同检索器的分数范围和方向可能不同,还要检查阈值是否误用。将距离当相似度,或者沿用旧模型的阈值,都可能把本来相关的结果过滤掉。
第三步:候选里有,后面为什么又丢了
如果粗召回已有正确证据,继续查看它在融合、去重、重排和上下文组装中的变化:
- 多路融合是否让关键的精确匹配结果被大量相似结果挤出。
- 去重是否把来源相近、内容却包含不同条件的片段合并掉。
Reranker是否受到领域词汇、输入截断或训练分布影响,降低了正确片段排名。- 最终 Token 预算是否截掉关键段落,摘要是否遗漏适用条件、例外或数值。
普通重排只能重新排列已有候选,不能补回候选池中根本不存在的文档。如果原文证据已经进入最终上下文,而模型仍没有正确使用,应转到证据理解、生成或引用问题,不能继续归为漏召回。
例如,一个假设排查案例是:错误码文档已经召回,但答案所需的“仅适用于某版本”被切在邻块,最终上下文又只保留了错误码说明。此时更合适的验证是保留标题和版本、合并必要邻块或采用父子片段回取,再检查证据是否完整;不是先把所有请求的 Top-k 无限制调大。
归因后怎样改,怎样证明改对了
为失败样本记录主要原因、次要因素和待确认项。汇总占比时按明确规则统计,避免同一条同时归入切块、向量和重排后重复计数;没有证据的样本继续保留待定位。
改动与故障位置对应:
- 解析和入库缺失:修解析、切分或同步,重建受影响索引并核对版本。
- 查询与表达不匹配:测试查询补全、领域词处理、关键词与向量互补;改写要保留原始语义。
- 近似搜索损失:调整相关索引或搜索设置,用精确对照衡量覆盖与耗时。
- 排序或上下文丢失:调整融合、去重、重排输入与证据预算,检查关键条件是否留下。
先验证原失败样本是否补回,再在固定回归集和未参与调参的样本上检查整体变化,保留之前成功的样本。分别看候选召回、最终证据覆盖、答案正确性与引用,以及延迟和成本,防止修复一个坏例却引入另一类回归。
若要说明项目里的“剩余 25%”,应按实际归因结果展开最主要的几类,给出代表样本、定位证据和改动后的对照。题目只给出了总指标,无法据此推导各原因的具体占比。
常见追问
为什么不先把 Top-k 从 20 调大?
可以作为定位实验,观察正确证据是否只是排在边界之外。但如果目标没入库、被错误过滤或语义排名很低,扩大数量也可能无效;新增候选还会增加重排和上下文开销。
怎么证明是切分问题?
查看目标答案在原文、解析文本与片段中的位置,确认必要信息如何被拆开;保持其他主要条件一致,对比切分调整前后的证据排名和最终覆盖。只有“换了切块后整体指标变高”,还不足以说明所有失败都来自切块。
重排后召回率下降,是不是应该去掉重排?
先区分候选池覆盖与最终截断后的覆盖,再检查正确证据的重排排名、输入是否被截断及相似片段是否拥挤。根据质量、时延和成本决定调整模型、截断数量或是否保留重排。
对应教程
- RAG 检索增强生成:高级 RAG 与评测观测部分按查询、索引、检索、排序和生成划分改进位置,帮助把漏召样本沿链路定位,而不是只调整某一个模型。
参考资料
- 国内:JavaGuide:RAG 检索优化:依据候选、重排、压缩和最终上下文的分工,说明正文中粗召回遗漏、后续丢证据和生成误用需分别定位。
- 国内:zero2Agent:RAG 与检索:参考离线内容与在线查询两侧排查,说明正文中按样本比较关键词、向量与改写的诊断方法。
- 国内:Datawhale:记忆与检索:借鉴扩展查询与候选合并的实现,说明正文中改写、过滤、去重和截断怎样改变证据覆盖;有效性需在当前样本对照。
- 国外:Sentence Transformers:Retrieve & Re-Rank:依据召回与 Cross-Encoder 重排的职责,解释正文中正确证据未进入候选时不能靠更换重排器补回的原因。
- 国外:Elastic:kNN search:依据精确、近似搜索与模型一致性的要求,说明正文中通过同向量对照区分表示排名问题和索引损失的方法。



