跟着官方文档快速入门RAGAS

server/2024/12/4 16:25:25/

官网: Ragas

Ragas(Retrieval-Augmented Generation, RAG)是一个基于简单手写提示的评估框架,通过这些提示全自动地衡量答案的准确性、 相关性和上下文相关性。这种评估方法不需要访问人工注释的数据集或参考答案,使得评估过程更为简便和高效。

跟着官方的入门案例来了解该框架

安装

    pip install ragas

加载数据

从Hugging face中加载数据集

from datasets import load_dataset
dataset = load_dataset("explodinggradients/amnesty_qa","english_v3",trust_remote_code=True
)# 若无法使用代理也可以直接加载
dataset = {'question': 'Which private companies in the Americas are the largest GHG emitters according to the Carbon Majors database?','ground_truths': ['The largest private companies in the Americas that are the largest GHG emitters according to the Carbon Majors database are ExxonMobil, Chevron, and Peabody.'],'answer': 'According to the Carbon Majors database, the largest private companies in the Americas that are the largest GHG emitters are:\n\n1. Chevron Corporation (United States)\n2. ExxonMobil Corporation (United States)\n3. ConocoPhillips Company (United States)\n4. BP plc (United Kingdom, but with significant operations in the Americas)\n5. Royal Dutch Shell plc (Netherlands, but with significant operations in the Americas)\n6. Peabody Energy Corporation (United States)\n7. Duke Energy Corporation (United States)\n8. TotalEnergies SE (France, but with significant operations in the Americas)\n9. BHP Group Limited (Australia, but with significant operations in the Americas)\n10. Rio Tinto Group (United Kingdom/Australia, but with significant operations in the Americas)\n\nPlease note that the rankings may change over time as new data becomes available.','contexts': ['The private companies responsible for the most emissions during this period, according to the database, are from the United States: ExxonMobil, Chevron and Peabody.\nThe largest emitter amongst state-owned companies in the Americas is Mexican company Pemex, followed by Venezuelan company Petróleos de Venezuela, S.A.']}

将数据集加载到 Ragas EvaluationDataset 对象中。

from ragas import EvaluationDataseteval_dataset = EvaluationDataset.from_hf_dataset(dataset["eval"])# 若无法使用代理也可以直接加载
eval_dataset = Dataset.from_dict(data_samples)

选择对应的指标并运行(以OpenAI为例)

metrics = [LLMContextRecall(llm=evaluator_llm), #对应着上下文召回率FactualCorrectness(llm=evaluator_llm), #对应着事实正确性Faithfulness(llm=evaluator_llm), #对应着忠诚度SemanticSimilarity(embeddings=evaluator_embeddings) #对应着语义相似度
]
results = evaluate(dataset=eval_dataset, metrics=metrics)

导出和分析结果

df = results.to_pandas()
print(df.head())

效果展示:

代码总览

from datasets import load_dataset
from ragas import EvaluationDataset
from ragas.metrics import LLMContextRecall, Faithfulness, FactualCorrectness, SemanticSimilarity
from ragas import evaluate
from ragas.llms import LangchainLLMWrapper
from ragas.embeddings import LangchainEmbeddingsWrapper
from langchain_openai import ChatOpenAI
from langchain_openai import OpenAIEmbeddingsdataset = load_dataset("explodinggradients/amnesty_qa","english_v3",trust_remote_code=True
)
eval_dataset = EvaluationDataset.from_hf_dataset(dataset["eval"])evaluator_llm = LangchainLLMWrapper(ChatOpenAI(model="gpt-3.5-turbo", api_key='sk-L9Vf0rGL7kkNTGXCvDG1vHBj5wQj1jAwX1K8wp0qbIO9XCFx', base_url='https://api.openai-proxy.org/v1'))
evaluator_embeddings = LangchainEmbeddingsWrapper(OpenAIEmbeddings())metrics = [LLMContextRecall(llm=evaluator_llm),FactualCorrectness(llm=evaluator_llm),Faithfulness(llm=evaluator_llm),SemanticSimilarity(embeddings=evaluator_embeddings)
]
results = evaluate(dataset=eval_dataset, metrics=metrics)df = results.to_pandas()print(df.head())


http://www.ppmy.cn/server/147322.html

相关文章

我谈冈萨雷斯对频域滤波的误解——快速卷积与频域滤波之间的关系

在Rafael Gonzalez和Richard Woods所著的《数字图像处理》中,Gonzalez对频域滤波是有误解的,在频域设计滤波器不是非得图像和滤波器的尺寸相同,不是非得在频域通过乘积实现。相反,FIR滤波器设计都是构造空域脉冲响应。一般的原则是…

el-table 纵向 横向 多级表头

<el-table :data"tableData" class"diaTable":span-method"handleSpanMethod"border:header-cell-style"{background:#292929,color:#fff}"><!-- 纵向表头 --><el-table-column label"纵向表头" width"…

【docker】docker compose多容器部署

Docker Compose 的详细讲解与实际应用 什么是 Docker Compose&#xff1f; Docker Compose 是一个工具&#xff0c;用于定义和运行多容器 Docker 应用。 通过一个 docker-compose.yml 文件&#xff0c;可以同时启动多个服务&#xff0c;简化多容器管理。 Docker Compose 的核心…

echarts地图立体效果,echarts地图点击事件,echarts地图自定义自定义tooltip

一.地图立体效果 方法1:两层地图叠加 实现原理:geo数组中放入两个地图对象,通过修改zlevel属性以及top,left,right,bottom形成视觉差 配置项参考如下代码: geo: [{zlevel: 2,top: 96,map: map,itemStyle: {color: #091A51ee,opacity: 1,borderWidth: 2,borderColor: #16BAFA…

如何管理Stream中的事件流

文章目录 1. 概念介绍2. 管理方法3. 示例代码我们在上一章回中介绍了事件流相关的内容,本章回中将介绍如何管理Stream事件流。闲话休提,言归正传,让我们一起Talk Flutter吧。 1. 概念介绍 我们简单回顾一下前面的知识:Stream把相关的事件组成了事件流,并且提供方法来监听…

Epsilon2系列战术级微型惯性RTK卫星高精度组合导航系统0.5°/h

FDIsystems推出了Epsilon2系列战术级微型惯性RTK卫星高精度组合导航系统&#xff0c;是Epsilon系列的全面升级。搭载经过严格温度转台校准的0.5/h的惯性器件和全系统多频点GNSS系统&#xff0c;内置高性能磁力计以及气压传感器&#xff0c;具有厘米级定位定向能力&#xff0c;采…

前端图像处理(三)

目录 一、大文件分片 二、图片添加防篡改水印 2.1、主图水印图&#xff08;vue2&#xff09; 2.2、主图文字&#xff08;vue3&#xff09; 一、大文件分片 并行传输&#xff1a;多个数据块可以同时并行传输&#xff0c;利用多线程或多路复用技术提高传输效率&#xff1b;减…

【前端入门】文档流相关概念

文章目录 布局文档流概念特点缺陷Demo 脱离文档流概念产生原因特点DemoFloat实现绝对定位实现 文本流概念特性Demo 布局 网页布局是指通过HTML和CSS定义网页元素的位置和排列方式&#xff0c;以创建视觉上有序且功能齐全的页面结构。 布局设计涉及使用块级和内联元素的组合&a…