前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库MRR Recall@k nDCG@k 检索排序 评测指标边界
AIAI 开发模型与应用评测

搜索召回评测中 MRR、Recall@k 和 nDCG@k 分别适合什么目标边界?

MRR、Recall@k 和 nDCG@k 分别回答首个相关位置、覆盖命中数和分级排序质量三个问题,但其中只有 Recall@k 和 nDCG@k 受 k 截断影响,k 大小决定覆盖与精度的取舍。

前端进阶之旅 · 一题精讲更新于 2026.09.05
AI 开发#模型与应用评测#AI 评测
先看核心答案
理解线索

三种指标的关注维度

  1. MRR首个正解排名倒数,取值范围(0,1],只看1个点。
  2. Recall@k前k命中相关项/总相关项,不关心内部顺序。
  3. nDCG@k多级相关性按log位置折损的前k累计增益。

k 对 Recall@k 和 nDCG@k 有截断:k 越小越强调头几位相关,k 越大越偏向覆盖;MRR 无 k 截断。

核心回答

先记住这个答案

MRR 只关心第一个正确答案的排名倒数,用于单目标问答;Recall@k 统计前 k 中相关项占比,看覆盖;nDCG@k 对多级相关性做衰减折损,排在前面的高相关项贡献更多。k 越小越偏重头部精排,k 越大越接近全量覆盖,但这仅适用于 Recall@k 和 nDCG@k,MRR 本身不设 k。

  • MRR 只数第一个相关项位置。
  • Recall@k 忽略排序只算覆盖率。
  • nDCG@k 要求位置越靠前相关度越高。

触发机制与计算差异

MRR=1/ rank_first_correct,只有排序第一项是对的才有满分,对后位错误不敏感。例如 query 有 5 个相关文档,系统排第 2 位出现第一个相关,MRR=0.5 它不奖励后面的 4 个全部命中。所以适合问题只有一个标准答案或只需第一跳的任务,如知识库问答。

Recall@k 是归一化命中覆盖:分子为前 k 中相关项数,分母为全部相关项数(固定集合评测中已知)。一个 top1 全错的系统若 top10 覆盖 8 个相关项,Recall@10=0.8,与排序无关。nDCG@k 则用 DCG/IDCG 做相对增益,k 截断使相对值不随库大小漂移,对多级标签 (如 0/1/2) 依位置对数衰减。

电商搜索召回场景的指标分歧

假设搜索“无线路由器”,标注 10 个相关商品,其中 3 个极高相关(用户必买),7 个一般相关。系统 A 把 3 个高标准商品排第 1、2、3,其余相关排 30 开外;系统 B 把 10 个相关均匀塞进前 20,没有一条高相关进前 5。若只看 MRR,A=1.0, B=0.2;看 Recall@20,A=0.3, B=1.0 完全反转。

业务目标是首屏转化,应看 nDCG@10,它会惩罚 B 的高相关排序靠后;若目标是“翻两屏能找全”,Recall@20 才对。实际团队采用混合:用 Recall@5 排查召回缺失,用 nDCG@10 监测头部关联,避免单一指标误导排序调优。

k 截断与标注形态的适用边界

当相关文档总数小于 k 时,只有全部相关文档排在前 k 才会使 Recall@k=1.0,若未全部命中则得分小于 1,区分度下降。例如人工只标了 5 条相关且 k=10,若只命中 4 条则 Recall=0.8,并非所有系统都满分。此时应改用 nDCG 的多级标签或把 k 收到与标注密度匹配。MRR 在答案唯一且存在时可靠,若无正确答案则置 0,会导致稀疏反馈。

nDCG@k对标签错误极敏感:若把高相关标成弱相关,IDCG 变小可能抬高实际得分。截断 k 若大于典型查询长度,用户不会翻那么深,计算冗余;k 过小则丢失长尾覆盖。实践是先按业务漏斗定用户翻看深度 k,再针对性选择主指标,并加分组统计看 k 变化时的曲线。

回答前,多想一步

容易答错的地方

把 Recall@k 当排序质量指标
Recal@k 只数前 k 里相关个数,不惩罚前 k 中把次相关排在首位的情况,常导致高覆盖但头部错乱的系统被高估。依据是它的公式不包含位置折损。
认为 MRR 能评估多相关项的覆盖
MRR 只取第一个相关项的倒数,后续相关无论排第 2 还是第 8 都无区别,当 query 有多个正确答案时信息丢失。典型证据是它只取决于第一个正确项的位置,其他正解不影响得分。
试着用自己的话回答

面试官还会怎么问?

同一组实验 MRR 提升但 Recall@10 下降,可能原因?

系统把第一个正确答案从第 3 提到第 1,但挤掉了后面其他相关项,导致 MRR 升而 Recall@10 降。说明头部精排增强但覆盖受损,需按漏斗取舍。

nDCG@k 与 MRR 何时数值完全等价?

只使用二值相关性、且每个 query 恰好只有一个相关文档时,nDCG@k 退化成 1/log2(1+rank),与 MRR 单调相关,但数值仍不等。

离线评测里 k 如何确定?

查看线上搜索平均翻页位置或业务转化深度,把曝光点击曲线在 90% 累计增益处的位数设为 k,避免拍脑袋。

从一道题,走向一组知识

把知识连起来

模型与应用评测

罕见事件检测为什么优先看 PR-AUC 而不是 ROC-AUC?

同属「模型与应用评测」专题,接着看 PR-AUC ROC-AUC 罕见事件 评测指标对比 在具体场景中的处理方式。

模型与应用评测

摘要生成离线评测为什么不能只凭 BLEU 或 ROUGE 判定上线?

同属「模型与应用评测」专题,接着看 BLEU ROUGE 生成评测 人工相关性 局限性 在具体场景中的处理方式。

参考资料

  • LangSmith Evaluation - Docs by LangChain

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 触发机制与计算差异
  3. 电商搜索召回场景的指标分歧
  4. k 截断与标注形态的适用边界
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑