跳到正文

MRR vs NDCG vs Precision 怎么选?

RAG 系统评估中三种指标的区别与适用场景

原题:请解释MRR(Mean Reciprocal Rank)的含义和计算方法,并从评估目标的角度比较MRR与NDCG、Precision在RAG系统评价中的区别和适用场景。

评估与监控 · 百度真题

30 秒回答

  1. MRR的定义和计算公式
  2. MRR只关注第一个相关结果的位置特性
  3. NDCG考虑多结果相关性累积和位置衰减
  4. Precision关注查全率不敏感排序

回答与解析

答案要点

  • MRR的定义和计算公式
  • MRR只关注第一个相关结果的位置特性
  • NDCG考虑多结果相关性累积和位置衰减
  • Precision关注查全率不敏感排序
  • 三者适用场景的差异(单答案vs多答案vs查全)

MRR 核心概念

MRR(Mean Reciprocal Rank) 衡量检索系统把第一个相关结果排在第几位的平均表现。

计算公式:

MRR = (1/|Q|) * Σ(1/rank_i)
  • 对每个查询,找到第一个相关结果的排名 rank_i,取倒数 1/rank_i
  • 所有查询取平均,范围 (0, 1],越接近1越好

关键特性:只关心第一个正确答案的位置,后面即使有100个相关文档也不加分。


三指标对比与适用场景

指标 核心关注点 适用场景
MRR 首个正确答案的排名 单答案场景:QA系统、客服机器人、事实性查询
NDCG 多结果的相关性累积+位置加权 多答案场景:需要LLM综合多文档生成的复杂查询
Precision@K 前K个结果中相关的比例 查全场景:不关心顺序,只要召回足够多相关文档

RAG系统中的选择逻辑

  • MRR:适合"找唯一正确答案"的RAG,如知识库问答、工具选择
  • NDCG:适合"需要多文档推理"的RAG,如报告生成、综合分析
  • Precision@K:适合粗排阶段,确保候选池覆盖度

工程实践:通常组合使用——用Precision@K保证召回,用NDCG/MRR保证排序质量。

口语版讲法(约4分钟)

  • 一句话定位:这道题问的是排序指标在RAG里的适用边界
  • MRR只关心第一个答案,适合单答案场景
  • NDCG看重多结果累积和位置衰减,适合多文档推理
  • Precision@K保召回,常和NDCG/MRR组合使用
  • 落地风险:文档质量、查询类型不匹配会导致指标虚高

这道题其实是在问,当你评价一个RAG系统的排序质量时,不同指标到底在衡量什么,以及怎么选。我理解核心不是背公式,而是搞清楚每个指标的适用边界,因为实际落地中,指标选错了,优化方向就偏了。

先说MRR,Mean Reciprocal Rank。它只关心第一个正确答案排在第几位,取倒数,然后对所有查询平均。比如用户问“退款流程是什么”,系统第一个返回的就是退款步骤,那排名1,倒数就是1;如果第一个返回的是退货政策,第二个才是退款流程,那倒数就是0.5。MRR只看第一个,后面就算有100个相关文档,也不加分。所以它天然适合单答案场景,比如知识库里的唯一问题、客服机器人查一个固定答案。

但RAG里很多查询不是只有一个答案的。比如用户问“最近有什么促销活动”,可能涉及满减、优惠券、限时折扣,多个文档合起来才能回答。这时候MRR就不够用了,因为第一个相关文档不一定是最重要的。那就得上NDCG,它考虑的是前K个结果里所有相关文档的累积收益,而且位置越靠后,收益衰减越厉害。NDCG真正衡量的是排序质量,而不仅仅是第一个对不对。所以复杂查询,需要LLM综合多文档生成时,NDCG更合理。

再一个就是Precision@K,它只看前K个结果里相关文档的比例,不关心顺序。比如查10个文档,有5个相关,Precision@10就是0.5。它适合粗排阶段,或者你只关心召回够不够,不关心顺序。在RAG里,我经常用它来保证候选池的覆盖度,确保后面重排有足够的好材料。

但实际落地,很少只用单一指标。举个例子,一个电商客服RAG,用户问“订单异常怎么处理”,如果答案是唯一的,我会用MRR来评估排序质量;但如果用户问“退款政策有哪些”,涉及多个条款,我会用NDCG。而Precision@K更多是上线前的离线验证,确保检索模块没漏掉关键文档。真正上线后,我会组合使用:用Precision@K保召回,用NDCG或MRR保排序,看具体场景。

这里有个坑:指标选错会误导优化。比如你优化MRR,模型会倾向于把最可能的一个答案排第一,但可能忽略了其他相关文档,导致生成时信息不全。反过来,如果场景是单答案,你优化NDCG,可能会把多个相关文档都往前排,但第一个反而不准。所以前提是,你得先搞清楚用户查询的意图分布,是单答案为主还是多答案为主。如果分布混杂,我会分层处理:简单查询用MRR,复杂查询用NDCG,而不是一个指标打天下。

还有一个点值得注意:这些指标都假设文档相关性是明确的,但RAG里文档可能部分相关,或者多个文档合起来才相关。比如用户问“满减和优惠券能叠加吗”,单个文档可能只说了满减规则,另一个只说了优惠券规则,单独看都不完全相关。这种情况下,用传统指标打分就会有偏差。

所以我的判断是,MRR、NDCG、Precision各自有清晰的适用场景,但RAG系统的评价不能依赖单一指标。我更倾向用NDCG做主要排序指标,因为它对多结果和位置都敏感,然后用MRR做辅助,监控第一个答案的命中率,Precision@K作为召回阶段的底线。这样既保证了排序质量,又不会漏掉关键文档。

关键一句:传统指标假设文档相关性独立,但RAG中文档常需组合才相关,导致指标打分有偏差

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做一个客服RAG系统,用户问“我的订单到哪了”,你检索到一条物流信息。如果这个答案就是用户唯一要的,你怎么评估检索把这条排在第几位?这其实就是MRR关心的东西。

  2. 问法 2 · 层层追问

    评价RAG的检索效果你一般用什么指标?……那如果只看第一个正确答案的位置,用什么?……跟NDCG比,它忽略了什么?什么场景下你宁愿用MRR也不用NDCG?

  3. 问法 3 · 直球架构

    解释MRR的计算方式,并从评估目标的角度,说明MRR与NDCG、Precision在RAG系统评价中的区别和各自适用场景。

同模块相关题目