

RAG评估标准#
在探索和优化 RAG(检索增强生成器)的过程中,如何有效评估其性能已经成为关键问题。本章节主要围绕评估方法、RAG 应具备的关键指标、它的核心能力,以及一些常用的评估框架进行讨论。
主要有两种方法来评估 RAG 的有效性:检索模块评估和生成模块评估(个人理解,不一定对):
- 检索模块:评估 RAG 检索模块的性能通常使用一系列指标,这些指标用于衡量系统(如搜索引擎、推荐系统或信息检索系统)在根据查询或任务排名项目的有效性。这些指标包括命中率 (Hit Rate)、平均排名倒数 (MRR)、归一化折扣累积增益 (NDCG)、精确度 (Precision) 等。
- 生成模块:生成模块指的是将检索到的文档与查询相结合,形成增强或合成的输入。这与最终答案或响应的生成不同,后者通常采用端到端的评估方式。生成模块的评估主要关注上下文相关性,即检索到的文档与查询问题的关联度。
检索模块的评估#
检索阶段的评估,核心是衡量 “检索器” 找到的文档或文本块(称为“候选文档”)的质量。它不关心答案生成得怎么样,只关心“找得到”和“找得准”。
检索阶段的核心评估指标#
主要指标来源于信息检索领域,经典且有效。
1. 命中率(Hit Rate)#
定义:衡量系统是否至少找到了一个正确答案所在的文档。
- 关注点:检索的广度和可靠性。是否漏掉了关键信息?
- 计算方式:
(至少检索到一个相关文档的问题数量)/ (总问题数量) - 特点:非0即1,非常直观。是评估检索系统的最低标准。
例子:
- 问题:“苹果公司最新款iPhone有哪些新特性?”
- 参考答案位于文档A、B、C中。
- 场景1:检索器返回了文档B、D、E。 → 命中(Hit)!因为包含了相关文档B。
- 场景2:检索器返回了文档D、E、F。 → 未命中(Miss)!完全没找到相关文档。
- 如果测试100个问题,有85次至少命中一个相关文档,则命中率为 85%。
2. 平均精度均值(Mean Average Precision, mAP)#
定义:这是一个更精细的指标,同时考虑了排序质量。它不仅关心是否找到了相关文档,还关心找到的相关文档是否排在了前面。
- 关注点:检索结果的排序好坏。用户通常只看前几条结果。
- 计算方式:先计算每个问题的平均精度(AP),再对所有问题的AP取平均值。
- 精度(Precision)@K:在前K个结果中,相关文档的比例。
- 平均精度(AP):在不同召回率水平下的精度平均值(计算略复杂,但可简单理解为对排序好坏的量化)。
例子:
- 问题:“Python中如何连接MySQL数据库?”
- 相关文档是 Doc2 和 Doc5。
- 场景1(排序好):检索器返回顺序为
[Doc2, Doc5, Doc7, Doc8]。- 前1个结果(Doc2):精度 = 1/1 = 1.0
- 前2个结果(Doc2, Doc5):精度 = 2/2 = 1.0
- 前3个结果(Doc2, Doc5, Doc7):精度 = 2/3 ≈ 0.67
- AP值会很高(接近1.0)。
- 场景2(排序差):检索器返回顺序为
[Doc7, Doc8, Doc2, Doc5]。- 前1个结果(Doc7):精度 = 0/1 = 0
- 前2个结果(Doc7, Doc8):精度 = 0/2 = 0
- 前3个结果(Doc7, Doc8, Doc2):精度 = 1/3 ≈ 0.33
- 前4个结果(Doc7, Doc8, Doc2, Doc5):精度 = 2/4 = 0.5
- AP值会很低。
- mAP就是所有问题的AP的平均值。mAP越高,说明检索器不仅找得准,还排得好。
3. 归一化折损累计增益(Normalized Discounted Cumulative Gain, nDCG)#
定义:mAP的进阶版,适用于相关度有分级的情况(而mAP通常认为文档只有“相关”和“不相关”两种)。
- 关注点:分级相关性和排序位置。
- 计算方式:
- 增益(Gain):给每个文档一个相关性分数(如,非常相关=3,相关=2,有点相关=1,不相关=0)。
- 折损(Discounted):根据排名位置对增益进行打折,排名越靠后,打折越狠。
- 累计增益(CG/DCG):将前K个结果的(折损后)增益加起来。
- 归一化(nDCG):用“理想排序”下的DCG进行归一化,值在0到1之间。
例子:
- 问题:“什么是机器学习?”
- 检索结果及真实相关性:
- Doc1(“机器学习经典算法详解”):非常相关(3分)
- Doc2(“人工智能发展简史”):有点相关(1分)
- Doc3(“深度学习入门指南”):相关(2分)
- 场景1(实际排序):
[Doc2(1分), Doc3(2分), Doc1(3分)]→ 排序很差,最重要的Doc1排最后。 - 场景2(理想排序):
[Doc1(3分), Doc3(2分), Doc2(1分)]→ 完美排序。 - nDCG会计算实际排序的DCG与理想排序的DCG的比值。场景1的nDCG会远低于场景2。nDCG越接近1,说明排序质量越高。
4. 召回率(Recall)#
定义:在检索阶段,指检索到的相关文档数占所有真实相关文档数的比例。
- 关注点:检索的全面性。是否把所有相关的文档都找出来了?
- 计算方式:
(检索到的相关文档数)/ (数据集中所有相关文档数) - 注意:这个“召回率”与网页中提到的“上下文召回率”概念相似,但评估对象不同。这里是评估文档块的召回,而“上下文召回率”是评估答案关键信息点的召回。
例子:
- 问题:“RAG系统有哪些评估指标?”
- 知识库中总共有5个文档与此问题相关(DocA, DocB, DocC, DocD, DocE)。
- 检索器只返回了2个文档(DocA, DocC)。
- 召回率 = 2 / 5 = 40%。说明系统漏掉了60%的相关资料。
生成模块的评估#
生成模块评估是对 RAG 模型对特定输入生成的最终响应进行评估,涉及模型生成的答案与输入查询的相关性和一致性。
从内容生成的目标来看,评估可分为无标签和有标签的内容评估。无标签内容的评估指标包括答案的准确性、相关性和无害性,而有标签内容的评估指标则包括准确率 (Accuracy) 和精确匹配 (EM)。此外,根据评估方法的不同,端到端评估可分为人工评估和使用大语言模型 (LLM) 的自动评估。总的来说,这些是 RAG 端到端评估的常规方法。特定领域的 RAG 应用还会采用特定的评估指标,如问答任务的精确匹配 (EM),摘要任务的 UniEval 和 E-F1,以及机器翻译的 BLEU。
这些指标有助于理解 RAG 在各种特定应用场景中的表现。
检索评估 vs. 生成评估#
| 评估层面 | 核心指标 | 评估对象 | 要解决的问题 |
|---|---|---|---|
| 检索阶段 | 命中率(Hit Rate)、mAP、nDCG、召回率(Recall) | 检索器返回的文档/文本块列表 | “找得到”吗?“找得全”吗?“排得好”吗? |
| 生成阶段 | 答案忠实度、答案正确性、答案相关性 | LLM生成的最终答案 | “答得对”吗?“基于上下文”吗?“答到点子上”吗? |
| 混合指标(连接检索与生成) | 上下文召回率、上下文相关性 | 检索到的文档块 + 参考答案/问题 | 检索结果是否为生成好答案打下了基础? |
总结#
- 检索指标是原因,答案指标是结果。一个检索指标很差的系统(比如命中率低、mAP低),几乎不可能生成出高忠实度、高正确性的答案。
- 在实际评估中,通常会结合使用这两类指标:
- 先用检索指标诊断检索器的问题(如Embedding模型不好、分块策略不佳、排序模型失效)。
- 再用答案指标评估整个端到端系统的最终效果。