LLM之基于Ragas利用本地数据、本地模型构造测试数据集,测试RAG

2024-08-20 17:44

本文主要是介绍LLM之基于Ragas利用本地数据、本地模型构造测试数据集,测试RAG,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

        这回还是粗略写写前言吧,构建好RAG系统之后,你总得去进行测试吧,那么如何测试呢?用什么指标去衡量呢?测试数据集怎么构建呢?

        这里使用Ragas对RAG系统进行测试,而Ragas又基本是OPENAI的接口,那是要钱钱的,所以就研究使用本地模型去跑

Ragas简介

不想写,有空再写

github地址:ragas

ragas测试用例数据集:

1、https://huggingface.co/datasets/explodinggradients/WikiEval

2、https://huggingface.co/datasets/explodinggradients/amnesty_qa

最好看看使用文档:

https://docs.ragas.io/en/stable/getstarted/index.html

 下载Ragas

pip install ragas

 然后就可以构建测试数据集啦,在构建前,你需要下载llama-index,因为我们需要基于llama-index去跑起本地的大模型和embedding模型

我的另外一篇博客:

LLM之基于llama-index部署本地embedding与GLM-4模型并初步搭建RAG(其他大模型也可)

 搭建好之后,就可以直接构造数据集啦

构造测试数据集

from langchain_community.document_loaders import TextLoaderfrom ragas.testset.generator import TestsetGenerator
from ragas.testset.evolutions import simple, reasoning, multi_context# from xinference.client import Clientfrom llama_index.core import Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
# from llama_index.core.embeddings import resolve_embed_model#这个是使用llama_index 自定义的一个包,有看过我另外一篇博客的同学会明白的
from llama_index_self import GLMCustomLLM#按文件夹输入
# loader = DirectoryLoader("/home/kelvin/nlp/GLM-4/basic_demo/input")
# documents = loader.load()MODEL_PATH = '/home/kelvin/nlp/model/LLM/THUDM/glm-4-9b-chat'
embed_model_path = '/home/kelvin/nlp/model/Embedding/BAAI/bge-m3'Settings.embed_model = HuggingFaceEmbedding(model_name=f"{embed_model_path}",device='cuda')Settings.llm = GLMCustomLLM(MODEL_PATH)loader = TextLoader(file_path="/home/nlp/GLM-4/basic_demo/input/test.txt", encoding="utf-8")
documents_txt = loader.load()generator = TestsetGenerator.from_llama_index(Settings.llm,Settings.llm,Settings.embed_model
)# generate testset
testset = generator.generate_with_langchain_docs(documents_txt, test_size=1024, distributions={simple: 0.5, reasoning: 0.25, multi_context: 0.25})testset.to_pandas()
testset.to_csv('./testset.csv', index=False)
testset.to_pickle('./testset.pkl')
testset.to_json('./testset.json')print(f'finish')

官网构建测试数据集如下:

 1、输入OPENAI_API_KEY

import osos.environ["OPENAI_API_KEY"] = "your-openai-key"

2、读取某个文件夹,并读取文件夹下的文件 

from langchain_community.document_loaders import DirectoryLoader
loader = DirectoryLoader("your-directory")
documents = loader.load()

3、构建测试数据集 

from ragas.testset.generator import TestsetGenerator
from ragas.testset.evolutions import simple, reasoning, multi_context
from langchain_openai import ChatOpenAI, OpenAIEmbeddings# generator with openai models
generator_llm = ChatOpenAI(model="gpt-3.5-turbo-16k")
critic_llm = ChatOpenAI(model="gpt-4")
embeddings = OpenAIEmbeddings()generator = TestsetGenerator.from_langchain(generator_llm,critic_llm,embeddings
)# generate testset
testset = generator.generate_with_langchain_docs(documents, test_size=10, distributions={simple: 0.5, reasoning: 0.25, multi_context: 0.25})

 欢迎大家点赞或收藏~

大家的点赞或收藏可以鼓励作者加快更新哟~

这篇关于LLM之基于Ragas利用本地数据、本地模型构造测试数据集,测试RAG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090745

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可