信息检索和机器学习评估中的一个经典指标:平均倒数排名(MRR, Mean Reciprocal Rank)。
虽然名字里有“倒数”和“平均”,但它本质上是一个算术平均数,计算对象是首个相关文档排名的倒数。
一、核心概念与公式
MRR 衡量的是:在多次查询中,系统返回的第一个正确答案,平均排在第几位。 它的核心思想是,用户通常只关心找到的第一个结果,排得越靠前,体验越好。
对于一组查询 QQ,MRR 的计算公式为:

-
rankiranki:第 ii 个查询中,第一个相关文档出现的位置(排名)。
-
如果该查询没有任何相关文档,倒数项记为 0。
二、计算举例
假设系统处理了3个查询:
-
查询1:第一个正确答案排在第2位。倒数 = 1/2 = 0.5
-
查询2:第一个正确答案排在第1位。倒数 = 1/1 = 1
-
查询3:没有找到任何正确答案。倒数 = 0
那么,这个系统的 MRR 就是:

MRR 的值域在 0 到 1 之间。数值越接近1,说明系统越能把正确答案排在最前面。
三、特点与洞察
-
只关心第一名
这是 MRR 最显著的特点。无论第一个正确答案之后还有多少更相关的内容,它都视而不见。这很符合搜索场景,但对需要完整答案集的场景则不适用。 -
对排名极度敏感
这种敏感性是非线性的。排名从1降到2,MRR的贡献从 1 暴跌到 0.5(减少0.5);从10降到20,贡献从 0.1 变为 0.05(仅减少0.05)。这完美契合了“用户只看前几条”的假设。 -
简单且指标单一
MRR 将系统在多个查询上的性能浓缩为一个 0-1 的数字,极其方便横向对比。
四、与“调和平均数”的联系
MRR 和你之前问的调和平均数有一个精妙的联系。
假设我们有一个查询,第一个正确答案排在 rr。如果我们在调和平均数的视角下,认为这个查询的“成本”或“耗时”是 rr,那么它在某个“平均排名”计算中的权重就和 1/r1/r 有关。
更直接地,MRR 是每个查询的“倒数”的算术平均,而调和平均数则是“倒数”的算术平均的倒数。
结构对比如下:
-
调和平均数:先倒,后算术平均,再倒回来。

-
MRR:先倒,后算术平均。不倒了。
所以,MRR 实际上是倒排名的算术平均,它衡量的是“满意度”的平均,而不是“排名”的平均。
五、应用场景与局限
| 场景 | 适用性 |
|---|---|
| 问答系统、语音助手 | 非常适用。用户只想要一个直接的回答,排在第二位就是失败。 |
| 传统网页搜索 | 部分适用。用户可能点击第一个,也可能浏览前几条。MRR 是重要参考,但通常与 MAP(平均精度均值), NDCG(归一化折损累计增益) 等指标一起看。 |
| 推荐系统 | 不太适用。推荐场景需要评估整个列表的质量,MRR 过于狭隘,忽略了用户对多样性和后续内容的兴趣。 |
总结:MRR 是一个直观、硬核的指标,专门用来回答一个简单问题:“平均而言,用户需要往下翻多少行才能找到想要的东西?” 如果你希望模型给出的最佳答案一击即中,MRR 就是衡量它的标尺。