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

Learning RAG and Ragas

说明:这是我的学习笔记,很多内容转自网络,请查阅文章末尾的参考资料。

文章目录

  • RAG
  • Ragas
    • 评估框架
    • 评估维度
    • 评估指标
      • Faithfulness (忠实度)
      • Answer Relevance (答案相关度)
      • Context Precision (上下文精确度)
      • Context Recall (上下文召回率)
      • Context Relevance (上下文相关度)
      • Answer Similarity (答案相似度)
      • Answer Correctness (答案正确性)
      • Aspect Critique (层面评判)
  • 参考资料

RAG

RAG (Retrieval-Augmented Generation) 检索增强生成。RAG系统是利用检索的内容以增强LLM生成答案的系统。

Ragas

RAGAS (Automated Evaluation of Retrieval Augmented Generation) 检索增强生成的自动评估。Ragas是一个大模型评测框架,可以评估检索增强生成(RAG)的效果。Ragas可以帮助分析模型的输出,了解模型在给定任务上的表现。
如果我们为某个真实线上系统开发了检索增强生成(RAG)应用,那么在此应用正式上线提供服务前,我们需要评估 RAG 的表现到底是怎样的。如果发现现有的 RAG 效果不够理想,可能需要一些新的 RAG 算法流程来改进。在这之前,就需要对 RAG 流程进行评估,得到评估指标,然后才能进行自动化对比,观察改进的流程是否真的有效。

Ragas 官网

Ragas 安装

pip install ragas

评估框架

在这里插入图片描述

RAGAS框架必须的数据源

  • Question: 用户所提的问题
  • Answer: AI生成的回复
  • Contexts: 上下文(也就是检索得到的内容)

可选的数据源

  • Ground Truths: 真相(下文简称Truths)人工标注的数据,可以有多个真相对应同一个问题
    在这里插入图片描述

评估维度

在这里插入图片描述

评估指标

Faithfulness (忠实度)

评估的是答案忠实于Contexts的程度,因为LLM有编造回答的能力,在理想的RAG系统中,答案应该全部由提供的Contexts推理而来。

  1. 用LLM提取Answer中的要点, 设要点的数量为|Sa|
  2. 用LLM检验这些要点是否可以Contexts中推理而来,设能够推理而来的要点数量为|Va|
  3. 计算它们的比值: F = |Va| / |Sa|

所需输入: Question(提取要点时会需要用到),Answer, Contexts
是否需要标注: 否

Answer Relevance (答案相关度)

本质上可以视为无标注数据时的Answer Similarity。但因为作法不同,所以它体现的更多的是Answer与Question之间的对齐程度。

  1. 利用LLM通过答案反推出问题。例如:
  • RAG的全称是Retrieval-Augmented Generation是检索增强生成系统。
  • 生成的问题1:RAG是什么。
  • 生成的问题2:RAG的全程是什么。
  1. 用embedding模型提取Answer与生成问题的文本语义向量。
  2. 计算向量间的相似度。

在这里插入图片描述

其中: n是生成的问题数量,qi代表第i个生成问题, q代表实际的问题。
所需输入:Question,Answer
是否需要标注: 否

Context Precision (上下文精确度)

评估的是检索到的文档是否对question都有帮助。其实就是有帮助的文档数量与所有被检索出文档数量的比例。它体现的是RAG系统对于文档检索的精准度,会惩罚搜索一大堆没用文档喂给下游的行为。

  1. 用LLM判断Contexts对Question有帮助的数量,假设该数量为|TP|
  2. 设所有被检索出的文档数量为k, 计算它们的比值: CP = |TP| / k

所需输入:Question,Contexts
是否需要标注: 否

Context Recall (上下文召回率)

评估的是检索到的文档中包含真相Truths所需要信息的程度。如果为了优化Context Precision把文档删减了很多以至于包含的信息不够了,自然Context Recall便会低。

  1. 用LLM提取所有Truths中的要点,设要点数量为|St|。 要点(statements): 可以理解为一段描述中关于Question的小段信息。例如:
  • 问题:RAG全称是什么。
  • 真相:RAG全称Retrieval-Augmented Generation是检索增强生成系统。
  • 要点1: Retrieval-Augmented Generation
  • 要点2:检索增强生成系统
  1. 用LLM判断在Contexts能找到对应信息的要点数量,记作|Vt|
  2. 计算它们的比值: CR = |Vt| / |St|

Context Relevance (上下文相关度)

评估的是检索到的文档中所有的内容是否对Question都有帮助。它与Context Precision的区别是它精确到了文档文本的所有内容。例如有的文档很长,它涉及到的内容很广泛,自然也包含回答问题的信息,所以这篇文档在计算Context Precision时会是一个正例。但是因为这篇文章内容中也包含了其他冗余信息,所以它的Context Relevance不会高。

  1. 用LLM将所有Contexts分解为句子,设句子数量为|Sc|
  2. 并判断对Question 有帮助的句子数量,记作|Vc|
  3. 计算它们的比值: CR = |Vc| / |Sc|

所需输入:Question,Contexts
是否需要标注: 否

Answer Similarity (答案相似度)

Answer Correctness (答案正确性)

Aspect Critique (层面评判)

参考资料

  1. Rag系统的评估指标与Ragas框架的使用
  2. 小白学大模型:使用Ragas评价RAG效果
  3. RAG03-使用RAGAS进行评估
  4. RAG:系统评估,以RAGAS为例
http://www.lryc.cn/news/485065.html

相关文章:

  • Java项目实战II基于微信小程序的实习记录(开发文档+数据库+源码)
  • GIT将源码推送新分支
  • Python习题 250:删除空文件夹
  • 基本数据类型:Kotlin、Dart (Flutter)、Java 和 C++ 的比较
  • 源码解析-Spring Eureka(更新ing)
  • python调用百度通用翻译API
  • Timeline动画「硬切」的问题
  • CentOS 9 配置网卡
  • redis7.x源码分析:(2) adlist双向链表
  • KUKU FM 音频Linux平台免费下载工具
  • 《Django 5 By Example》阅读笔记:p105-p164
  • 网络延迟对Python爬虫速度的影响分析
  • 微信小程序内嵌h5页面(uniapp写的),使用uni.openLocation无法打开页面问题
  • 创建一个简单的基于STM32的FreeRTOS应用
  • 【Revit二次开发】创建Ribbon选项卡与带图标的按钮
  • Win11 终端执行 python xxx.py 没反应
  • 使用视频提升应用在 App Store 中的推广效果
  • 对话 OpenCV 之父 Gary Bradski:灾难性遗忘和持续学习是尚未解决的两大挑战 | Open AGI Forum
  • 通过地址获取LONG和LAT并且存入csv
  • Nginx SSL+tomcat,使用request.getScheme() 取到https协议
  • Node.Js+Knex+MySQL增删改查的简单示例(Typescript)
  • 机器学习的概览
  • 方法论-WPS模型(高效沟通和决策分析的框架)
  • OpenTelemetry 赋能DevOps流程的可观测性革命
  • 子集选择——基于R语言实现(最优子集选择法、逐步回归法、Lasso回归法、交叉验证法)
  • Ubuntu24.04挂载磁盘
  • 使用机器学习优化数据库查询性能
  • 英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2
  • HTML面试题(2)
  • 微服务day07