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.mzph.cn/news/816189.shtml

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

相关文章

深入理解信号上升沿与带宽的关系

信号的上升时间,对于理解信号完整性问题至关重要,高速pcb设计中的绝大多数问题都和它有关,很多信号完整性问题都是由信号上升时间短引起的,你必须对他足够重视。 信号上升时间并不是信号从低电平上升到高电平所经历的时间&#xf…

连接两部VR头显的type-c DP分配器方案,可以给主机设备PD反向供电与两部VR同时供电。

随着type-c的发展,目前越来越多的设备都在使用type-c作为连接的接口, 不仅是笔记本与手机在使用现在的游戏主机如(任天堂,steam,)或者是VR的一体机或者是VR头显也都在使用type-c作为连接接口。 type-c接口…

传统图机器学习的特征工程-全图

将整张图表示成为一个低维向量,反映全图的特征 key idea:Bag-of-Words(BOW)把图看作文章,把节点看作单词 Kernel mothods

FL Studio808鼓音在哪 FL Studio怎么让音乐鼓点更有力 FL Studio教程

FL Studio808鼓音在哪?808是一款电鼓机的名称,它发出的声音也被称之为808鼓,通常我们可以安装鼓机插件来使用,但FL Studio中自带的也有808鼓的采样音频。FL Studio怎么让音乐鼓点更有力?让鼓点更有力要从EQ均衡器、压缩…

ELK日志分析系统(上)

目录 引言 一、ELK日志分析系统简介 1.1 日志服务器 1.2 ELK日志分析系统的组成 1.3 日志处理步骤 二、Elasticsearch介绍 2.1 概述 2.2 核心概念 三、Logstash介绍 3.1 概述 3.2 主要组件 四、Kibana介绍 4.1 概述 4.2 主要功能 五、ELK的工作原理 六、部署ELK…

LINUX系统编程:缓冲区

1.为什么要有缓冲区 缓冲区分成语言层面的缓冲区和操作系统层面的缓冲区 先说结论,语言的缓冲区可以减少系统调用的次数进而提高向文件写入和读取的效率。 2.举例子 向屏幕打印,无非就是向屏幕这个文件的缓冲区写入,然后在由操作系统刷新…

js学习总结

这里写目录标题 前情提要JavaScript书写位置1. 内部javaScript (不常用)2. 外部javaScript (常用)3.内联javaScript (常用) js中的输入和输出输出语法1. document.write()2. alert()3. console.log() 输入语法prompt() 前情提要 1. 在javaScript中的 分号 是可以省略的JavaScr…

车机系统与 Android 的关系概述

前言:搞懂 Android 系统和汽车到底有什么关系。 文章目录 一、基本概念1、Android Auto1)是什么2)功能 2、Google Assistant3、Android Automotive1、Android Auto 和 Android Automotive 的区别 4、App1)App 的开发2)…

亚马逊云科技CTO带你学习云计算降本增效秘诀

2023亚马逊云科技一年一度的重磅春晚--Re:invent上有诸多不同话题的主题Keynote,这次小李哥带大家复盘来自亚马逊CTO: Wener博士的主题演讲: 云架构节俭之道1️⃣节俭对于云计算为什么重要? ▶️企业基础设施投入大,利用好降本策略可以减少巨…

个人笔记目录

目录 一、lora 微调 alpaca 笔记 二、全量微调 Llama2-7b笔记 三、Huggingface trainer 与 from_pretrained简单介绍(笔记) 四、vscode调试launch.json常用格式 五、huggingface generate函数简介 六、Trl: llama2-7b-hf使用QLora 4bit量化后ds zer…

Java项目-源码!大学生兼职信息系统

大学生兼职信息系统 1、功能介绍1.1、演示视频 2、系统部分功能展示2.1、管理员登录2.2、管理员功能模块2.2.1、轮播图管理2.2.2、招聘信息管理2.2.3、企业信息管理 3、系统概述4、开发环境 1、功能介绍 本文以Java为开发技术,实现了一个大学生兼职信息系统。 功能…

RestTemplate详解

一、概述 文章参考Spring之RestTemplate详解 1.1介绍 现如今的 IT 项目,由服务端向外发起网络请求的场景,基本上处处可见! 传统情况下,在服务端代码里访问 http 服务时,一般会使用 JDK 的 HttpURLConnection 或者 A…

kali工具----网络映射器(Network Mapper)系统指纹

系统指纹识别 现在一些便携式计算机操作系统使用指纹识别来验证密码进行登录。指纹识别是识别系统的一个典型模式,包括指纹图像获取、处理、特征提取和对等模块。如果要做渗透测试,需要了解要渗透测试的操作系统的类型才可以。本节将介绍使用Nmap工具测试…

【OTA】STM32-OTA升级——持续更新

【OTA】STM32-OTA升级——持续更新 文章目录 前言一、ymodem串口协议1、Ymodem 协议2、PC3、蓝牙4、WIFI云平台 二、UDS车载协议1.UDS协议 总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、ymodem串口协议 1、Ymodem 协议 STM32 Ymodem …

【第三十篇】并发插件 turbo intruder 安装及使用教程

文章目录 安装使用本篇主要介绍turbo intruder的两种安装方式及使用教程。 安装 1、在BurpSuite的扩展模块的BAPP商店中找到turbo intruder,点击安装即可使用: 2、若在BurpSuite中无法直接安装,可手动添加该插件。 具体操作: 进入Github中安装: https://github.com/Po…

代码随想录算法训练营三刷day53 | 动态规划之子序列 1143.最长公共子序列 1035.不相交的线 53. 最大子序和

day53 1143.最长公共子序列1.确定dp数组(dp table)以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组 1035.不相交的线53. 最大子序和1.确定dp数组(dp table)以及下标的含义2.确定递推公式3.dp数组如…

FireProx:一款功能强大的AWS API网关管理与IP地址轮换代理工具

关于FireProx FireProx是一款功能强大的AWS API网关安全管理工具,该工具可以帮助广大研究人员创建实现唯一IP地址轮换的实时HTTP转发代理。 在发送网络请求或进行网络交互时,实现源IP地址轮换是一个非常复杂的过程,虽然社区中也有相关的工具…

【STL详解 —— stack和queue的介绍及使用】

STL详解 —— stack和queue的介绍及使用 stackstack的定义方式stack的使用 queuequeue的定义方式queue的使用 stack stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其只能从容器的一端进行元素的插入与提取操作。 stack的定义方式 首…

前端三剑客 —— JavaScript (第六节)

目录 内容回顾 BOM编程 DOM编程* document对象 document对象的属性 document对象的方法 DOM对象节点 操作DOM对象内容 操作DOM对象的属性 --- DOM对象.属性名称 --- DOM对象[属性名称] --- 调用系统API (Application Program interface)&#…

Linux登录访问限制

Linux系统下,用户密码的有效期可以通过编辑/etc/login.defs文件控制;密码复杂度规则设定需要通过/etc/pam.d/system-auth文件控制;登录失败次数限制通常由/etc/pam.d/login文件限制,可使用pam_tally2模块进行设置。 Linux系统下的…