检索质量会"悄悄退化"
检索退化最麻烦的地方是没人会发现 ✗:文档在变、切分规则在变、向量模型在升级、
索引重建的时机不同 —— 每一处都可能让召回悄悄变差 ✔,而线上只表现为"用户好像不太满意" ✗。
对策是两件老办法:黄金集(固定小样本)+ 定期抽样(从真实流量里抽)✔。
一、黄金集:20~50 个问题,长期不动
- 每个问题标注应命中的片段(哪一段真正能回答它 ✔);
- 覆盖不同查询类型:短查询、长句、含编号、跨章节、口语化 ✔;
- 覆盖"该无结果"的情况(语料里确实没有 ✔);
- 冻结:进版本库 ✔,改动要留痕(改了就不能与历史指标直接比 ✔)。
二、每次改动都跑(三件事)
召回@20 → 该命中的片段有没有进候选集
命中位次 → 第一条正确片段平均排第几(MRR ✔)
无结果正确率 → 该无结果时是否返回空(而不是硬凑 ✗)
接进流水线(见评测接进 CI 那篇 ✔),改动即回归 ✔。
三、定期抽样:从真实流量看漂移
黄金集是"固定的考题",它不会告诉你用户问法变了 ✗。所以每周/每月:
- 从真实查询里按比例随机抽 30~50 条 ✔;
- 人工标注"检索结果里有没有真正有用的片段" ✔;
- 与上期对照,看有用率与重复率的变化 ✔;
- 把新出现的失败类型补进黄金集 ✔(让固定考题跟上现实 ✔)。
四、四种常见退化原因(按频率)
| 原因 | 表现 | 对策 |
|---|---|---|
| 切分规则改动 | 召回骤降,碎片增多 | 切分规则也要跑黄金集 ✔ |
| 文档更新未重建索引 | 新内容搜不到 | 索引重建纳入发布流程 ✔ |
| 向量模型升级 | 整体轻微变差 | 升级前用黄金集对照 ✔ |
| 过滤条件收紧 | 召回下降 | 过滤规则与召回指标一起看 ✔ |
五、两条纪律
- 不要只看"有没有结果" ✗ —— 要看结果里有没有用 ✔(这是检索与"能搜到"的区别 ✔);
- 指标要留档 ✔(时间序列才看得出"悄悄退化" ✔)。
一条判据
如果检索链路的任何一处改动(切分、模型、索引、过滤)都不需要跑黄金集就能上线 ✔,
那这套检索质量保障是有洞的 ✗。