使用Ragas评估VertexAI模型在RAG问答任务中的表现对比

使用Ragas评估VertexAI模型在RAG问答任务中的表现对比

ragas Evaluation framework for your Retrieval Augmented Generation (RAG) pipelines ragas 项目地址: https://gitcode.com/gh_mirrors/ra/ragas

概述

本文介绍如何利用Ragas评估框架对VertexAI平台上的不同大语言模型(LLM)在基于检索增强生成(RAG)的问答任务中的表现进行量化评估和可视化对比。通过本教程,您将掌握完整的模型评估流程,包括数据准备、评估指标选择、结果分析和可视化展示。

技术背景

Ragas评估框架简介

Ragas是一个专门用于评估RAG系统的开源框架,它提供了一系列评估指标,包括:

  • 上下文精确度(Context Precision):衡量检索到的上下文与问题的相关性
  • 忠实度(Faithfulness):评估生成答案与提供上下文的一致性
  • ROUGE分数:衡量生成答案与参考答案的相似度
  • 自定义评分标准(Rubrics Score):可根据业务需求定义的评价维度

VertexAI模型服务

VertexAI是Google Cloud提供的机器学习平台,集成了多种大语言模型,包括Gemini系列模型。本教程将对比Gemini 1.0 Pro和Gemini 1.5 Pro两个版本在问答任务中的表现差异。

环境准备

安装依赖包

首先需要安装必要的Python包:

%pip install --upgrade --user --quiet langchain-core langchain-google-vertexai langchain ragas rouge_score

安装完成后需要重启运行时环境以加载新安装的包。

初始化VertexAI SDK

设置Google Cloud项目信息并初始化VertexAI:

import vertexai

PROJECT_ID = "your-project-id"  # 替换为实际项目ID
LOCATION = "us-central1"  # 选择区域

vertexai.init(project=PROJECT_ID, location=LOCATION)

评估流程设计

1. 定义评估指标

选择适合问答任务的评估指标:

from ragas.metrics import ContextPrecision, Faithfulness, RubricsScore, RougeScore

# 定义ROUGE评分
rouge_score = RougeScore()

# 自定义有用性评分标准
helpfulness_rubrics = {
    "score1_description": "回答无用/不相关,包含错误/误导信息",
    "score2_description": "回答与问题勉强相关,但缺乏清晰度和细节",
    "score3_description": "回答相关且有用,但不够全面详细",
    "score4_description": "回答非常相关,清晰满足问题核心需求",
    "score5_description": "回答极其全面,超出问题明确要求的范围"
}

rubrics_score = RubricsScore(name="helpfulness", rubrics=helpfulness_rubrics)
context_precision = ContextPrecision(llm=evaluator_llm)
faithfulness = Faithfulness(llm=evaluator_llm)

2. 准备测试数据集

构建评估数据集需要以下四个要素:

  1. 用户问题(user_input)
  2. 检索到的上下文(retrieved_contexts)
  3. 模型生成的回答(response)
  4. 参考答案(reference)
user_inputs = [
    "短期记忆依赖于大脑的哪个部分?",
    "什么使罗马元老院感到振奋?",
    "Hasan-jalalians家族控制了什么地区?"
]

retrieved_contexts = [
    ["短期记忆由前额叶(特别是背外侧前额叶皮层)和顶叶区域的神经元活动模式支持..."],
    ["公元前62年,庞培从亚洲胜利归来。元老院因成功对抗喀提林而欢欣鼓舞..."],
    ["12世纪早期,Zakarid家族的亚美尼亚王子驱逐了塞尔柱突厥人..."]
]

references = [
    "前额叶和顶叶",
    "成功对抗喀提林",
    "Artsakh和Utik地区"
]

3. 配置对比模型

设置两个Gemini模型进行对比:

from vertexai.generative_models import GenerativeModel

generation_config = {
    "max_output_tokens": 128,
    "temperature": 0.1,
}

gemini_15 = GenerativeModel("gemini-1.5-pro", generation_config=generation_config)
gemini_10 = GenerativeModel("gemini-1.0-pro", generation_config=generation_config)

4. 生成模型回答

使用统一模板生成两个模型的回答:

template = """根据以下上下文回答问题:
{context}

问题: {query}
"""

responses_15 = []
responses_10 = []

for i in range(len(user_inputs)):
    context_str = "\n".join(retrieved_contexts[i])
    prompt = template.format(context=context_str, query=user_inputs[i])
    
    responses_15.append(gemini_15.generate_content(prompt).text)
    responses_10.append(gemini_10.generate_content(prompt).text)

5. 构建评估数据集

将数据转换为Ragas评估格式:

from ragas.dataset_schema import SingleTurnSample, EvaluationDataset

samples_15 = [
    SingleTurnSample(
        user_input=user_inputs[i],
        retrieved_contexts=retrieved_contexts[i],
        response=responses_15[i],
        reference=references[i]
    ) for i in range(len(user_inputs))
]

samples_10 = [...]  # 同上,使用responses_10

dataset_15 = EvaluationDataset(samples=samples_15)
dataset_10 = EvaluationDataset(samples=samples_10)

执行评估

运行评估计算

from ragas import evaluate

metrics = [context_precision, faithfulness, rouge_score, rubrics_score]

result_15 = evaluate(dataset=dataset_15, metrics=metrics)
result_10 = evaluate(dataset=dataset_10, metrics=metrics)

结果可视化

使用雷达图和柱状图直观对比模型表现:

def plot_radar_compare(results, model_names):
    fig = go.Figure()
    
    for res, name in zip(results, model_names):
        metrics = res._repr_dict
        fig.add_trace(go.Scatterpolar(
            r=list(metrics.values()),
            theta=list(metrics.keys()),
            fill='toself',
            name=name
        ))
    
    fig.update_layout(polar=dict(radialaxis=dict(visible=True, range=[0,5])))
    fig.show()

plot_radar_compare([result_15, result_10], ["Gemini 1.5", "Gemini 1.0"])

结果分析与解读

通过评估结果可以发现:

  1. 上下文精确度:两个模型表现接近,但1.5版本在处理复杂上下文时表现更稳定
  2. 忠实度:两个模型都能很好地基于上下文生成答案
  3. ROUGE分数:1.5版本在答案与参考文本匹配度上略优
  4. 有用性评分:1.5版本生成的答案通常更全面和详细

最佳实践建议

  1. 指标选择:根据实际业务需求选择评估指标,问答系统应优先考虑忠实度和上下文精确度
  2. 测试数据:确保测试数据覆盖各种场景,包括边界情况
  3. 模型选择:新版本模型通常表现更好,但也需要考虑成本和延迟因素
  4. 持续评估:建立自动化评估流程,监控模型性能变化

通过本教程,您已经掌握了使用Ragas评估框架对VertexAI模型进行系统评估的方法,这套方法可以扩展到其他模型和任务的评估场景中。

ragas Evaluation framework for your Retrieval Augmented Generation (RAG) pipelines ragas 项目地址: https://gitcode.com/gh_mirrors/ra/ragas

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

内容概要:本文档详细介绍了一个基于MATLAB实现的CS-LSTM(压缩感知与长短期记忆网络结合)时间序列预测项目。项目首先介绍了背景和意义,指出压缩感知(CS)能够降低数据采样率并高效恢复信号,而LSTM则擅长捕捉时间序列中的复杂动态。接着阐述了项目面临的挑战及解决方案,如稀疏表示与测量矩阵设计、压缩数据恢复复杂度等。项目的核心模块包括稀疏编码、压缩采样、信号重构与预测。通过随机高斯矩阵和DCT变换实现压缩采样,利用LSTM网络进行时序预测,并通过优化算法实现信号重构。此外,文档还展示了具体的代码实现,涵盖环境准备、数据预处理、模型训练与评估等阶段。最后,项目提出了未来改进方向,如多尺度特征融合、在线学习与增量更新等。 适合人群:具备一定编程基础,特别是熟悉MATLAB和深度学习框架的研发人员,以及对时间序列预测和压缩感知技术感兴趣的学者和工程师。 使用场景及目标:①通过CS-LSTM模型对多维时间序列数据进行高效采样与精准预测;②应用于智能电网负荷预测、金融市场行情分析、环境监测、工业设备状态监测、智能交通流量管理、医疗健康监测、智能制造过程优化、无线传感网络数据管理等领域;③实现端到端的时间序列预测流程,包括数据预处理、压缩采样、信号重构、模型训练与预测,以提升预测准确性和鲁棒性。 其他说明:项目不仅提供了详细的理论解释和技术实现步骤,还附带了完整的程序代码和GUI设计,便于用户理解和实践。同时,文档强调了系统的灵活性和扩展性,支持多平台部署和GPU加速,满足实时在线预测需求。此外,项目还引入了自动化超参数优化、模型轻量化与边缘部署等前沿技术,进一步提升了系统的性能和适应能力。
内容概要:本文详细介绍了一个基于C语言的单片机超级点阵显示系统的设计与实现。项目旨在通过上位机发送数据,由单片机控制点阵显示屏,从而实现高分辨率、灵活控制、低功耗和用户友好等特点的显示系统。文章首先介绍了项目背景和目标,包括提升显示分辨率、优化数据传输、增强系统稳定性和降低成本等。接着阐述了项目面临的挑战及其解决方案,如高分辨率显示、稳定通信、低功耗设计等。此外,文章还介绍了项目的创新点,如模块化设计、智能化控制和跨平台兼容性。最后,文章列举了该系统的多个应用场景,包括广告、智能交通、公共信息发布、教育、智能家居、工业控制、医疗健康、展览展示和环境监测等领域,并提供了详细的软件模型架构及代码示例。; 适合人群:具备一定编程基础,特别是熟悉C语言和单片机开发的工程师或爱好者。; 使用场景及目标:①适用于需要高分辨率、低功耗和灵活控制的点阵显示系统开发;②帮助开发者理解和掌握单片机与上位机的通信机制;③为从事嵌入式系统开发的人员提供实用的项目参考和技术支持。; 阅读建议:本文内容详实,涵盖了从理论到实践的各个方面,建议读者在阅读时重点关注项目的设计思路、关键技术点和实际应用案例,结合提供的代码示例进行实践,以便更好地理解单片机超级点阵显示系统的开发过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧韶希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值