平均倒数排名 (MRR) 是一种用于评估检索系统有效性的指标,它通过测量系统对一组查询的第一个相关文档进行排名的好坏程度。它计算所有查询的倒数排名(1 除以第一个相关结果的位置)的平均值。例如,如果查询的第一个相关文档出现在第 3 位,则倒数排名为 1/3。MRR 强调系统在结果中尽早显示相关内容的能力,这对于用户依赖顶部结果的应用程序至关重要,例如搜索引擎或 RAG(检索增强生成)系统中的文档检索。
在 RAG 系统的上下文中,MRR 有助于评估检索器组件的性能。 RAG 系统检索文档,为语言模型生成答案提供上下文。如果检索器未能对相关文档进行高排名,则生成器可能会产生不准确或不相关的响应。 MRR 侧重于第一个相关文档的位置,当生成器严重依赖顶部结果时,这尤其有用。例如,如果用户问“什么导致气候变化?”,并且检索器在位置 1 返回相关文档,则倒数排名为 1。如果第一个相关文档位于位置 4,则倒数排名下降至 0.25。对所有测试查询的这些分数求平均值可得出 MRR,反映了检索器在优先考虑有用内容方面的一致性。
要应用 MRR,开发人员需要一个标记数据集,其中知道每个查询的正确文档。假设您测试三个查询
- 查询 A:第一个相关文档位于位置 1 → RR = 1。
- 查询 B:第一个相关文档位于位置 3 → RR = 1/3。
- 查询 C:前 10 名中没有相关文档 → RR = 0。MRR 为 (1 + 0.333 + 0) / 3 ≈ 0.444。虽然 MRR 计算起来很简单,但它有局限性。它忽略了后续的相关文档,也没有考虑不同的查询难度。对于综合评估,请将 MRR 与 recall@k 等指标(衡量前k个结果中有多少相关文档)结合使用。改进 MRR 可能涉及调整检索器的排名算法、使用更好的嵌入进行语义搜索或扩展训练数据以减少检索准确性方面的差距。