AI大模型探索之路-应用篇11:AI大模型应用智能评估(Ragas)

目录

前言

一、为什么要做智能评估?

二、Ragas是什么?

三、Ragas使用场景

四、Ragas评估指标

五、Ragas代码实践

总结


前言

随着人工智能技术的飞速发展,AI大模型(LLM)已经成为了推动技术创新和应用的关键因素。这些大模型在语言理解、图像识别、自然语言生成等领域展现出了惊人的能力。然而,随着模型规模的增大,它们对计算资源的消耗、环境适应性、模型稳定性、安全性和可解释性等方面也提出了新的挑战。因此,对AI大模型进行智能评估变得至关重要,以确保它们在实际应用中的稳定性、可靠性和有效性。本文将详细介绍Ragas框架,一个专为AI大模型设计的智能评估工具。



一、为什么要做智能评估?

AI大模型的复杂性和规模使得传统的评估方法不再适用。这些模型通常包含数亿甚至数万亿个参数,这使得它们能够在各种复杂的任务中取得出色的表现。然而,这也带来了以下问题:
1. 计算资源消耗:大模型的训练和推理过程需要大量的计算资源,这可能导致昂贵的成本和环境影响。
2. 环境适应性:模型在不同环境和数据分布下的表现可能会有所不同,这可能影响其适用性。
3. 模型稳定性:面对异常输入或长时间运行,模型的稳定性成为关注的重点。
4. 安全性和隐私:模型可能会泄露训练数据中的敏感信息,或者生成不当内容。
5. 可解释性:由于模型的复杂性,解释模型的决策过程对于某些应用来说是难以接受的。

因此,对AI大模型进行全面的智能评估是确保其在实际应用中稳定性、可靠性和有效性的关键步骤。

二、Ragas是什么?

Ragas(Retrieval-Augmented Generation, RAG)框架是一个综合性的智能评估工具,它专为AI大模型设计,用于评估模型的性能、适用性、稳定性、安全性和可解释性等多个维度。Ragas的主要目标是为开发者、研究人员和决策者提供一个全面的评估工具,以帮助他们了解模型的优势和潜在的风险。


Ragas的功能特点包括:
1. 模块化设计:采用模块化设计,用户可根据具体的评估需求灵活地选择和组合不同的评估模块。
2. 自动化流程:提供自动化的评估流程,减少了人工干预的需求,提高了评估的效率和一致性。
3. 多维度评估:支持从多个维度对AI模型进行评估,包括性能、适用性、稳定性和可解释性等。
4. 用户界面:提供有直观的用户界面,使得用户设置评估参数、启动评估过程并查看评估结果。
5. 基准测试:Ragas可以与预定义的基准模型进行比较,评估AI模型的性能。
6. 适用性分析:Ragas能够分析模型在不同数据集上的适用性,识别模型的泛化能力。
7. 压力测试:Ragas可以模拟高负载情况下的模型表现,评估其稳定性。
8. 安全审计:Ragas检测模型是否存在潜在的安全风险,如数据泄露风险。
9. 可解释性分析:Ragas提供模型决策的解释,帮助用户理解模型的行为。

三、Ragas使用场景

Ragas适用于多种AI大模型的应用场景,包括但不限于:
1. 自然语言处理:Ragas可以用于评估文本分类、机器翻译、情感分析等任务的模型。
2. 图像识别:Ragas可以用于评估图像分类、目标检测、风格迁移等任务的模型。
3. 语音处理:Ragas可以用于评估语音识别、语音合成等任务的模型。

使用Ragas的场景通常是在模型开发和部署的关键环节,例如:
1. 模型选择:在选择合适的模型时,可以使用Ragas来评估不同模型的性能和适用性。
2. 模型优化:在模型开发过程中,可以使用Ragas来监控模型的表现,并根据评估结果进行优化。
3. 风险管理:在模型部署前,可以使用Ragas来评估模型的安全性和稳定性,以减少潜在的风险。

四、Ragas评估指标

Ragas提供了专门针对不同类型的embeddings的评估方法,例如对主流的OpenAI embeddings和BGE (Big Generative Models) embeddings等进行评估。此外,Ragas还提出了五种评估指标,包括忠实度、答案相关性、上下文精度、上下文召回率和上下文相关性,这些指标旨在量化评估检索增强生成(Retrieval-Augmented Generation, RAG)流程的性能。因此它特别适用于评估RAG应用。通过测量查询、检索到的上下文以及语言模型生成的回答之间的相关性来评估RAG的有效性。这种评估方法不需要访问人工注释的数据集或参考答案,使得评估过程更为简便和高效。
Ragas的五大评估指标
1)忠实度(Faithfulness):
数据范围:(0, 1)
判断标准:越高越好。
指标含义:忠实度衡量生成的答案与给定上下文的事实一致性。如果答案中的所有基本事实都可以从上下文中推断出来,则认为答案是忠实的。这意味着答案在内容上没有与上下文相矛盾的地方。
问题参考:Q: 请描述一种健康饮食的建议。
正面样例:A: 健康饮食建议包括多吃水果、蔬菜、全谷物,减少糖分和加工食品的摄入。
反面样例:A: 健康饮食建议包括吃快餐和糖果,完全避免蔬菜和水果。

2)答案相关性(Answer Relevancy):
数据范围:(0, 1)
判断标准:越高越好。
指标含义:答案相关性评估生成的答案与问题的相关性。一个高相关性的答案意味着它直接且准确地回答了问题。
问题参考:Q: 谁是《哈姆雷特》的作者?
正面样例:A: 威廉·莎士比亚是《哈姆雷特》的作者。
反面样例:A: 《哈姆雷特》是一部科幻小说。

3)上下文精度(Context Precision):
数据范围:(0, 1)
判断标准:越高越好。
指标含义:上下文精度评估检索到的上下文与问题和答案的相关程度。高上下文精度意味着检索到的上下文信息与问题紧密相关,对于生成答案有帮助。
问题参考:Q: 根据以下上下文,皮特下一步应该做什么?他正在厨房里准备晚餐,炉子上有一锅炖菜。
正面样例:A: 皮特下一步应该检查炖菜是否煮熟。
反面样例:A: 皮特下一步应该去洗车。

4)上下文召回率(Context Recall)
数据范围:(0, 1)
判断标准:越高越好
指标含义:上下文召回率评估在生成答案时使用的上下文信息是否全面。高上下文召回率表明RAG系统能够检索出与问题相关的大部分上下文信息。
问题参考:Q: 昨天你提到了哪些电影?
正面样例:A: 昨天我提到了《教父》、《泰坦尼克号》和《阿凡达》。
反面样例:A: 昨天我提到了《教父》。

5)上下文相关性(Context Relevance)
数据范围:(0, 1)
判断标准:越高越好。
指标含义:上下文相关性衡量输入查询、检索上下文和LLM生成的响应之间的相关性。这个指标有助于评估RAG系统的整体性能,即各个组件如何协同工作以产生准确的答案。
问题参考:Q: 你昨天提到的电影中,哪一部赢得了奥斯卡最佳影片奖?
正面样例:A: 《教父》赢得了奥斯卡最佳影片奖。
反面样例:A: 《阿凡达》赢得了奥斯卡最佳动画长片奖。

通过这些指标,Ragas框架能够为RAG系统提供一个全面的评估,帮助开发者和研究人员理解系统的表现,并指导他们进行进一步的优化和改进。这些指标的设计旨在不需要访问人工注释的数据集或参考答案,使得评估过程更为简便和高效。
注意:在某些特殊情况下,这些指标之间的权衡可能会导致不同的结论。例如,如果一个模型在提高上下文精确度(Context Precision)的同时可能就会降低了上下文召回率(Context Recall),因此实际应用中,需要根据具体情况来判断哪个指标更关键。

五、Ragas代码实践

1)安装依赖
pip install ragas==0.0.22
注意:安装0.0.22版本,不要安装最新的ragas,ragas的新版本和Langchain暂不兼容

2)导入依赖、定义模型

from langchain.vectorstores import FAISS
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA
import  os
import openai
import  timeopenai.api_key = os.getenv("OPENAI_API_KEY")#定义模型
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)

3)准备本地文档资料,用作测试样本

#准备本地文档资料,即测试样本
doc_list = """
1. 美国总统是谁?拜登
2. 印度人吃饭的工具是什么?右手
3. CBA是什么?CBA是指中国男子篮球职业联赛(China Basketball Association),这是中国最高等级的篮球联赛
4. 佛教起源哪里?古印度
5. 美国的职业篮球赛叫什么?NBA,全称为National Basketball Association,中文名为美国职业篮球联赛,是北美地区的最高等级职业篮球赛事
"""

4)将文档分割成小块,存储到向量数据库

#文档拆分分块
text_spliter = CharacterTextSplitter(separator="\n",chunk_size=500,chunk_overlap=50,length_function=len)
chunks = text_spliter.split_text(doc_list)

5)将文档的块数据embedding到向量数据库

#文档embedding到向量数据库
embedding_model = OpenAIEmbeddings()
vectorstore = FAISS.from_texts(texts=chunks,embedding=embedding_model)

6)构建chain链

qa_chain = RetrievalQA.from_chain_type(llm=llm,retriever=vectorstore.as_retriever(),return_source_documents=True,
)

7)测试样例准备

## 定义要测试的样本问题,可以定义多个,这里方便看测试效果,暂只定义1个
eval_questions = ["美国总统是谁?"
]eval_answers = ["拜登"
]examples = [{"query": q, "ground_truths": [eval_answers[i]]}for i, q in enumerate(eval_questions)
]
## 看一下从知识库里搜索出来的答案
result = qa_chain({"query": eval_questions[0]})
print(result)
{'query': '美国总统是谁?', 'result': '美国总统是拜登。', 'source_documents': [Document(page_content='1. 美国总统是谁?\n   拜登\n2. 印度人吃饭的工具是什么?\n   右手\n3. CBA是什么?\n   CBA是指中国男子篮球职业联赛(China Basketball Association),这是中国最高等级的篮球联赛\n4. 佛教起源哪里?\n   古印度\n5. 美国的职业篮球赛叫什么?\n   NBA,全称为National Basketball Association,中文名为美国职业篮球联赛,是北美地区的最高等级职业篮球赛事\n6. 什么是LangChain?\nLangChain是一个开源框架,允许从事人工智能的开发者将例如GPT-4的大语言模型与外部计算和数据来源结合起来。该框架目前以Python或JavaScript包的形式提供。\n7. 什么是大模型?\n大模型(Large Language Models)是一种人工智能模型,被训练成理解和生成人类语言。\n大模型通常是指具有数百万到数十亿参数的神经网络模型,需要大量的计算资源和存储空间来训练和存储,并且往往需要进行分布式计算和特殊的硬件加速技术。\n8. 什么是AIGC?'), Document(page_content='8. 什么是AIGC?\nAIGC,即AI-Generated Content,是一种利用人工智能技术自动生成的内容。它涵盖了多种内容形式,包括但不限于图片、视频、音乐和文字等。')]}

 8)创建评估测试链,评估结果对比

##评估测试
from ragas.metrics import (faithfulness,answer_relevancy,context_precision,context_recall,context_relevancy,
)# 1.创建"忠诚度"评估chains链
faithfulness_chain = RagasEvaluatorChain(metric=faithfulness)
# 2.创建“答案相关性”评估链
answer_rel_chain = RagasEvaluatorChain(metric=answer_relevancy)
# 3.创建“上下文精准度”评估链
context_pre_chain = RagasEvaluatorChain(metric=context_precision)
# 4.创建“上下文召回率”评估链
context_recall_chain = RagasEvaluatorChain(metric=context_recall)
# 5.创建“上下文相关性”评估链
context_relevancy_chain = RagasEvaluatorChain(metric=context_relevancy)##预测值
predict = qa_chain.batch(examples)
##预测值与真实值对比
result1 = faithfulness_chain.evaluate(examples,predict)
print(result1)
time.sleep(30)result2 = answer_rel_chain.evaluate(examples,predict)
print(result2)
time.sleep(30)result3 = context_pre_chain.evaluate(examples,predict)
print(result3)
time.sleep(30)result4 = context_recall_chain.evaluate(examples,predict)
print(result4)
time.sleep(30)result5 = context_relevancy_chain.evaluate(examples,predict)
print(result5)

总结

总之,AI大模型的智能评估是一个复杂而重要的任务。Ragas框架作为一个综合性的评估工具,为用户提供了从多个维度全面评估AI模型的能力。通过使用Ragas,用户可以更好地了解模型的优势和潜在风险,从而做出更明智的决策和优化方向。随着AI技术的不断发展,智能评估工具和方法也将不断进步,以满足不断增长的AI应用需求。

探索未知,分享所知;点击关注,码路同行,寻道人生!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/617030.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数模 初见数建

文章目录 初见数学建模1.1 数学建模是什么1.2 数学建模的概述1.3 如何学习数学建模---分模块化1.4 数学建模前提了解1.5 数学建模的六个步骤1.6 如何备战建模比赛1.7 数学建模赛题类型1.8 数学建模算法体系概述 初见数学建模 1.1 数学建模是什么 1.原型与模型 原型&#xff…

Golang | Leetcode Golang题解之第28题找出字符串中第一个匹配项的下标

题目&#xff1a; 题解&#xff1a; func strStr(haystack, needle string) int {n, m : len(haystack), len(needle)if m 0 {return 0}pi : make([]int, m)for i, j : 1, 0; i < m; i {for j > 0 && needle[i] ! needle[j] {j pi[j-1]}if needle[i] needle[…

AI图书推荐:如何在课堂上使用ChatGPT 进行教育

ChatGPT是一款强大的新型人工智能&#xff0c;已向公众免费开放。现在&#xff0c;各级别的教师、教授和指导员都能利用这款革命性新技术的力量来提升教育体验。 本书提供了一个易于理解的ChatGPT解释&#xff0c;并且更重要的是&#xff0c;详述了如何在课堂上以多种不同方式…

程序猿没有副业,太难了

副业的初衷 我知道踏下心来钻研本专业会有收获,但又实在没有太多兴趣。 只好努努力,跟着兴致走,多一个选择,多一份抵抗风险的能力。 不管从事什么行业&#xff0c;除了做好自己本职工作以外&#xff0c;还会有一些空闲的时间来做一些其他事情&#xff0c;与其说是副业,不如说…

TypeScript 忽略红色波浪线

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

upload-labs第五六关

第五关 $is_upload false; $msg null; if (isset($_POST[submit])) {if (file_exists(UPLOAD_PATH)) {$deny_ext array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml"…

《手机维修600G资料》云盘下载地址

无意中发现一个生财之道&#xff0c;哈哈哈&#xff0c;就是发现有人在一些视频平台&#xff0c;发手机维修之类的视频吸引客户。这样自己就不用开店也可以接生意了。问题剩下就一个了&#xff0c;把手机维修技术学好&#xff0c;一技在手&#xff0c;天上我有。 《手机维修600…

基于java+springboot+vue实现的智能停车计费系统(文末源码+Lw+ppt)23-30

摘 要 随着人们生活水平的高速发展&#xff0c;智能停车计费信息管理方面在近年来呈直线上升&#xff0c;人们也了解到智能停车计费的实用性&#xff0c;因此智能停车计费的管理也逐年递增&#xff0c;智能停车计费信息的增加加大了在管理上的工作难度。为了能更好的维护智能…

单路高清HDMI编码器JR-3211HD

产品简介&#xff1a; JR-3211HD单路高清HDMI编码器是专业的高清音视频编码产品&#xff0c;该产品具有支持1路高清HDMI音视频采集功能&#xff0c; 1路3.5MM独立外接音频输入&#xff0c;编码输出双码流H.264格式&#xff0c;音频MP3/AAC格式。编码码率可调&#xff0c;画面质…

TQ15EG开发板教程:在MPSOC上运行ADRV9009(vivado2018.3)

首先需要在github上下载两个文件&#xff0c;本例程用到的文件以及最终文件我都会放在网盘里面&#xff0c; 地址放在最后面。在github搜索hdl选择第一个&#xff0c;如下图所示 GitHub网址&#xff1a;https://github.com/analogdevicesinc/hdl/releases 点击releases选择版…

在 Google Cloud 上轻松部署开放大语言模型

今天&#xff0c;“在 Google Cloud 上部署”功能正式上线&#xff01; 这是 Hugging Face Hub 上的一个新功能&#xff0c;让开发者可以轻松地将数千个基础模型使用 Vertex AI 或 Google Kubernetes Engine (GKE) 部署到 Google Cloud。 Model Garden (模型库) 是 Google Clou…

关于ASP.NET Core WebSocket实现集群的思考

前言 提到WebSocket相信大家都听说过&#xff0c;它的初衷是为了解决客户端浏览器与服务端进行双向通信&#xff0c;是在单个TCP连接上进行全双工通讯的协议。在没有WebSocket之前只能通过浏览器到服务端的请求应答模式比如轮询&#xff0c;来实现服务端的变更响应到客户端&…