当前位置: 首页 > news >正文

【observability】【evaluation23】多模态RAG评估案例分析

案例目标

本案例演示如何评估一个多模态RAG(Retrieval-Augmented Generation)系统。与纯文本案例类似,我们分别考虑对检索器(Retriever)和生成器(Generator)的评估。具体来说,本案例使用美国手语(ASL)字母表图像和文本描述作为多模态数据,构建并评估多模态RAG系统。

案例的主要目标包括:

  • 构建基于CLIP图像嵌入和GPT-4V文本描述的多模态RAG系统
  • 使用不同多模态LLM(GPT-4V和LLaVA)作为生成器
  • 评估检索器的性能(使用hit_rate和mrr指标)
  • 评估生成器的性能(使用正确性、相关性和忠实度指标)
  • 比较不同多模态RAG系统的性能差异

技术栈与核心依赖

llama-indexllama-index-llms-openaillama-index-multi-modal-llms-openaillama-index-multi-modal-llms-replicatePILmatplotlibpandas

核心组件
  • MultiModalVectorStoreIndex: 多模态向量存储索引,用于处理图像和文本数据
  • OpenAIMultiModal: OpenAI的多模态LLM接口(GPT-4V)
  • ReplicateMultiModal: Replicate的多模态LLM接口(LLaVA)
  • MultiModalRetrieverEvaluator: 多模态检索器评估器
  • CorrectnessEvaluator: 正确性评估器
  • MultiModalRelevancyEvaluator: 多模态相关性评估器
  • MultiModalFaithfulnessEvaluator: 多模态忠实度评估器

环境配置

# 安装必要的依赖 %pip install llama-index-llms-openai %pip install llama-index-multi-modal-llms-openai %pip install llama-index-multi-modal-llms-replicate
from PIL import Image import matplotlib.pyplot as plt import pandas as pd import json from llama_index.core.multi_modal_llms.generic_utils import load_image_urls from llama_index.core import SimpleDirectoryReader, Document

需要配置OpenAI的API密钥以访问GPT-4V服务,以及Replicate的API密钥以访问LLaVA模型。

案例实现

  • 数据准备与索引构建
  • 多模态RAG系统构建
  • 检索器与生成器评估
数据准备

本案例使用ASL(美国手语)字母表图像和文本描述作为多模态数据:

ASL字母表示例图像

图像数据来源于ASL-Alphabet Kaggle数据集,并进行了修改以在图像上添加相应的字母标签。文本描述来源于https://www.deafblind.com/asl.html。

加载图像和文本数据
# 加载图像数据 image_path = "./asl_data/images" image_documents = SimpleDirectoryReader(image_path).load_data() # 加载文本描述数据 with open("asl_data/asl_text_descriptions.json") as json_file: asl_text_descriptions = json.load(json_file) text_format_str = "To sign {letter} in ASL: {desc}." text_documents = [ Document(text=text_format_str.format(letter=k, desc=v)) for k, v in asl_text_descriptions.items() ]
构建多模态索引
from llama_index.core.indices import MultiModalVectorStoreIndex from llama_index.core.node_parser import SentenceSplitter node_parser = SentenceSplitter.from_defaults() image_nodes = node_parser.get_nodes_from_documents(image_documents) text_nodes = node_parser.get_nodes_from_documents(text_documents) asl_index = MultiModalVectorStoreIndex(image_nodes + text_nodes)
构建基于文本描述的索引

为了比较不同RAG系统,我们构建另一个使用GPT-4V生成图像文本描述的索引:

from llama_index.multi_modal_llms.openai import OpenAIMultiModal from llama_index.core.schema import ImageDocument # 使用GPT-4V生成图像描述 openai_mm_llm = OpenAIMultiModal(model="gpt-4o", max_new_tokens=300) image_with_text_documents = SimpleDirectoryReader(image_path).load_data() # 为每个图像生成文本描述 for img_doc in tqdm.tqdm(image_with_text_documents): response = openai_mm_llm.complete( prompt="Describe the images as an alternative text", image_documents=[img_doc], ) img_doc.text = response.text # 解析为节点 image_with_text_nodes = node_parser.get_nodes_from_documents( image_with_text_documents ) # 构建基于文本描述的索引 asl_text_desc_index = MultiModalVectorStoreIndex( nodes=image_with_text_nodes + text_nodes, is_image_to_text=True )

案例效果

通过多模态RAG评估,我们获得了以下关键发现:

检索器性能
  • 文本检索(asl_index-text)表现完美,命中率和MRR均为1.000000
  • 基于GPT-4V文本描述的检索(asl_text_desc_index)表现良好,命中率和MRR均为0.925926
  • 基于CLIP图像嵌入的检索(asl_index-image)表现尚可,命中率和MRR均为0.814815
  • 当检索器检索到正确图像时,通常将其放在第一位,因此命中率和MRR相同
生成器性能
  • 使用LLaVA的RAG系统在正确性、相关性和忠实度方面均优于使用GPT-4V的系统
  • mm_clip_llava在正确性方面得分最高(4.092593)
  • mm_clip_llava在相关性方面得分最高(0.851852)
  • mm_clip_llava和mm_text_desc_gpt4v在忠实度方面得分最高(0.888889)
观察与结论

评估结果表明,使用LLaVA的RAG系统在各项指标上均优于使用GPT-4V的系统。一个有趣的发现是,GPT-4V在某些情况下会生成类似"我无法基于提供的图像回答查询,因为系统目前不允许我视觉分析图像"的响应,即使图像已被正确检索。这类生成的响应可能是GPT-4V生成评分低于LLaVA的原因之一。

案例实现思路

多模态RAG评估的实现思路如下:

  1. 数据准备:收集ASL字母表图像和相应的文本描述,构建多模态数据集
  2. 索引构建:使用MultiModalVectorStoreIndex构建两种不同的多模态索引
    • 基于CLIP图像嵌入的索引
    • 基于GPT-4V文本描述的索引
  3. RAG系统构建:构建四种不同的多模态RAG系统,比较不同嵌入模型和生成器的组合
  4. 检索器评估:使用MultiModalRetrieverEvaluator评估检索器的性能,计算命中率和MRR
  5. 生成器评估:使用正确性、相关性和忠实度评估器评估生成器的性能
  6. 结果分析:比较不同RAG系统的性能,分析差异原因
技术要点

实现过程中的关键技术点包括:使用MultiModalVectorStoreIndex处理多模态数据、通过is_image_to_text参数控制使用图像嵌入还是文本描述嵌入、使用MultiModalRetrieverEvaluator评估检索器性能、以及使用多模态评估器(MultiModalRelevancyEvaluator和MultiModalFaithfulnessEvaluator)评估生成器性能。

扩展建议

基于当前实现,可以考虑以下扩展方向:

  • 扩展多模态数据:增加更多类型的多模态数据,如视频、音频等
  • 改进嵌入模型:尝试更先进的多模态嵌入模型,如CLIP-ViT-L/14等
  • 优化提示工程:改进生成提示,提高生成质量
  • 扩展评估指标:引入更多评估指标,如多样性、连贯性等
  • 领域特定评估:针对特定领域(如医疗、教育)定制评估标准
  • 人工评估对比:引入人工评估作为黄金标准,与多模态评估器进行对比
  • 评估效率优化:优化评估过程,提高大规模评估的效率
  • 多语言支持:扩展对多语言多模态内容的评估能力

总结

多模态RAG评估案例展示了如何使用llama-index评估工具评估多模态RAG系统。主要收获包括:

  • MultiModalVectorStoreIndex提供了处理多模态数据的有效方法
  • 不同的嵌入模型(CLIP vs GPT-4V文本描述)对检索性能有显著影响
  • 不同的多模态LLM(GPT-4V vs LLaVA)对生成质量有显著影响
  • 多模态评估器(MultiModalRelevancyEvaluator和MultiModalFaithfulnessEvaluator)提供了有效的生成评估方法
  • 评估结果可以帮助选择最适合特定应用场景的多模态RAG系统

该案例为评估多模态RAG系统提供了有价值的参考,特别是在需要处理图像和文本混合内容的场景中。通过比较不同嵌入模型和生成器的组合,可以更好地理解各组件的优势和局限性,从而做出更明智的选择。

http://www.jsqmd.com/news/1176065/

相关文章:

  • 如何利用Cognito用户同步触发器实现Serverless身份验证自动化:终极指南
  • 2026科技创新全球EMBA测评 理性选型指南
  • 英雄联盟终极换肤指南:R3nzSkin完整使用教程
  • 周报月报PPT不用瞎找!职场汇报模板挑选与资源指南 - 品牌测评鉴赏家
  • 彻底吃透IIC总线:全行业落地场景、核心功能、实操代码详解(嵌入式必备)(一)
  • 这款Mac垃圾清理软件,凭啥霸榜多年
  • AI自动化落地卡点全突破,n8n Agent搭建避坑清单,92%开发者踩过的3类致命配置错误
  • 从Ollama到OpenAI:llmcord支持的10+主流LLM平台全解析
  • V4L2 --- Linux 视频采集协议概览
  • OAS-Kit命令行工具完全指南:从基础到高级用法
  • 卡地亚中国官方售后服务中心|官方地址与维修热线权威信息公告(2026年7月更新) - 卡地亚官方售后中心
  • 2026年气凝胶保温卷材选型实用参考指南 - 招财兔数字员工
  • OpenIO SDS:高性能软件定义对象存储系统完全指南
  • 5分钟上手TeleHash:快速搭建你的第一个分布式通信应用
  • DeepSeek开源生态现状速览:从v2.5到v3.1的7个关键变更,不看这篇你将错过关键API兼容性断层
  • Skywork-OR1性能调优秘籍:提升RL训练吞吐量与内存效率的7个实用技巧
  • 从入门到精通:gh_mirrors/webso/websocket-client 发送消息的7种方式
  • keepalived实现ubuntu22服务器高可用
  • :如何解决腾讯元宝到word的格式问题?AI 导出鸭编译级转换,公式代码表格全保真
  • 2026株洲黄金回收哪里靠谱?5家奢侈品回收店实测,湘奢汇天元店登顶 - 生活测评小能手
  • Cargo 工作区重构实录:把单仓拆成多个 crate 的决策过程
  • 【WorkBuddy专栏47】学生党用WorkBuddy做开发学习——多语言速成与练习结合实战
  • 别卷模型参数了:数据分析师转型 Agent,权限与可观测才是生死线
  • Qwen3全解析:通义千问第三代开源大模型,重新平衡推理能力与落地成本
  • 盐城中南城黄金换新服务实测对比:4家门店深度评测 - 招财兔数字员工
  • 舒缓维稳精华液哪家好用:蜜妙诗清润舒缓 - MXyuyu
  • Cursor实战案例-办公提效-74-企业级文档解析:利用Python-docx解析Word合同并抽取核心敏感字段
  • 年终总结PPT模板怎么选?TOP3平台实测推荐 - 品牌测评鉴赏家
  • 客户问“为什么这个请求这么慢“——可观测性不是给你看数字,是给每个请求一封顺丰快递单
  • DeepSeek本地化部署倒计时:官方即将关闭非商业API接入,现在掌握私有化部署=锁定AI自主权