记忆检索质量评测:怎么知道「搜得准不准」

2 min read|检索没坏的时候没人管它;坏了才发现,根本没有基线。

所有检索系统都有一个共同点:坏的时候比好的时候更安静。它不会崩溃,只会开始返回「差点意思」的结果,而你通常要过很久才察觉。

要摆脱这种被动,只需要一个东西:基线。

一、为什么「感觉能用」不算数

人对检索质量的感知极度依赖最近一次体验。今天正好搜到,就觉得它好;明天搜不到,就觉得它坏了。没有数字,讨论就只能停在感觉层面,也没法判断一次改动是变好还是变坏。

二、造一组小样本查询集

不需要几百条,十几条就够起步。关键是要分层:

  • 直查层:答案里原词就能匹配的(比如某个专有名词);
  • 语义层:换了说法、同义表达才能搜到的;
  • 跨层:需要把两条不同来源的信息合起来才能回答的;
  • 陷阱层:库里明确没有答案的,用来验证它会不会乱答。

有陷阱层,才测得出手是「检索准」还是「爱编」。

三、看哪几个数

  • 命中率:该搜到的有没有搜到;
  • 排序位:它排在第几——排在第一和排第八,体感完全不同;
  • 空结果率:该有空结果时有没有空;
  • 误召回:搜出来的东西跟问题无关。

四个数里,「陷阱层的表现」最容易被忽略,也最能暴露问题。

四、索引漂移的两个症状

  • 明明刚更新过内容,搜出来的还是旧版本;
  • 一部分内容忽然「全体失联」,另一部分照常。

前者是没重建索引,后者通常是索引和查询用了两套不一致的处理方式。

五、最小复测机制

把上面那组查询和期望答案存成一个文件,每次改动前后跑一遍,对不上就退回。不做华丽的平台化,先让它能跑、能对比,就已经赢过 90% 的「拍脑袋」。

相关文章