Soup's Blog

Back

RAG实战(六)RAG的评价指标Blur image

RAG评估标准#

在探索和优化 RAG(检索增强生成器)的过程中,如何有效评估其性能已经成为关键问题。本章节主要围绕评估方法、RAG 应具备的关键指标、它的核心能力,以及一些常用的评估框架进行讨论。

主要有两种方法来评估 RAG 的有效性:检索模块评估和生成模块评估(个人理解,不一定对):

  1. 检索模块:评估 RAG 检索模块的性能通常使用一系列指标,这些指标用于衡量系统(如搜索引擎、推荐系统或信息检索系统)在根据查询或任务排名项目的有效性。这些指标包括命中率 (Hit Rate)、平均排名倒数 (MRR)、归一化折扣累积增益 (NDCG)、精确度 (Precision) 等。
  2. 生成模块:生成模块指的是将检索到的文档与查询相结合,形成增强或合成的输入。这与最终答案或响应的生成不同,后者通常采用端到端的评估方式。生成模块的评估主要关注上下文相关性,即检索到的文档与查询问题的关联度。

检索模块的评估#

检索阶段的评估,核心是衡量 “检索器”​ 找到的文档或文本块(称为“候选文档”)的质量。它不关心答案生成得怎么样,只关心“找得到”和“找得准”。

检索阶段的核心评估指标#

主要指标来源于信息检索领域,经典且有效。

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)mAPnDCG召回率(Recall)检索器返回的文档/文本块列表“找得到”吗?“找得全”吗?“排得好”吗?
生成阶段答案忠实度答案正确性答案相关性LLM生成的最终答案“答得对”吗?“基于上下文”吗?“答到点子上”吗?
混合指标(连接检索与生成)上下文召回率上下文相关性检索到的文档块 + 参考答案/问题检索结果是否为生成好答案打下了基础

总结#

  • 检索指标是原因,答案指标是结果。一个检索指标很差的系统(比如命中率低、mAP低),几乎不可能生成出高忠实度、高正确性的答案。
  • 在实际评估中,通常会结合使用这两类指标:
    1. 先用检索指标诊断检索器的问题(如Embedding模型不好、分块策略不佳、排序模型失效)。
    2. 再用答案指标评估整个端到端系统的最终效果。
RAG实战(六)RAG的评价指标
http://www.soupcola.top/blog/rag_blogs/rag_blogs-6
Author Soup Cola
Published at 2026年1月31日