RAG评估指南:从检索到生成,全面解析LLM性能评估方法

news2025/2/23 3:35:36

前言

这一节我们将从时间线出发对RAG的评估方式进行对比,这些评估方式不仅限于RAG流程之中,其中基于LLM的评估方式更加适用于各行各业。

RAG常用评估方式

上一节我们讲了如何用ROUGE 这个方法评估摘要的相似度,由于篇幅限制,没有讲到图片与文本之间的评估,由于涉及图片与文本评估的场景多见于RAG流程中,包括检索评估方法生成评估方法,其中生成评估方法也就是通过对答案进行评估的方法,从而对LLM这个模型的生成能力进行间接的评估。也适用于我们的图片与上下文之间的评估。

此外本文还会对RAG中的其他重要内容的评估方式进行详尽的讲解。

检索评估指标

常用的检索评估方式有以下几种,包括文字和图片的检索评估,评估方式侧重点各不相同,没有好坏之分。

MetricExplanationRow level metric value
source recall@k% **这个指标表示在所有问答(Q&A)对中,至少有一个被标记为好的源(source)的文档在前k个块(chunks)中被找到的百分比。如果第一个source chunk index <k则为1,否则为0
all_img recall@k% **这个指标表示在所有问答对中,所有预期的图像都被成功检索出来的百分比。如果所有基本事实(ground-truth)的图像都被检索出来,则该指标的值为1,否则为0。
img_recall@k_mean这个指标表示图像召回的平均值即在前k个块中检索到的URL与基本事实的预期URL之间的召回率的平均值,其值在0到1之间。
img_recall@k_median这个指标表示图像召回的中位数即在前k个块中检索到的URL与基于事实的预期URL之间的召回率的中位数,其值在0到1之间。
img_precision@k_mean这个指标表示图像精确度的平均值即在前k个块中检索到的URL与基于事实的预期URL之间的精确度的平均值,其值在0到1之间。
img_precision@k_median这个指标表示图像精确度的中位数即在前k个块中检索到的URL与基于事实的预期URL之间的精确度的中位数,其值在0到1之间。
similarity_search_time_in_sec_mean这个指标表示平均的AI搜索块检索时间以秒为单位
similarity_search_time_in_sec_median这个指标表示中位数的AI搜索块检索时间以秒为单位
#_source_chunks_sum这个指标表示所有问答对中基于事实检索到的所有块的总数其值在0到k之间
#_img_chunks_sum这个指标表示所有问答对中基于事实检索到的所有图像块的总数其值在0到k之间

其中,**这里的 k 一般取10,5,3

生成评估指标

这些指标用于衡量一个系统在处理问答(Q&A)任务时的表现,特别是涉及到大型语言模型(LLM)和视觉增强服务时。下面是对表格中每个指标的解释:

MetricExplanationRow level metric value
all_cited_img recall%所有预期图像都被LLM引用的问答对的百分比如果LLM引用了所有基于事实的图像,则该指标的值为1,否则为0。
cited_img_recall_mean引用图像召回的平均值即生成答案中URL与基于事实的预期URL之间的召回率的平均值,其值在0到1之间。
cited_img_recall_median引用图像召回的中位数即生成答案中URL与基于事实的预期URL之间的召回率的中位数,其值在0到1之间。
cited_img_precision_mean引用图像精确度的平均值即生成答案中URL与基于事实的预期URL之间的精确度的平均值,其值在0到1之间。
cited_img_precision_median引用图像精确度的中位数即生成答案中URL与基于事实的预期URL之间的精确度的中位数,其值在0到1之间。
cited_img_f1_mean引用图像F1分数的平均值F1分数是召回率和精确度的调和平均数,计算公式为 F1=2∗cited_img_recall∗cited_img_precisioncited_img_recall+cited_img_precisionF1=2∗cited_img_recall+cited_img_precisioncited_img_recall∗cited_img_precision​。
cited_img_f1_median引用图像F1分数的中位数F1分数是召回率和精确度的调和平均数,计算公式为 F1=2∗cited_img_recall∗cited_img_precisioncited_img_recall+cited_img_precisionF1=2∗cited_img_recall+cited_img_precisioncited_img_recall∗cited_img_precision​。
chat_query_time_in_sec_mean端到端响应时间的平均值以秒为单位
chat_query_time_in_sec_median端到端响应时间的中位数以秒为单位
inference_prompt_tokens_sum输入到LLM的总token数
inference_completion_tokens_sumLLM用于回答的输出token数
vision_prompt_tokens_sum输入到视觉增强服务的总token数
vision_completion_tokens_sum视觉增强服务输出的token数。
gpt_correctness score>3%正确性得分高于3的问答对的百分比。
gpt_correctness_score_mean正确性得分的平均值得分范围是1到5。
gpt_correctness_score_median正确性得分的中位数得分范围是1到5。

表格的描述强调了这些指标的重要性,它们提供了对系统每个部分有效性的宝贵见解。这些指标有助于分别衡量系统的搜索能力和生成部分,以便理解实验对每个组件的影响。

RAG常用实验改进流程

我们通过系统地测试不同的方法进行实验,一次调整一个配置设置并评估其对预定义基线的影响。使用下面概述的特定检索和生成指标来评估性能。对这些指标的详细分析有助于我们决定是否使用新配置更新基线或保留现有配置。

image.png

Q&A 评估数据集

为了在实验过程中进行准确评估,整理一组多样化的问答对至关重要。这些问答对应涵盖一系列文章,涵盖各种数据格式、长度和主题。这种多样性可确保全面的测试和评估,有助于提高结果和所获见解的可靠性。以下是可供参考的问答数据集示例。

image.png

 好的数据集应该确保问答数据集中的问题均衡,既有来自文本的问题,也有来自图像和文本的问题,还有一些问题仅来自图像。还确保问题分布在各种源文档中

当评估集相对较小时,可以通过纳入各种边缘情况来确保其多样性。可以从彻底的探索性数据分析 (EDA) 开始,图片中的例子提取了诸如文章长度、表格长度和文本表格数量以及图像类型、分辨率和图像数量等特征。然后,仔细地将评估集分布在这些特征上,以实现特征空间的全面表示和稳健覆盖。此外,该系统还支持同一问题的替代来源和图像。

评估图片实操

# 模拟的检索结果,即检索算法返回的结果
retrieved_images = ['img1.jpg', 'img2.jpg', 'img3.jpg', 'img4.jpg', 'img5.jpg']

# 真实的标注结果,即与查询图像相关的所有图像
ground_truth_images = ['img1.jpg', 'img2.jpg', 'img3.jpg', 'img6.jpg', 'img7.jpg']

# 计算召回率
def calculate_recall(retrieved, ground_truth):
    # 将列表转换为集合,以便使用集合操作
    retrieved_set = set(retrieved)
    ground_truth_set = set(ground_truth)
    
    # 计算召回率
    recall = len(retrieved_set.intersection(ground_truth_set)) / len(ground_truth_set)
    return recall

# 调用函数计算召回率
recall = calculate_recall(retrieved_images, ground_truth_images)

print(f"召回率: {recall:.2f}")

我们这里用比较简单的方式抽象一下,具体从markdown中提取图像的标签的细节就不罗嗦了,实际上是差不多的

image.png

各评估方式综述

评估方法衡量我们系统的表现。对每个摘要进行手动评估(人工审核)既耗时又费钱,而且不可扩展,因此通常用自动评估来补充。许多自动评估方法试图衡量人类评估者会考虑的文本质量。这些质量包括流畅性、连贯性、相关性、事实一致性和公平性。内容或风格与参考文本的相似性也是生成文本的重要质量。

下图包括用于评估 LLM 生成内容的许多指标及其分类方法。

image.png

Reference-based Metrics

基于参考的指标用于将生成的文本与参考(人工注释的地面实况文本)进行比较。许多此类指标是在 LLM 开发之前为传统 NLP 任务开发的,但仍然适用于 LLM 生成的文本。

N-gram based metrics

指标 BLEU (Bilingual Evaluation Understudy), ROUGE (Recall-Oriented Understudy for Gisting Evaluation), and JS divergence (JS2)https://arxiv.org/abs/2010.07100) 是基于重叠的指标,使用 n-gram 来衡量输出文本和参考文本的相似性。

BLEU Score

BLEU(双语评估测试)分数用于评估从一种自然语言到另一种自然语言的机器翻译文本的质量。因此,它通常用于机器翻译任务,但也用于其他任务,如文本生成、释义生成和文本摘要。其基本思想是计算精度,即参考翻译中候选词的比例。通过将单个翻译片段(通常是句子)与一组高质量的参考翻译进行比较,计算出分数。然后,将这些分数在整个语料库中取平均值,以估计翻译的整体质量。评分时不考虑标点符号或语法正确性。

很少有人工翻译能获得完美的 BLEU 分数,因为完美的分数表明候选译文与其中一个参考译文完全相同。因此,没有必要获得完美的分数。考虑到随着多个参考译文的增加,匹配的机会更多,我们鼓励提供一个或多个参考译文,这将有助于最大化 BLEU 分数。

P=mwtP=wt​m​ m:参考中的候选词数。*wt:候选中的单词总数。

通常,上述计算会考虑目标中出现的候选单词或单元词组。但是,为了更准确地评估匹配,可以计算二元词组甚至三元词组,并对从各种 n 元词组获得的分数取平均值,以计算总体 BLEU 分数。

ROUGE

与 BLEU 分数相反,面向召回率的摘要评估 (ROUGE) 评估指标衡量的是召回率。它通常用于评估生成文本的质量和机器翻译任务。但是,由于它衡量的是召回率,因此它用于摘要任务。在这些类型的任务中,评估模型可以召回的单词数量更为重要。

ROUGE 类中最流行的评估指标是 ROUGE-N 和 ROUGE-L:

Rouge-N:测量参考(a)和测试(b)字符串之间匹配的“n-gram”的数量。Precision=在 a 和 b 中发现的 n-gram 数量b 中的 n-gram 数量Precision=b 中的 n-gram 数量在 a 和 b 中发现的 n-gram 数量​ Recall=在 a 和 b 中发现的 n-gram 数量a 中的 n-gram 数量Recall=a 中的 n-gram 数量在 a 和 b 中发现的 n-gram 数量​ Rouge-L:测量参考(a)和测试(b)字符串之间的最长公共子序列 (LCS)。 Precision=LCS(a,b)b 中的单元词数量Precision=b 中的单元词数量LCS(a,b)​ Recall=LCS(a,b)a 中的单元词数量Recall=a 中的单元词数量LCS(a,b)​ 对于 Rouge-N 和 Rouge-L: F1=2×precisionrecallF1=recall2×precision​

Text Similarity metrics

文本相似度指标评估器专注于通过比较文本元素之间单词或单词序列的重叠来计算相似度。它们可用于为 LLM 和参考标准文本的预测输出生成相似度分数。这些指标还可以指示模型在各个任务中的表现如何。

Levenshtein Similarity Ratio

编辑相似度比率是用于衡量两个序列之间相似度的字符串指标。此度量基于编辑距离。通俗地说,两个字符串之间的编辑距离是将一个字符串更改为另一个字符串所需的最小单字符编辑(插入、删除或替换)次数。编辑相似度比率可以使用编辑距离值和两个序列的总长度来计算,定义如下:

编辑相似度比率(简单比率): Lev.ratio(a,b)=(∣a∣+∣b∣)−Lev.dist(a,b)∣a∣+∣b∣Lev.ratio(a,b)=∣a∣+∣b∣(∣a∣+∣b∣)−Lev.dist(a,b)​ 其中 |a| 和 |b| 分别是 a 和 b 的长度。

从简单编辑相似度比率中衍生出几种不同的方法:

部分比率:通过取最短字符串计算相似度,并将其与较长字符串中相同长度的子字符串进行比较。

标记排序比率:首先将字符串拆分为单个单词或标记,然后按字母顺序对标记进行排序,最后将它们重新组合成一个新字符串,以此计算相似度。然后使用简单比率方法比较这个新字符串。

Token-set Ratio:首先将字符串拆分成单个单词或者Token,然后计算两个字符串之间Token集的交集与并集,以此来计算相似度。

Semantic Similarity metrics

BERTScore, MoverScore 和 Sentence Mover Similarity (SMS) 这些指标都依赖于语境化嵌入来衡量两段文本之间的相似性。虽然与基于 LLM 的指标相比,这些指标相对简单、快速且计算成本低廉,但研究表明,它们与人类评估者的相关性较差、缺乏可解释性、固有偏见、对各种任务的适应性较差,并且无法捕捉语言中的细微差别。

两个句子之间的语义相似度是指它们的含义有多紧密相关。为此,首先将每个字符串表示为一个特征向量,以捕获其语义含义。一种常用的方法是生成字符串的嵌入(例如,使用 LLM),然后使用余弦相似度来测量两个嵌入向量之间的相似度。更具体地说,给定一个表示目标字符串的嵌入向量 (A) 和一个表示参考字符串的嵌入向量 (B),余弦相似度计算如下:

余弦相似度=A⋅B∣∣A∣∣∣∣B∣∣余弦相似度=∣∣A∣∣∣∣B∣∣A⋅B​

如上所示,该度量测量两个非零向量之间角度的余弦,范围从 -1 到 1。1 表示两个向量相同,-1 表示它们不相似。

Reference-free Metrics

无参考(基于上下文)指标会为生成的文本生成分数,并且不依赖于基本事实。评估基于上下文或源文档。许多此类指标都是为了应对创建基本事实数据的挑战而开发的。这些方法往往比基于参考的技术更新,反映了随着 PTM 变得越来越强大,对可扩展文本评估的需求日益增长。这些指标包括基于质量、基于蕴涵、基于事实、基于问答 (QA) 和基于问题生成 (QG) 的指标。

  • 基于质量的摘要指标。这些方法检测摘要是否包含相关信息。SUPERT质量衡量摘要与基于 BERT 的伪参考的相似性,而 BLANC质量衡量两个掩码标记重建的准确性差异。ROUGE-C是 ROUGE 的修改版,无需参考,并使用源文本作为比较的上下文。
  • 基于蕴涵的指标。基于蕴涵的指标基于自然语言推理 (NLI) 任务,对于给定的文本(前提),它确定输出文本(假设)是否蕴涵、与前提相矛盾或破坏前提 [24]。这有助于检测事实不一致。 SummaC (Summary Consistency) benchmark 、FactCC和 DAE (Dependency Arc Entailment)指标可用作检测与源文本的事实不一致的方法。基于蕴涵的指标被设计为带有“一致”或“不一致”标签的分类任务。
  • 基于事实性、QA 和 QG 的指标。基于事实性的指标(如 SRLScore (Semantic Role Labeling)和 QAFactEval)评估生成的文本是否包含与源文本不符的不正确信息。基于 QA(如 QuestEval)和基于 QG 的指标被用作另一种衡量事实一致性和相关性的方法。

与基于参考的指标相比,无参考指标与人类评估者的相关性有所提高,但使用无参考指标作为任务进度的单一衡量标准存在局限性。一些 limitations包括对其底层模型输出的偏见和对更高质量文本的偏见。

点击RAG评估指南:从检索到生成,全面解析LLM性能评估方法查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2253733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高危端口汇总(Summary of High-Risk Ports)

高危端口汇总 能关闭就关闭 &#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解…

电子病历静态数据脱敏路径探索

一、引言 数据脱敏&#xff08;Data Masking&#xff09;&#xff0c;屏蔽敏感数据&#xff0c;对某些敏感信息&#xff08;比如patient_name、ip_no、ad、no、icd11、drug等等 &#xff09;通过脱敏规则进行数据的变形&#xff0c;实现隐私数据的可靠保护。电子病历作为医疗领…

黑马微服务开发与实战学习笔记_导论

系列博客目录 文章目录 系列博客目录为什么学微服务&#xff1f;定义 为什么学微服务&#xff1f; 从下图搜索指数可以看出&#xff0c;微服务热度不减 公司中很多微服务的应用。 公司岗位要求中很多微服务的身影。 定义 微服务是一种软件架构风格&#xff0c;它是以专注于…

Python从入门到入狱

Python是从入门到入狱&#xff1f;这个充满调侃意味的说法在程序员圈子里流传甚广。表面看&#xff0c;它似乎是在嘲笑这门语言从简单易学到深陷麻烦的巨大反差&#xff0c;实际上却隐藏着很多值得深思的问题。要解读这个话题&#xff0c;得从Python的特点、使用场景以及潜在风…

网安瞭望台第9期:0day 情报,OAuth 2.0授权流程学习

国内外要闻 Veeam 修补服务提供商控制台关键 RCE 漏洞 Veeam 发布了安全更新以解决影响服务提供商控制台&#xff08;VSPC&#xff09;的一个关键漏洞&#xff0c;该漏洞可能为在易受攻击的实例上执行远程代码创造条件。此漏洞被追踪为 CVE-2024-42448&#xff0c;其 CVSS 评分…

Qt复习学习

https://www.bilibili.com/video/BV1Jp4y167R9/?spm_id_from333.999.0.0&vd_sourceb3723521e243814388688d813c9d475f https://subingwen.cn/qt/qt-primer/#1-4-Qt%E6%A1%88%E4%BE%8B https://subingwen.cn/qt/ https://download.qt.io/archive/qt/1.1Qt的特点 1.2QT中的…

视频监控集中管理方案设计:Liveweb视频汇聚方案技术特点与应用

随着科技的发展&#xff0c;视频监控平台在各个领域的应用越来越广泛。然而&#xff0c;当前的视频监控平台仍存在一些问题&#xff0c;如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果&#xff0c;也制约了视频监控平台的发展。 为了解决这些问…

【算法】图论——树的重心

目录 题目解析 算法原理 图的存储 算法实现 题目解析 题目解析 给定一颗树&#xff0c;树中包含n个结点&#xff08;编号&#xff09;和n-1条无向边。请找到树的重心&#xff0c;并输出将重心删除后&#xff0c;剩余各个连通块中点数的最大值。 什么是重心&#xff1f; 重…

STM32 进阶 定时器 2基本定时器 基本定时器中断案例:LED闪烁

基本定时器 基本定时器TIM6和TIM7各包含一个16位自动装载计数器&#xff0c;由各自的可编程预分频器驱动。 这2个定时器是互相独立的&#xff0c;不共享任何资源。 这个2个基本定时器只能向上计数&#xff0c;由于没有外部IO&#xff0c;所以只能计时&#xff0c;不能对外部…

51单片机(STC89C52RC版本)学习笔记(更新中...)

文章目录 参考资料1. 准备工作1.1 win10配置51单片机开发环境1.1 Ubuntu配置51单片机开发环境问题1&#xff1a;mcs51/8051.h依赖于mcs51/lint.h问题2&#xff1a;提示找不到头文件mcs51/8051.h 2. 认识51单片机2.1 STC89C52单片机2.2 管脚图2.3 原理图2.4 按键抖动2.5 头文件说…

USB 声卡全解析:提升音频体验的得力助手

在当今数字化的时代&#xff0c;音频领域的追求愈发多元。无论是热衷聆听高品质音乐的爱好者&#xff0c;还是在专业音频工作中精雕细琢的人士&#xff0c;亦或是在游戏世界里渴望极致音效沉浸的玩家&#xff0c;都始终在寻觅能让音频体验更上一层楼的妙法。而 USB 声卡&#x…

计算机的错误计算(一百七十四)

摘要 探讨 MATLAB 关于计算机的错误计算&#xff08;一百七十三&#xff09;中多项式的秦九韶&#xff08;或Horner&#xff09;形式的计算误差。 在计算机的错误计算&#xff08;一百七十三&#xff09;中&#xff0c;我们讨论了一个多项式的计算误差。本节探讨其对应秦九韶&…

Magento2如何创建CRUD Models

Mageno2 Model的创建不同于其他框架&#xff0c;需要3个不同目录层级的文件 例如需要为表hello_test创建model&#xff1a; 1、app/code/Hello/Test/Model/Test.php <?phpnamespace Hello\Test\Model;class Test extends \Magento\Framework\Model\AbstractModel {protec…

Visual Studio 2022 项目配置常用选项

作为一名C++开发者,经常需要配置第三方库,今天来跟大家截图一下,方便大家快速配置: 头文件包含目录: 或者: 库文件包含目录:

基于Vue实现的移动端手机商城项目 电商购物网站 成品源码

&#x1f4c2;文章目录 一、&#x1f4d4;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站演示 &#x1f4f8;部分截图 &#x1f3ac;视频演示 五、⚙️网站代码 &#x1f9f1;项目结构 &#x1f492;vue代码预览 六、&#x1f527;完整…

PHP使用RabbitMQ(正常连接与开启SSL验证后的连接)

代码中包含了PHP在一般情况下使用方法和RabbitMQ开启了SSL验证后的使用方法&#xff08;我这边消费队列是使用接口请求的方式&#xff0c;每次只从中取出一条&#xff09; 安装amqp扩展 PHP使用RabbitMQ前&#xff0c;需要安装amqp扩展&#xff0c;之前文章中介绍了Windows环…

uniapp h5 vue3 m3u8 和 mp4 外链视频播放

m3u8视频播放 使用mui-player 和hls.js。 安装npm install mui-player hls.js我的版本是"hls.js": "^1.5.17"和"mui-player": "^1.8.1"使用 页面标签&#xff1a; 引用&#xff1a; 点击目录播放视频&#xff1a; m3u8视频播放&a…

给el-table表头添加icon图标,以及鼠标移入icon时显示el-tooltip提示内容

在你的代码中&#xff0c;你已经正确地使用了 el-tooltip 组件来实现鼠标划过加号时显示提示信息。el-tooltip 组件的 content 属性设置了提示信息的内容&#xff0c;placement 属性设置了提示信息的位置。 你需要确保 el-tooltip 组件的 content 属性和 placement 属性设置正…

node.js实现分页,jwt鉴权机制,token,cookie和session的区别

文章目录 1. 分⻚功能2. jwt鉴权机制1.jwt是什么2.jwt的应用3.优缺点 3. cookie&#xff0c;token&#xff0c;session的对比 1. 分⻚功能 为什么要分页 如果数据量很⼤&#xff0c;⽐如⼏万条数据&#xff0c;放在⼀个⻚⾯显⽰的话显然不友好&#xff0c;这时候就需要采⽤分⻚…

大数据新视界 -- Hive 元数据管理:核心元数据的深度解析(上)(27 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…