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