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

2024-04-13 18:44

本文主要是介绍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应用需求。

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

这篇关于AI大模型探索之路-应用篇11:AI大模型应用智能评估(Ragas)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”

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

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

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点