记忆检索质量评测:怎么知道「搜得准不准」
2 min read|检索没坏的时候没人管它;坏了才发现,根本没有基线。
所有检索系统都有一个共同点:坏的时候比好的时候更安静。它不会崩溃,只会开始返回「差点意思」的结果,而你通常要过很久才察觉。
要摆脱这种被动,只需要一个东西:基线。
一、为什么「感觉能用」不算数
人对检索质量的感知极度依赖最近一次体验。今天正好搜到,就觉得它好;明天搜不到,就觉得它坏了。没有数字,讨论就只能停在感觉层面,也没法判断一次改动是变好还是变坏。
二、造一组小样本查询集
不需要几百条,十几条就够起步。关键是要分层:
- 直查层:答案里原词就能匹配的(比如某个专有名词);
- 语义层:换了说法、同义表达才能搜到的;
- 跨层:需要把两条不同来源的信息合起来才能回答的;
- 陷阱层:库里明确没有答案的,用来验证它会不会乱答。
有陷阱层,才测得出手是「检索准」还是「爱编」。
三、看哪几个数
- 命中率:该搜到的有没有搜到;
- 排序位:它排在第几——排在第一和排第八,体感完全不同;
- 空结果率:该有空结果时有没有空;
- 误召回:搜出来的东西跟问题无关。
四个数里,「陷阱层的表现」最容易被忽略,也最能暴露问题。
四、索引漂移的两个症状
- 明明刚更新过内容,搜出来的还是旧版本;
- 一部分内容忽然「全体失联」,另一部分照常。
前者是没重建索引,后者通常是索引和查询用了两套不一致的处理方式。
五、最小复测机制
把上面那组查询和期望答案存成一个文件,每次改动前后跑一遍,对不上就退回。不做华丽的平台化,先让它能跑、能对比,就已经赢过 90% 的「拍脑袋」。