一句话定义:MRR(Mean Reciprocal Rank,平均倒数排名)看“第一个相关结果排多靠前”;nDCG(normalized Discounted Cumulative Gain,归一化折损累计增益)看“整个排序列表排得好不好”,尤其是否把更相关的内容放更前。
怎么理解
搜索、推荐、RAG 检索都会返回一个列表。MRR 对每个查询只认第一个相关结果:若它排第 1,得 1;排第 2,得 1/2;排第 5,得 1/5;一个都没有,得 0。把所有查询的得分平均,就是 MRR。它像点外卖:你只关心“第一家有这道菜的店”出现在列表第几位,后面还有多少家不重要。
nDCG 则给每个位置的结果打分。常见算法先算 DCG(Discounted Cumulative Gain,折损累计增益):DCG = Σ(2^{rel_i}−1)/log2(i+1)。rel_i 是第 i 位结果的相关性等级,比如 0 不相关、1 一般、2 高度相关;位置越靠后,分母越大,得分被“折损”。再除以理想排序的 DCG(IDCG,Ideal DCG),得到 nDCG = DCG / IDCG,通常在 0 到 1 之间,越接近 1 越好。它像整理书架:最相关的书要放最顺手的位置,而且不止第一本,后面几本也要按重要程度排好。
| 维度 | MRR | nDCG |
|---|---|---|
| 关注点 | 第一个相关结果的位置 | 整个列表的排序质量 |
| 相关性 | 通常二值:相关/不相关 | 可分等级:不相关/一般/高度相关 |
| 后续结果 | 不看 | 看,但越靠后权重越低 |
| 适用场景 | 问答、导航、唯一答案 | 搜索、推荐、多相关结果 |
| 取值 | 0~1,越高越好 | 0~1,越高越好 |
和相邻概念的区别
Precision/Recall 关心“找得准不准、全不全”,不关心第几位。Hit Rate@K 只看前 K 个里有没有相关结果,不关心排第几;MRR 关心第一个相关结果有多靠前。MAP(Mean Average Precision)也看排序,但通常按二值相关性计算;nDCG 能处理多级相关性,所以更适合“相关程度有高低”的场景。实际评估常写 nDCG@10、MRR@5,意思是只看前 10 或前 5 个位置。
实际意义
做搜索、推荐、RAG 的人,如果用户通常只要一个答案,优先看 MRR;如果用户会浏览一屏结果,nDCG 更能反映整体体验。普通职场人汇报排序效果时,别只说“准确率”,可以问一句:我们看的是第一个答案够不够前,还是整页排序够不够好?具体指标实现、截断位置和相关性标注规则,以业务目标和官方评估文档为准。
