当前位置: 首页 > news >正文

RAG中的评估指标总结:BLEU、ROUGE、 MRR、MAP、nDCG、Precision@k、Recall@k 等

在构建现代信息检索系统(如 RAG、问答系统、搜索引擎、推荐系统)时,评估检索器的性能是至关重要的一步。选择合适的评估指标能帮助我们准确判断系统的优劣,进而优化排序、召回质量和用户体验。本文将系统性地介绍主流检索指标,包括其原理、示例和适用场景。

1. BLEU(Bilingual Evaluation Understudy)

用途:主要用于机器翻译、文本生成等任务,评估生成文本与参考文本的相似程度。

原理:

BLEU 基于n-gram 匹配,计算生成文本中有多少 n-gram 与参考文本中的 n-gram 匹配。

  • 支持 1-gram 到 4-gram 的加权平均。

  • 引入了brevity penalty(简短惩罚),防止模型生成非常短但准确的片段得高分。

式简化版

  • p_n: 第 n 阶 n-gram 的精确率

  • w_n: 权重,通常为均分

  • BP: brevity penalty

示例:

参考句子

the cat is on the mat

生成句子

the cat is on mat

1-gram 匹配:5 个词中有 4 个匹配("the", "cat", "is", "on")
2-gram 匹配:4 个 2-gram 中有 2 个匹配("the cat", "cat is")
BLEU 分数:约 0.75(简化计算)

2. ROUGE(Recall-Oriented Understudy for Gisting Evaluation)

用途:主要用于文本摘要、问答等生成任务。

原理:

ROUGE 更侧重于召回率(recall),衡量参考答案中有多少 n-gram 被生成答案覆盖。

常见变体:

  • ROUGE-N:n-gram 的召回率(如 ROUGE-1,ROUGE-2)

  • ROUGE-L:最长公共子序列(LCS)

  • ROUGE-W:带权 LCS

ROUGE-1 的定义与公式

ROUGE-1 衡量的是生成文本中与参考文本之间 unigram(单词)级别的重叠。它强调的是召回率(Recall)

变量说明:

  • 重叠的 unigram 数量:生成文本中与参考文本匹配的单词数(不重复计数)

  • 参考文本中的 unigram 总数:参考答案总共有多少个词

示例:

参考文本

the cat is on the mat

生成文本

the cat is on mat

  • 参考文本的 unigram 数:6(the, cat, is, on, the, mat)

  • 去重参考文本(可选,不常用):5(the, cat, is, on, mat)

  • 重叠 unigram 数量:5(the, cat, is, on, mat)

注意:默认情况下 ROUGE-1 计算的是召回率(也有变体计算 F1 分数或 Precision)

3. MRR(Mean Reciprocal Rank)

用途:常用于信息检索、问答系统中,用于衡量正确答案在候选列表中的排名。

原理:

对于每个查询,计算第一个相关(正确)答案的排名的倒数,然后对所有查询取平均。

  • rank_i:第 i 个查询中,第一个正确答案的排名

示例:

假设有三个查询:

  1. 正确答案在第 1 位 → reciprocal = 1

  2. 正确答案在第 3 位 → reciprocal = 1/3

  3. 正确答案在第 2 位 → reciprocal = 1/2

4. MAP(Mean Average Precision)是什么?

MAP 是衡量多个检索结果中,相关项排序整体质量的指标
它不仅考虑你是否找到了正确答案,还关注它们的排名位置和完整性

MAP 的评估原理(分两步):

第一步:计算 Average Precision(AP)

对于每个查询,AP 是该查询中多个正确答案的「加权精确率」,越早出现越高权重。

具体计算方式:

  • R:该查询的相关文档总数(即 ground truth 数量)

  • n:检索结果的总数(比如 top 10)

  • P(k):前 k个结果中的 precision(准确率)

  • rel(k):如果第 k 个结果是相关的,为 1;否则为 0

注意:只有当第 k 个文档是相关时,才把 P(k) 纳入计算

第二步:对多个查询取平均 → 得到 Mean Average Precision

示例讲解(一个查询)

假设检索返回以下结果(10 个文档):

[0, 1, 0, 1, 1, 0, 0, 0, 1, 0]

对应的 ground truth 中有 4 个相关文档(在位置 2、4、5、9)

步骤:

Rankrel(k)P(k)
10-
211/2 = 0.5
30-
412/4 = 0.5
513/5 = 0.6
6–80-
914/9 ≈ 0.444

MAP 的优势

  • 更全面地评价所有正确答案的排序质量

  • 非常适用于:

    • 信息检索

    • 问答系统(多个候选文档)

    • 文本匹配

    • 推荐系统

5. nDCG:Rerank 排序的首选指标

原理:
nDCG 考虑排名靠前的正确答案更重要,尤其适合有相关性等级的任务。

  • rel_i 是该位置文档的“相关性标签”(如 0,1,2,或 soft score)

  • IDCG 是最理想排序的 DCG(即把正确的放最前面)

  • 非常适合用于判断:是否把正确文档排在前面,排得越前,分越高

举个例子

假设 Ground Truth 有两个正确文档(doc2 和 doc4),我们 rerank 后得到如下排序:

[doc4, doc1, doc2, doc5, doc3]

我们给出以下 relevance 分数(0-1 表示是否相关):

relevance = [1, 0, 1, 0, 0]

那么:

  • MRR = 1/1 = 1.0(doc4 是第 1 个就是正确答案)

  • MAP = (1/1 + 2/3)/2 ≈ 0.83

  • nDCG@5 = 1.761 / 1.861 ≈ 0.946

 可以看出:nDCG 给了高度评价,因为两个相关项都排得靠前。

6. Precision@k

原理:
衡量前 k 个结果中正确文档的比例。

公式:

示例:
Top-5 结果中有 3 个正确:Precision@5 = 3/5 = 0.6

适用范围:

  • 精度导向的检索评估

  • 推荐系统

7. Recall@k

原理:
衡量 top-k 中找到了所有正确答案的比例。

公式:

示例:
正确答案有 4 个,top-10 中命中 3 个。
Recall@10 = 3/4 = 0.75

适用范围:

  • 重召回优先的任务,如 QA 文档覆盖

8. Hit@k

原理:
前 k 个结果中是否命中至少一个正确答案。

公式:

示例:
Top-3 命中 doc2:Hit@3 = 1

适用范围:

  • 快速评估检索是否"有用"

检索器评估常用指标一览

指标衡量内容是否考虑多个正确答案排名敏感常用于
Recall@k前 k 个中是否覆盖了所有正确答案✅ 是❌ 否QA, RAG 检索评估
Precision@k前 k 个中有多少是正确的✅ 是❌ 否检索与召回
MRR第一个正确答案排名的倒数❌ 否(只看第一个)✅ 是QA 单答案
MAP所有正确答案的排名质量✅ 是✅ 是多答案检索任务
nDCG@k正确答案分数随排名衰减的加权值✅ 是(带权)✅ 是检索排序优化
Hit@kTop-k 中是否至少包含一个正确答案✅ 是(但不计精度)❌ 否简易评估

http://www.lryc.cn/news/609700.html

相关文章:

  • Linux 安装与配置 MySQL 教程
  • 牛客网之华为机试题:HJ26 字符串排序
  • 直角坐标系里的四象限对NLP中的深层语义分析的积极影响和启示
  • debian 时间同步 设置ntp服务端 客户端
  • Petalinux驱动开发
  • Redis 常用数据结构以及单线程模型
  • Apache Camel 中 ProducerTemplate
  • 哪些第三方 Crate 可以直接用?
  • 深入解析 Apache Tomcat 配置文件
  • RK Android14 新建分区恢复出厂设置分区数据不擦除及开机动画自定义(一)
  • PHP-分支语句、while循环、for循环
  • Android 分析底电流高即功耗大的几个方面
  • 开疆智能ModbusTCP转Profient网关连接ER机器人配置案例
  • LeetCode 140:单词拆分 II
  • 机械设备制造企业:大型设备采购流程与注意事项
  • 百度翻译详解:包括PaddleNLP、百度AI开放平台、接口逆向(包括完整代码)
  • 晨控CK-GW08S与汇川AC系列PLC配置Ethernet/IP通讯连接手册
  • 【学习笔记】Manipulate-Anything(基于视觉-语言模型的机器人自动化操控系统)
  • Spark SQL:用SQL玩转大数据
  • ROS2机器人编程新书推荐-2025-精通ROS 2机器人编程:使用ROS 2进行复杂机器人的设计、构建、仿真与原型开发(第四版)
  • 力扣热题100——滑动窗口
  • Axure日期日历高保真动态交互原型
  • MySQL 约束知识体系:八大约束类型详细讲解
  • Java项目:基于SSM框架实现的电子病历管理系统【ssm+B/S架构+源码+数据库+毕业论文+远程部署】
  • Android 15.0 启动app时设置密码锁
  • 安卓264和265编码器回调编码数据写入文件的方法
  • Android进程基础:Zygote
  • 2025-08-04-零成本搭建 AI 应用!Hugging Face 免费 CPU 资源实战指南
  • Android Telephony 框架与横向支撑层
  • 如何选择一个容易被搜索引擎发现的域名?