如何评估一个 RAG 系统?

如何评估一个 RAG 系统?Hit@K、MRR、召回率和答案支撑度分别怎么看?
这是一道考察 RAG 系统评估体系的综合题。面试官想看你能不能说清楚:检索阶段用什么指标、生成阶段用什么指标、这些指标之间有什么关系。
一、RAG 评估的整体框架:检索是守门员,生成是裁判
先搞清楚 RAG 评估的整体结构。整个系统分成两大部分:
检索阶段负责从知识库里"抄资料"——用户问"苹果公司是哪年成立的",系统要从海量文档里找到相关上下文。检索质量决定了你有多少原材料可以用于回答。
生成阶段负责"写答案"——基于找到的上下文,让大模型组织出最终回答。生成质量取决于你抄到的资料好不好。
这就好比一场考试:检索阶段是"翻书找资料",你能找到多少相关章节、找到的内容对不对,决定了你的原材料;生成阶段是"结合资料写答案",原材料的质量直接影响最终成绩。

记住这个框架,后面讲的指标都是围绕这两个阶段展开的。
二、召回率 Recall@K——看系统有没有"漏网之鱼"
Recall@K 回答的问题是:Top-K 个检索结果里,是不是把相关的文档都找出来了?
公式很简单:
Recall@K = Top-K中相关文档数 / 总相关文档数比如你问"Python的基本数据类型有哪些",知识库里共有 5 篇相关文档,你的系统返回了 8 个结果,其中 3 个是相关的,那 Recall@8 = 3/5 = 60%。
这个指标的核心是全面性。K 越大,你能看的文档越多,召回率理论上越高。但 K 太大又会带来问题:计算成本上升、噪声增加、后面的生成模型要被不相关的上下文干扰。
用高考改卷来理解就清楚了。老师批改试卷时要把所有得分点都找到,漏掉任何一个都会扣分。Recall@K 就是看你的检索系统有没有"漏掉"重要的相关文档。

关键点:Recall@K 关心的是"有没有",不是"排第几"。
三、MRR 和 Hit@K——一个看"快不快",一个看"有没有"
这两个指标经常一起出现,但考察的维度不同。
MRR(平均倒数排名)
MRR 看的是:第一个相关文档排在哪里。
公式是:
MRR = 平均(1 / 第一个相关文档的排名)排名越靠前,分数越高。第 1 名得 1 分,第 2 名得 0.5 分,第 3 名得 0.333 分。相关文档出现在第 10 名,就只有 0.1 分。
MRR 的核心是位置权重。它假设越靠前的结果越重要,用户最想看到的结果最好就在第一屏。
Hit@K(命中率)
Hit@K 更简单:Top-K 里有哪怕 1 个相关文档就算成功。
你问"什么是 RAG",返回的 10 个结果里只要有 1 个包含 RAG 的解释,Hit@10 = 1。
这是二元的——只有"有"和"没有",不关心排第几。
用考试类比一下:Hit@K 像"及格线",60 分就行,有一个相关文档就行;MRR 像"追求高分",你不仅要有,而且越靠前越好。

注意:面试时可能会问 Hit@K 和 Hit Rate 是不是同一个东西。严格来说,Hit Rate 常常指代 Hit@K,但在不同项目里定义可能不同,实际沟通时要先确认清楚。
四、指标组合使用——工程实践中怎么选?
单独看任何一个指标都有盲区。工程实践中通常是组合使用。
Recall@K + MRR/NDCG 是经典组合:
- Recall 看的是"有没有相关文档"
- MRR/NDCG 看的是"排得好不好"
这两个维度是正交的。看个例子:
排序A返回了 [相关, 相关, 不相关, 不相关, 不相关]
排序B返回了 [不相关, 不相关, 相关, 相关, 不相关]
两个排序的 Recall@5 可能都是 40%,但排序A的 MRR = 0.5,排序B的 MRR = 0.25。排序A明显更好。
用购物推荐来理解:Recall 像"商品种类是否齐全",用户想要的商品至少要被找到;MRR 像"最想要的商品排第几位",用户最想买的衬衫最好就在第一屏,而不是翻到第三屏才看到。

实际选择建议:
- FAQ 问答场景:优先看 MRR,第一个结果准不准直接影响用户体验
- 多 chunk 召回场景:用 NDCG,因为相关性可能有程度差异
- 整体评估:至少用 Recall@K + MRR 组合,单用一个指标容易有盲区
五、NDCG——排序评估的"黄金指标"
NDCG 是排序评估里最精细的指标。如果你面的是比较深入的岗位,面试官很可能追问这个。
NDCG 解决了两个问题:
第一,支持分级相关性。不是只有"相关/不相关"两种情况,可以是"非常相关(5星)、比较相关(4星)、一般(3星)、不太相关(2星)、不相关(1星)"。这种分级更符合实际情况。
第二,归一化可比较。NDCG 最后会除以"理想最优情况下的 DCG 值",结果永远在 0-1 之间。不同查询、不同数据集之间可以直接比较。
公式比较复杂,核心思想是:越相关的文档排在越前面,分数越高。
用搜索结果来理解。你在 Google 搜"如何泡咖啡",最相关的结果应该排第 1 位,次相关的排第 2 位。如果排反了,NDCG 分数就会下降。

什么场景用 NDCG:
- 相关性有程度差异时(不能用二元判断)
- 需要跨数据集、跨查询比较时
- 对排序质量要求较高的场景
NDCG 是目前排序评估的"黄金标准",但计算成本也最高。实际项目中要根据场景权衡。
面试怎么答
基础版(直接背):
RAG 评估分检索和生成两个阶段。检索阶段用 Recall@K、MRR、Hit@K 评估,生成阶段用答案支撑度评估。
Recall@K 衡量检索的全面性,看 Top-K 中是否包含所有相关文档,漏掉就算召回不足。MRR 衡量第一个相关文档的排名位置,排名越靠前越好。Hit@K 只关心 Top-K 中是否存在至少 1 个相关文档,是及格线指标。答案支撑度看生成答案有没有可靠的上下文依据。
加分版(体现深度):
指标之间是互补关系。Recall 看"有没有",MRR/NDCG 看"排得好不好",需要组合使用。
我一般用 Recall@K + MRR 组合做整体评估。FAQ 场景优先 MRR,因为第一个结果准不准直接影响体验;多 chunk 场景用 NDCG,因为相关性有程度差异。
Hit@K 和 Hit Rate 在不同项目里定义可能不同,实际沟通时要先确认。
一句话总结
RAG 评估核心就两件事:检索阶段用 Recall@K/MRR/Hit@K 看"找没找到、排得好不好",生成阶段用答案支撑度看"答得有没有依据"。
