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