如何用 Recall@K、MRR 和 nDCG 评估 RAG 检索?
先用自己的话答,再看参考说法
60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。
别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。
参考内容当前已显示;开始口述后会暂时隐藏。
面试时怎么答
先说明三项指标回答不同问题:Recall@K 看相关材料有没有进入候选,MRR 看第一个相关结果排得多靠前,nDCG 还能处理多级相关性并关注整段排序。给出直观含义比只背公式更重要。
随后提醒指标依赖标注:一个问题可能有多份可支持答案的文档,漏标会低估检索。若继续深挖,可谈按查询类型分桶以及与端到端答案质量的相关性。
可以这样答:
Recall@K 衡量前 K 条覆盖了多少相关文档,适合看召回上限;MRR 取第一个相关结果排名的倒数,强调尽早出现一条可用证据;nDCG 对不同相关等级赋权并按位置折损,能评价整个排序。三者不能互相替代,也不能脱离标注质量。RAG 中还应按问题类型分桶,并检查这些离线指标是否真的带来更高的答案正确率和引用支持率。
核心回答
先为每个问题建立相关文档或证据标注,再根据目标选指标。Recall@K 衡量 Top-K 覆盖了多少相关证据,适合检查第一阶段是否漏召回;MRR 只关注第一个相关结果出现得多早;nDCG@K 同时考虑排序位置和分级相关性。检索指标只能说明证据是否被找到,不能替代答案正确性和忠实度评估。
展开说明
设一个问题共有 R 个已标注相关文档,Top-K 找到其中 r 个:
- Recall@K = r / R:强调覆盖率。若每题只标一个标准证据,它会退化为是否命中的 0/1 指标。
- Precision@K = r / K:反映候选中的噪声比例,但当相关文档很少时会受 K 影响较大。
- Hit@K:Top-K 中至少有一个相关结果就记为 1,不应与一般定义的 Recall@K 混用。
- MRR:对每题第一个相关结果排名的倒数取平均,适合只需要一个正确入口的场景。
- nDCG@K:对不同相关等级赋予增益并按位置折损,再用理想排序归一化,适合“核心证据、辅助证据、无关”这类分级标注。
Chunk 级标注、文档级标注和“包含答案字符串”并不等价,应事先定义什么算相关。
工程实践
离线集要覆盖真实查询分布和难例,并保存 Query、相关 Chunk、标注理由与数据版本。按问题类型、租户、语言和文档来源切片,不只看总平均分。检索达标后,再固定检索结果评估生成器的答案正确性、上下文利用率和 Faithfulness;自动评审指标需要用人工样本校准。
常见追问
- Recall@K 与 Hit@K 为什么容易被混淆? Hit@K 只看前 K 是否至少命中一个相关项;Recall@K 计算所有相关项中被找回的比例,只有单相关项时二者才常相同。
- 只有一个相关文档时,MRR 和 Recall@K 各关注什么? Recall@K 只看它是否进入前 K,MRR 还奖励更靠前的位置,因此对上下文预算和首条命中更敏感。
- 检索指标很好但答案仍差,应怎样定位? 检查标签是否真正代表充分证据,再看打包是否截断或冲突,最后评估生成器的证据利用与引用忠实度。
一句话复习
Recall 看覆盖,MRR 看首个命中,nDCG 看分级相关性与位置;它们都不是最终答案质量。
参考资料
- 面经主题:Datawhale 真实面试题中的 RAG 分阶段评估
- 技术依据:BEIR、RAGAS
评论与补充
评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。
正在连接站内评论服务…
正在加载评论…
还没有评论,你可以先写下自己的理解或追问。