Skip to content

9.2.1 Recall@K、Precision@K、MRR、nDCG 分别在看什么? ​

先给结论:这几个指标看的是不同问题。Recall@K 看“关键证据有没有进来”,Precision@K 看“前 K 条里有多少是真的有用”,MRR 看“第一条正确结果来得够不够早”,nDCG 看“整体排序是不是把高价值结果尽量排前”。

如果把它们都混成“检索好不好”的一个大概念,就很容易在调优时失焦。

一、Recall@K 在看什么 ​

Recall@K 最关心的是:

  • 在前 K 个结果里,系统有没有把该找回来的正确证据带回来

更直观地说,它回答的是:

  • 候选池够不够全

所以它特别适合用来判断:

  • 关键证据是不是经常根本没被召回
  • chunk、embedding、metadata filter 是否过严
  • 路由或过滤是不是把本该保留的证据挡掉了

它更偏向“覆盖”视角。

二、Precision@K 在看什么 ​

Precision@K 更关心的是:

  • 前 K 条里,有多少条是真的相关或有用

它回答的是:

  • 候选池是不是太脏

所以它特别适合用来判断:

  • 前排噪声是不是太多
  • 背景块和模板块是不是挤占了真正证据
  • 系统是不是把很多“有点像”的结果也放进来了

它更偏向“前排纯度”视角。

三、MRR 在看什么 ​

MRR 也就是 Mean Reciprocal Rank,更关心的是:

  • 第一条正确结果出现在多靠前的位置

它最适合回答的问题是:

  • 系统有没有把正确结果尽早顶上来

这对很多问答式 RAG 很重要,因为如果第一条正确结果出现得够前,后面的生成就更容易稳定。

所以 MRR 特别适合看:

  • 重排是否有效
  • 前排排序是否改善
  • 正确结果是不是总在前 10 里但总上不了前 3

四、nDCG 在看什么 ​

nDCG 更关注整体排序质量,尤其是:

  • 高相关结果是否被尽量排在更前面

它和 MRR 的差别在于:

  • MRR 更盯第一条正确结果
  • nDCG 更盯整个排序列表的价值分布

所以当一个问题不只依赖单条正确证据,而是依赖:

  • 多条证据的综合排序

nDCG 往往比单纯看 MRR 更有信息量。

一个更直观的记法 ​

你可以先用这套简化记法理解:

  • Recall@K:有没有找回来
  • Precision@K:前排脏不脏
  • MRR:第一条对的来得早不早
  • nDCG:整体排得合不合理

它们分别适合什么问题 ​

如果你怀疑系统经常漏召回 ​

优先看:

  • Recall@K

如果你怀疑前排噪声太多 ​

优先看:

  • Precision@K

如果你怀疑正确结果总在前几页但不够靠前 ​

优先看:

  • MRR

如果你怀疑整体排序不稳、相关性层次混乱 ​

优先看:

  • nDCG

一个常见误区 ​

很多人会问:

  • 这几个指标里哪个最重要

这个问题通常不成立。更准确的问法应该是:

  • 当前系统暴露的问题,更该看哪一个

因为不同阶段的检索系统,最先暴露的问题本来就不一样。

一句话总结 ​

Recall@K、Precision@K、MRR、nDCG 不是在重复描述同一件事。它们分别在看覆盖、前排纯度、第一条正确结果的位置,以及整体排序质量。真正有用的方式不是选一个“最重要指标”,而是让指标和当前检索问题对齐。