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

论文地址:[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_correctnessos.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.hqwc.cn/news/549559.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue中判断是否使用自定义插槽

在封装自定义组件时&#xff0c;需要判断使用者是否使用了插槽<slot"aaa">&#xff0c;如果没有则使用一个组件中默认的值&#xff0c;反之就用传入的内容<template name"aaa"></template>,实现如下&#xff1a; <div class"lin…

使用树莓派 结合Python Adafruit驱动OLED屏幕 显示实时视频

关于OLED屏幕的驱动&#xff0c;在之前我已经写过很多篇博文&#xff1a; IIC 协议 和 OLED_oled iic-CSDN博客 香橙派配合IIC驱动OLED & 使用SourceInsight解读源码_香橙派5 驱动屏幕-CSDN博客 这两篇博文都是通过模拟或调用IIC协议来使用C语言驱动OLED屏幕&#xff0c;现…

Tomcat:Session ID保持会话

目录 前言 ​一、部署环境 二、部署nginx反向代理服务器 三、部署tomcat服务器1 四、部署tomcat服务器2 五、客户端测试&#xff08;Session ID不断变动&#xff09; 六、配置Session ID会话保持 七、客户端测试&#xff08;Session ID保持&#xff09; 前言 此次实验…

研究人员发现 OpenAI ChatGPT、Google Gemini 的漏洞

自 OpenAI 推出 ChatGPT 以来&#xff0c;生成式 AI 聊天机器人的数量及其在企业中的采用率在一年多时间里呈爆炸式增长&#xff0c;但网络安全专业人士的担忧也随之增加&#xff0c;他们不仅担心威胁组织对新兴技术的使用&#xff0c;还担心大型网络的安全性及模型&#xff08…

分类预测 | Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别

分类预测 | Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别 目录 分类预测 | Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现BiTCN双向时间卷积神经网络数据分类预测/故障识别。 2.自…

计算机生物科技在基因编辑中的应用及其前景

一、引言 基因编辑&#xff0c;作为一种能够精准修改生物体基因组的技术&#xff0c;近年来受到了广泛的关注。 而计算机生物科技作为连接计算机科学与生物学的桥梁&#xff0c;为基因编辑技术的快速发展提供了强大的支持。通过利用计算机算法和数据分析方法&#xff0c;研究人…

windows取证

Windows事件日志分析 使用Windows事件日志查看器&#xff0c;打开实验文档“security01.evtx”。按“日期和时间”对日志进行分组统计&#xff1b;按“事件ID”对日志进行分组统计&#xff1a; 问题&#xff1a;日志中是否有用户登录失败的记录。如果有&#xff0c;请按“登录…

信息系统项目管理师019:存储和数据库(2信息技术发展—2.1信息技术及其发展—2.1.3存储和数据库)

文章目录 2.1.3 存储和数据库1.存储技术2.数据结构模型3.常用数据库类型4.数据仓库 记忆要点总结 2.1.3 存储和数据库 1.存储技术 存储分类根据服务器类型分为&#xff1a;封闭系统的存储和开放系统的存储。封闭系统主要指大型机等服务器。开放系统指基于包括麒麟、欧拉、UNIX…

java 类和对象

1、什么是对象&#xff1f; 万物皆对象&#xff0c;客观存在的事物皆为对象。大到名胜古迹&#xff08;万里长城、秦始皇兵马俑等&#xff09;&#xff0c;小到生活中的小物品&#xff08;水杯、钢笔、手机等&#xff09;&#xff0c;只要是客观存在的事物都可以称之为对象。 …

【随笔】汇编(寄存器、内存模型、常用指令、语法)

文章目录 一、简介二、寄存器三、内存模型3.1 Heap3.2 Stack 四、指令4.1 示例4.2 语法4.3常用指令 一、简介 汇编语言&#xff08;英语&#xff1a;assembly language&#xff09;是任何一种用于电子计算机、微处理器、微控制器&#xff0c;或其他可编程器件的低级语言。在不…

11 html 学习/作业

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><a href"./index.html">首页</a><a href"https://www.baidu.com/">百度</a><a h…

数字化社会的新纪元:揭秘 Web3 的社交网络

随着区块链技术的不断发展和普及&#xff0c;Web3作为其重要组成部分&#xff0c;正逐渐改变着社交网络的面貌。Web3的出现不仅为社交网络带来了新的技术和理念&#xff0c;还为用户提供了更加开放、透明和安全的社交体验。本文将深入探讨Web3的社交网络&#xff0c;揭示其在数…