自然语言处理: 第十七章RAG的评估技术RAGAS

news2024/11/14 19:04:38

论文地址:[2309.15217] RAGAS: Automated Evaluation of Retrieval Augmented Generation (arxiv.org)

项目地址: explodinggradients/ragas: Evaluation framework for your Retrieval Augmented Generation (RAG) pipelines (github.com)

上一篇文章主要介绍了RAG的优化技术,感兴趣的可以回顾下,本篇文章主要是介绍RAG技术的主流评估方法。



应用原理

在这里插入图片描述

RAG 系统性能评估的多个框架,都包含了几项独立的指标,例如总体答案相关性、答案基础性、忠实度和检索到的上下文相关性。例如本章主要介绍的的RAGAS 使用真实性和答案相关性来评价生成答案的质量,并使用经典的上下文精准度和召回率来评估 RAG 方案的检索性能,上述指标共同构成了RAGAs评分,用于全面评估RAG pipeline性能。出了上述四个指标,最核心的RAG的两个指标还是关于生成的答案的,所以RAG同样也提供了最下面两个评估指指标

  • Faithfulness(忠诚度) - generation: 衡量生成答案与给定上下文中的事实的一致性,越接近1越好。如果答案(answer)中提出的所有基本事实(claims)都可以从给定的上下文(context)中推断出来,则生成的答案被认为是忠实的 。为了计算这一点,首先从生成的答案中识别一组claims。然后,将这些claims中的每一项与给定的context进行交叉检查,以确定是否可以从给定的context中推断出它。忠实度分数由以下公式得出:

    在这里插入图片描述

  • Answer Relevancy(回答相关性)- generation:衡量生成的提示答案与问题的相关性,越接近1越好。

    当答案直接且适当地解决原始问题时,该答案被视为相关。重要的是,我们对答案相关性的评估不考虑真实情况,而是对答案缺乏完整性或包含冗余细节的情况进行惩罚。为了计算这个分数,LLM会被提示多次为生成的答案生成适当的问题,并测量这些生成的问题与原始问题之间的平均余弦相似度。基本思想是,如果生成的答案准确地解决了最初的问题,LLM应该能够从答案中生成与原始问题相符的问题。

  • Context Precision(内容准确性) - retrieval: 衡量检索的上下文内容与标准答案的相关性,理想情况下,所有相关文档块(chunks)必须出现在顶层。该指标使用question和计算contexts。

    在这里插入图片描述

  • Context recall(召回内容)- retrieval : 使用带注释的答案作为基本真理来衡量检索到的上下文的内容,衡量检索到的上下文(Context)与人类提供的真实答案(ground truth)的一致程度,它是根据ground truth和检索到的Context计算出来的。为了根据真实答案(ground truth)估算上下文召回率(Context recall),分析真实答案中的每个句子以确定它是否可以归因于检索到的Context。 在理想情况下,真实答案中的所有句子都应归因于检索到的Context。

    在这里插入图片描述

  • Answer semantic similarity(回答语义相似度): 评估生成的答案和标准答案的语义相似度,越接近1越好。

  • Answer correctness(回答准确性),评估生成答案和标准答案的准确性,越接近1越好。

(上述6个index 值都是【0,1】之间)



RAGAs的评估流程在文中有比较详细的描述,在此只摘抄关键字。

  • 开始 :启动准备和设置RAG应用的过程。
  • 数据准备 :加载和分块处理文档。
  • 设置向量数据库 :生成向量嵌入并存储在向量数据库中。
  • 设置检索器组件 :基于向量数据库设置检索器。
  • 组合RAG管道 :结合检索器、提示模板和LLM组成RAG管道。
  • 准备评估数据 :准备问题和对应的真实答案。
  • 构建数据集 :通过推理准备数据并构建用于评估的数据集。
  • 评估RAG应用 :导入评估指标并对RAG应用进行评估。
  • 结束 :完成评估过程。

整个流程如下图所示

在这里插入图片描述



除了RAGAS ,还有一个简单有效的检索器评估管道的例子可以在这里找到,它已被应用于编码器的微调部分。一个更高级的方法不仅考虑 命中率 ,还包括了常用的搜索引擎评估指标 平均倒数排名 (Mean Reciprocal Rank) ,以及生成答案的质量指标,如真实性和相关性,这在 OpenAI 的实用指南中有所展示。LangChain 提供了一个颇为先进的评估框架 LangSmith。在这个框架中,你不仅可以实现自定义的评估器,还能监控 RAG 管道内的运行,进而增强系统的透明度。

如果你正在使用 LlamaIndex 进行构建,可以尝试 rag_evaluator llama pack

快速入门

安装

!pip install ragas

或者源码安装

!git clone https://github.com/explodinggradients/ragas && cd ragas
!pip install -e .


快速评估


from datasets import Dataset 
import os
from ragas import evaluate
from ragas.metrics import faithfulness, answer_correctness

os.environ["OPENAI_API_KEY"] = "your-openai-key"

data_samples = {
    'question': ['When was the first super bowl?', 'Who won the most super bowls?'],
    'answer': ['The first superbowl was held on Jan 15, 1967', 'The most super bowls have been won by The New England Patriots'],
    'contexts' : [['The First AFL–NFL World Championship Game was an American football game played on January 15, 1967, at the Los Angeles Memorial Coliseum in Los Angeles,'], 
    ['The Green Bay Packers...Green Bay, Wisconsin.','The Packers compete...Football Conference']],
    'ground_truth': ['The first superbowl was held on January 15, 1967', 'The New England Patriots have won the Super Bowl a record six times']
}

dataset = Dataset.from_dict(data_samples)

score = evaluate(dataset,metrics=[faithfulness,answer_correctness])
score.to_pandas()

参考资料:

学习检索增强生成(RAG)技术,看这篇就够了——热门RAG文章摘译(9篇) - 知乎 (zhihu.com)

高级RAG(四):Ragas评估 - 知乎 (zhihu.com)

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

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

相关文章

【论文阅读笔记】Split frequency attention network for single image deraining

1.论文介绍 Split frequency attention network for single image deraining 用于单幅图像去噪的分频注意力网络 Paper Code 2023年 SIVP 2.摘要 雨纹对图像质量的影响极大,基于数据驱动的单图像去噪方法不断发展并取得了巨大的成功。然而,传统的卷积…

7大结构型设计模式

结构性设计模式是软件工程中常用的一类设计模式。 作用:主要用于处理类或对象之间的组合以实现更灵活、可扩展和可维护的代码结构。 这些模式通常涉及到类和对象之间的静态组合关系,以及如何将它们组织在一起以满足特定的设计目标。 结构型模式有&#x…

git设置别名及查看别名

设置别名 git config --global alias.lg "具体的参数"git config --global alias.lg "log --dateformat:%Y/%m/%d %H:%M:%S --prettyformat:%C(yellow)%h%C(reset) %C(bold blue)%ad%C(reset) %an %C(green)%s%C(reset)"查看别名 git config --list | fi…

新能源汽车小三电系统

小三电系统 新能源电动汽车的"小三电"系统,一般指车载充电机(OBC)、车载 DC/DC 变换器,和高压直流配电盒(PDU)。一辆纯电动汽车一般配备一台OBC 和一台车载 DC/DC 变换器。OBC将外部输入的交流电转化为直流电输出给电池,DC/DC衔接…

数据可视化实战(二)

将每个城市在每个月份平均PM2.5绘制成折线图 import pandas as pd import matplotlib.pyplot as plt df pd.read_excel(./PM2.5.xlsx)display(df.head(10)) df.shape # (161630, 15)城市年份月份日期小时季节PM2.5露点湿度压强温度风向累计风速降水量累计降水量0北京2010112…

总结mac下解决matplotlib中文显示问题的几种方法

一、前言: 使⽤matplotlib画图时,由于matplotlib默认没有中⽂,显⽰中文时会出现空⽩⼩⽅块。 二、方法: 2.1 matplotlib中使用SimHei字体 1)进入终端后查看matplotlib的字体路径: $ python >>&g…

机器学习-04-分类算法-04-支持向量机SVM

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中分类算法,本篇为分类算法与SVM算法部分。 本门课程的目标 完成一个特定行业的算法应用全过程: 懂业务会选择合适的算法数据处理算法训练算法调优算法融合 算法评估持续调优工程化…

Qt5.14.2 深入理解Qt多线程编程,掌握线程池架构实现高效并发

在高并发的软件系统中,多线程编程是解决性能瓶颈和提高系统吞吐量的有效手段。作为跨平台的应用程序开发框架,Qt为我们提供了强大的多线程支持。本文将深入探讨Qt多线程编程的实现细节,并介绍线程池的设计思想,帮助读者彻底掌握Qt…

Pytorch常用的函数(七)空洞卷积详解

Pytorch常用的函数(七)空洞卷积详解 1 初识空洞卷积 1.1 空洞卷积与语义分割任务 语义分割面临的困境: 与检测模型类似,语义分割模型也是建立是分类模型基础上的,即利用CNN网络来提取特征进行分类。在CNN分类模型中,一般情况下…

鸿蒙开发 一 (一)、框架了解

一、UI框架 开发范式名称 语言生态 UI更新方式 适用场景 适用人群 声明式开发范式 ArkTS语言 数据驱动更新 复杂度较大、团队合作度较高的程序 移动系统应用开发人员、系统应用开发人员 类Web开发范式 JS语言 数据驱动更新 界面较为简单的程序应用和卡片 Web前端…

2025张宇考研数学基础36讲,视频百度网盘+PDF

一、张宇老师全年高数体系(听课用书指南) 25张宇全程: docs.qq.com/doc/DTmtOa0Fzc0V3WElI 复制粘贴在浏览器上打开,就可以看到2025张宇的全部的啦! 一般来说我们把考研数学划分为3-4个阶段,分别是基础阶…

详解基于快速排序算法的qsort的模拟实现

目录 1. 快速排序 1.1 快速排序理论分析 1.2 快速排序的模拟实现 2. qsort的模拟实现 2.1 qsort的理论分析 2.2 qsort的模拟实现 qsort函数是基于快速排序思想设计的可以针对任意数据类型的c语言函数。要对qsort进行模拟实现,首先就要理解快速排序。 1. 快…

【物联网应用】基于云计算的智能化温室种植一体化平台

目录 第一章 作品概述 1.1. 作品名称 1.2. 应用领域 1.3.主要功能 1.4.创新性说明 第二章 需求分析 2.1 现实背景 2.2 用户群体及系统功能 2.3 竞品分析 第三章 技术方案 3.1. 硬件组成与来源 3.2. 硬件设计合理性 3.3. 硬件系统设计图 3.4. 接口的通用性与可扩展性 3.5. 代码规…

【已解决】在pycharm终端无法激活conda环境,但在cmd命令行中可以

一、问题描述 在windows下winr启动cmd命令行,可以成功运行conda命令并且激活环境在pycharm中打开Terminal终端,发现无法运行conda和pip命令,报错环境无法激活 无法在管道中间运行文档: D:\software\Anaconda3\condabin\conda.bat。 所在位置…

uniapp+vue3+setup语法糖开发微信小程序时不能定义globalData的解决方法

在使用 uniapp 开发小程序的时候, 发现使用了setup 语法糖 ,定义 globalData 时,要不是定义不了, 要不就是使用 getApp()取不到,后来想到一个不伦不类的方法解决了, 这个方法有点难看, 但是解决…

云手机的数据安全有保障吗?

随着移动互联网的迅速发展,云手机作为一种新兴的移动终端技术,正在逐渐受到人们的关注和应用。然而,对于云手机而言,数据安全问题一直是人们关注的焦点之一。本文将探讨云手机的数据安全性,并分析其是否具备足够的保障…

每周编辑精选|微软开源 Orca-Math 高质量数学数据集、清华大学研究团队发布条件去噪扩散模型 SPDiff...

Orca-Math 是微软研究院发布的数学推理模型,该模型展示了较小的专业模型在特定领域的价值,它们可以匹配甚至超越更大模型的性能。微软近期开源了用于训练 Orca-Math 的 Orca-Math-200K 数学单词问题数据集,现已在 hyper.ai 官网提供下载&…

记录对NSIS的一些微调 实现Electron安装包美化

利洽科技-nsNiuniuSkinUI - NSIS 实现了electron 的安装包美化,免费,便捷。 下面我整理了一些关于它的微调,使其安装卸载更加简单快捷。 1. 默认展示安装路径部分 (1)将moreconfiginfo标签visible 设置为 true&#…

const,static深度总结——c++穿透式分析

前言;c类和对象的知识点中除了几种默认函数, 比较重要的还有使用const和static修饰成员相关知识点。const在c中特性很简单。 但是在使用中, 比较容易疏忽大意出现问题。 static特性也很简单, 但是比起const来要直接的多。 在使用中…

PHP-小皮创建php网站中遇到的问题及解决方案—我耀学IT

一、安装 1.1 在学习php时我们需要用到的软件有两个,一个时vscode,一个就是小皮面板(phpstudy) 1.2 vscode安装直接从官网下载,根据系统下载对应的版本,例如:windows64、linux等;同…