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

相关文章

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

一文教你使用Python实现本地分页

《一文教你使用Python实现本地分页》这篇文章主要为大家详细介绍了Python如何实现本地分页的算法,主要针对二级数据结构,文中的示例代码简洁易懂,有需要的小伙伴可以了解下... 在项目开发的过程中,遇到分页的第一页就展示大量的数据,导致前端列表加载展示的速度慢,所以需要在本地加入分页处理,把所有数据先放

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言