首页 > 其他分享 >ragas测试

ragas测试

时间:2024-08-20 20:29:10浏览次数:7  
标签:ragas relevancy 测试 langchain context answer import

ragas可支持使用不同的 embedding 和 llm 进行计算,默认使用的是 OpenAIEmbeddings(model="text-embedding-ada-002")、ChatOpenAI(model="gpt-3.5-turbo")。

目前国内支持的大模型有:百度千帆、通义千问、百川、Yuan2、智谱ai

下面以三种渠道的embedding 和 llm为例进行ragas测试。不同渠道的api key获取见 API KEY获取和测试

使用ragas+langchain进行rag评估

openai

安装三方库

pip install ragas
pip install datasets 
pip install langchain_openai 

测试代码

import os
from ragas.metrics import answer_relevancy,faithfulness, context_precision,context_relevancy,context_recall
from datasets import Dataset
from ragas import evaluate, RunConfig
from langchain_openai import ChatOpenAI
from langchain_openai import OpenAIEmbeddings
from ragas.llms.base import LangchainLLMWrapper
# 设置环境变量
os.environ["OPENAI_API_BASE"] = "https://api.f2gpt.com"
os.environ["OPENAI_API_KEY"] = "******"

op=ChatOpenAI(model="gpt-4o",temperature=0.5, max_retries=2)
llm = LangchainLLMWrapper(langchain_llm=op)
embeddings=OpenAIEmbeddings()

data_samples = {
    'question': ['四川面积是多少'],
    'answer': ['四川省总面积48万平方千米'],
    'contexts' : [
        ['四川省总面积48.6万平方千米,辖21个[地级行政区],其中18个[地级市]、3个[自治州]。共55个[市辖区]、19个[县级市],105个[县],4个[自治县],合计183个县级区划。街道459个、镇2016个、乡626个,合计3101个乡级区划。']
      ],
    'ground_truth': ['四川省总面积48.6万平方千米']
}

run_config = RunConfig(
    max_retries=5,
    max_wait=120,
    thread_timeout=500,
    log_tenacity=True
)
dataset = Dataset.from_dict(data_samples)
print("开始计算。。。。。")

# 计算结果 'faithfulness': 0.0000, 'answer_relevancy': nan,, 暂时未找到原因
# 不传llm 和 embeddings,会默认使用 OpenAIEmbeddings(model="text-embedding-ada-002")  ChatOpenAI(model="gpt-3.5-turbo")
score = evaluate(dataset,metrics=[faithfulness,answer_relevancy,context_precision,context_relevancy,context_recall],
                 llm=llm,embeddings=embeddings,
                 raise_exceptions=False,run_config=run_config)

print("计算完成。。。。。。")
print(score)

 

百度千帆

安装三方库

pip install ragas
pip install datasets 
pip install langchain_community
pip install qianfan

测试代码

import os
from ragas.metrics import answer_relevancy,faithfulness, context_precision
from datasets import Dataset
from ragas import evaluate
from langchain_community.llms.baidu_qianfan_endpoint import QianfanLLMEndpoint
from langchain_community.embeddings.baidu_qianfan_endpoint import QianfanEmbeddingsEndpoint
# 设置环境变量
os.environ["QIANFAN_AK"] = "******"
os.environ["QIANFAN_SK"] = "******"

llm = QianfanLLMEndpoint(model="ERNIE-Speed-128K",temperature=0.2,timeout=30)
embeddings=QianfanEmbeddingsEndpoint()

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)
print("开始计算。。。。。")
# SecretStr str type=type_error.str langchain下一版本修复 todo https://github.com/langchain-ai/langchain/issues/24126
score = evaluate(dataset,metrics=[faithfulness,answer_relevancy,context_precision],llm=llm,embeddings=embeddings,raise_exceptions=False)
print("计算完成。。。。。。")
print(score)

 

通义千问

安装三方库

pip install ragas
pip install datasets 
pip install langchain_community
pip install dashscope

测试代码

import os
from ragas.metrics import faithfulness,answer_relevancy,context_relevancy,context_recall,context_precision,answer_similarity,answer_correctness
from datasets import Dataset
from ragas import evaluate, RunConfig
from langchain_community.llms.tongyi import Tongyi
from langchain_community.embeddings.dashscope import DashScopeEmbeddings

os.environ["DASHSCOPE_API_KEY"] = "******"
llm = Tongyi(model_name="qwen-turbo")
embeddings=DashScopeEmbeddings()

data_samples = {
    'question': ['四川面积是多少','四川有多少人'],
    'answer': ['四川省总面积48.6万平方千米','四川有9071.4万人'],
    'contexts' : [
        ['四川省总面积48.6万平方千米,辖21个[地级行政区],其中18个[地级市]、3个[自治州]。共55个[市辖区]、19个[县级市],105个[县],4个[自治县],合计183个县级区划。街道459个、镇2016个、乡626个,合计3101个乡级区划。']
      ,['截止2023年末,四川省户籍人口9071.4万人']
    ],
    'ground_truth': ['四川省总面积48.6万平方千米','四川省户籍人口9071.4万人']
}

dataset = Dataset.from_dict(data_samples)
run_config = RunConfig(
    max_retries=5,
    max_wait=120,
    thread_timeout=500,
    log_tenacity=True
)
print("开始计算。。。。。")
score = evaluate(dataset,metrics=[faithfulness,answer_relevancy,context_relevancy,context_recall,context_precision,answer_similarity,answer_correctness],
                 llm=llm,embeddings=embeddings,
                 raise_exceptions=False,run_config=run_config)
print("计算完成。。。。。。")
print(score)

# 评估结果
{'faithfulness': 1.0000, 'answer_relevancy': 0.6457, 'context_relevancy': 0.6667, 'context_recall': 1.0000, 'context_precision': 1.0000, 'answer_similarity': 0.9262, 'answer_correctness': 0.9816}

踩坑记录

1、搭建环境需要c++编译能力(安装 Microsoft Visual Studio,Microsoft Visual C++ ,版本大于2014),python>3.9

2、网上很多都是安装langchain,但是运行代码都提示 Deprecated,直接安装新版的 langchain_community

3、网上都是建议安装ragas=0.0.22版本,原因都是 langchain 还没有对 ragas 0.1 及以后版本作兼容,发现不需要安装特定版本的ragas,直接安装最新版就行

4、在使用openai渠道测试时,经常出现 faithfulness=0、faithfulness=nan、answer_relevancy=nan的情况,经过排查后仍未找出原因。疑似官方bug。

5、在使用 百度千帆 渠道 测试时,报错 "type=type_error.str,SecretStr!= str",经过排查后是langchain官方bug,等待修复后发布新版才能使用 https://github.com/langchain-ai/langchain/issues/24126

6、需要测试多个问题时,data_samples的格式如下:

data_samples = {
    'question': ['question 1', 'question 2', 'question 3'],
    'answer': ['answer to the question 1', 'answer to the question 2', 'answer to the question 3'],
    'contexts': [['context 1'], ['context 2'], ['context 3']],
    'ground_truths': ['ground_truth to the question 1', 'ground_truth to the question 2', 'ground_truth to the question 3']
}

 

标签:ragas,relevancy,测试,langchain,context,answer,import
From: https://www.cnblogs.com/yjh1995/p/18370252

相关文章

  • 2024浙江省信息通信行业职业技能竞赛信息安全测试员竞赛CTF比赛
    浙江省信息通信行业职业技能竞赛信息安全测试员竞赛CTF比赛MISC部分Author:Ns100kUpFrom:极安云科-服务中心Data:2024/08/07Copyright:本内容版权归属极安云科,未经授权不得以任何形式复制、转载、摘编和使用。培训、环境、资料、考证公众号:Geek极安云科网络安全群:62403......
  • Geekbench AI 1.0 是一项全新基准,用于测试您的 PC 是否能处理复杂的 AI 任务
    GeekbenchAI1.0是一款尖端工具,可以让您评估设备处理AI任务的性能。这个基准测试软件专门设计用于测试设备的CPU、GPU和NPU在处理高要求的AI负载时的表现,给您一个清晰的答案,了解您的硬件是否能够跟上当今AI驱动的应用需求。GeekbenchAI1.0评估什么?GeekbenchA......
  • 优化问题的测试函数
    当你提出了一种新的优化算法后,你需要和别人之前提出的算法来进行PK看你的算法有没有提高,那么如何证明你的算法比较优秀呢?可以给把算法套在测试函数上,看谁的运行时间更短,求得测试函数的适应度更好目录一、四种常见的测试函数二、利用粒子群算法进行测试1.修改变量个数2.修改上下......
  • 【目标检测】Transformers在小目标检测中的应用:最新技术的基准测试和调查
    《TransformersinSmallObjectDetection:ABenchmarkandSurveyofState-of-the-Art》Transformers在小目标检测中的应用:最新技术的基准测试和调查原文:https://arxiv.org/abs/2309.049021研究背景和目的小目标检测(SOD)对现有目标检测方法具有挑战性,而Transformer......
  • 车载网络测试实操源码_使用CAPL脚本控制继电器实现CAN线、电源线的通断
    系列文章目录使用CAPL脚本解析hex、S19、vbf文件使用CAPL脚本对CAN报文的Counter、CRC、周期、错误帧进行实时监控使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文使用CAPL脚本控制继电器实现CAN线、电源线的通断使用CAPL脚本实现BUSOFF干扰测试使用CAPL脚......
  • PostgreSQL的pg_dump测试
    PostgreSQL的pg_dump测试使用到的参数,更多的参数可以通过pg_dump--help查看。-hhost,指定数据库主机名,或者IP-pport,指定端口号-Uuser,指定连接使用的用户名-W,按提示输入密码-d,指定连接的数据库名称,实际上也是要备份的数据库名称。-a,–data-only,只导出数据,不导出表......
  • S32的进阶之路->1,S32DS环境安装与Debuge测试
    1,S32DS安装包下载    浏览器搜索“恩智浦”进入NXP官网,或者直接点击下面的NXP官网链接NXP官网https://www.nxp.com.cn/    进入设计中心,点击软件下面的汽车软件,随后进入到汽车电子软件和工具界面,再点击S32DSIDE进行下载,这里我们需要登录NXP的账号,没有的......
  • mavn 执行 junit 单元测试的结果为 Tests run: 0, Failures: 0, Errors: 0, Skipped:
    mavn执行junit单元测试的结果为Testsrun:0,Failures:0,Errors:0,Skipped:0  [INFO]---surefire:3.2.5:test(default-test)@joyupx-trade---[INFO]Usingautodetectedproviderorg.apache.maven.surefire.junitplatform.JUnitPlatformProvider[INFO][INF......
  • 大模型备案流程最详细说明【评估测试题+附件】
    2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称《AIGC安全要求》),这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件,对语料安全、模型安全、安全措施、词库/题库要求、安全评估等方面提出了具体规范和要求。(一)适用主体《AIGC安全要求》的适用主......
  • 4.展示功能的测试及缓冲
    本平台属于富客户端类型,展示元素包括精美图片、高级动画、透明视频等,所以为了保证画面的呈现速度,一定要在比赛之前,把所有的展示功能在电脑过一遍,浏览器自动产生一个数据缓冲,便于提高现场画面的展示放映速度。有些图片像素过大,第一次显示往往很慢,那么经过缓冲后,展示速度加快。但要......