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

【2025】Datawhale AI夏令营-多模态RAG-Task3笔记-解决方案进阶

【2025】Datawhale AI夏令营-多模态RAG-Task3笔记-解决方案进阶

Baseline代码优化方向

Task1、Task2笔记中记录了多模态RAG的任务难点:

  1. 如何同时利用图文混排PDF中的图表和文本信息回答问题?
  2. 如何准确地从文档中检索可能和问题相关的内容?
  3. 如何基于检索结果正确地回答问题、追溯回答依据?

针对这3个任务难点,baseline方案的解决方案及不足分别如下:

  1. 暂时不考虑图表信息,只使用文本信息,使用PyMuPDF提取PDF文件中的内容。-》不足:①文档解析粗糙,丢失图表等关键的多模态信息,同时破坏了版面布局蕴含的逻辑关系;②按“页”分块破坏了上下文完整性。
  2. 计算文档分片(chunk)的embedding和问题(query)的embedding二者之间的sin相似度,提取sin相似度最高的K个chunk作为检索结果。没有处理信噪比相关的问题。-》不足:①仅使用向量相似度进行检索,对于包含特定术语或需要精准匹配的问题效果不佳,且容易引入噪音;②使用的embedding模型没有针对“金融财报”垂直领域进行优化,理解上会存在偏差。
  3. 使用LLM进行问题推理,提示LLM按照指定格式输出问题回答。同时在整个处理过程中定义并维护变量结构,该结构中使用"filename"和"page"字段记录检索结果的来源文件及具体页码。-》不足:使用的LLM模型没有针对“金融财报”垂直领域进行优化,理解上会存在偏差。

针对以上不足,可选的优化方向如下:

  1. 优化数据解析方式:利用MinerU强大的版面分析能力,提取出包含表格(转为Markdown)、图片、以及带有层级结构(标题、段落)的文本内容。
  2. 优化分块策略:基于MinerU精细化的解析结果,可以进行进一步解释图片内容,添加图片的描述信息。
  3. 优化检索策略:引入重排(Re-ranking),在检索环节后增加重排步骤,选出最相关的几个结果,提高上下文质量。例如,先根据向量相似性召回得到候选集(如Top 20相关的文本),然后使用更精准的重排模型对候选项进行打分排序,最后选取真正的Top K(如Top 3-5)输入LLM,大幅提升信噪比。
  4. 进行模型微调:微调Embedding模型、LLM,让模型更适应“金融财报问答”场景。

进阶方案

这篇笔记使用第1种优化方向,使用MinerU提取PDF中的图文信息,为LLM检索回答提供更细粒度、更丰富、上下文更流畅的知识文本。通过MinerU可以区分PDF中的标题、段落、表格和图片,并将表格转化为Markdown结构化格式。

注意:MinerU本身只能识别出图片,但不能解读图片中的内容,因此单纯利用MinerU也不能达到利用图片信息的目标。要想利用图片包含的信息,需要利用多模态模型将图片转化为文本描述,或者利用能够直接对图片进行推理的多模态大模型。

将baseline代码中使用的fitz(即PyMuPDF)替换成MinerU后,进阶方案结构如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图源Datawhale教程。“阶段一”由mineru_pipeline_all.py完成,“阶段二”仍由rag_from_page_chunks.py完成。

MinerU使用准备

安装第三方库:Pillow、aiofiles、mineru。其中,mineru的安装需要较多依赖、耗时较长(我自己安装的时候需要安装100+个依赖包,耗时约2h)。

mineru的github仓库:https://github.com/opendatalab/MinerU

mineru的安装命令:

pip install uv
uv pip install -U "mineru[core]"

uv不是python第三方库,而是一个速度更快的python库安装器和运行器,可以替代pip的一部分功能。

代码理解-MinerU提取PDF图文信息

安装完成后,运行也需要较长时间,需要从huggingface上加载多个模型。

未完待续。

http://www.lryc.cn/news/619994.html

相关文章:

  • 蓝蜂网关在雄安新区物联网建设中的关键应用
  • 补环境基础(四) Hook插件
  • Spring Boot项目调用第三方接口的三种方式比较
  • 当img占不满div时,图片居中显示,两侧加当前图片模糊效果
  • 如何记录日常笔记?
  • 【Linux学习|黑马笔记|Day3】root用户、查看权限控制信息、chmod、chown、快捷键、软件安装、systemctl、软连接、日期与时区
  • 语音交互像聊天:声网RTC技术给AI客服加温度
  • 基于 MybatisPlus 将百度天气数据存储至 PostgreSQL 数据库的实践
  • 开发避坑指南(25):MySQL不支持带有limit语句的子查询的解决方案
  • Java研学-RabbitMQ(六)
  • 算法题详细解析 + 代码 + 注释
  • 在 uniapp 里使用 unocss,vue3 + vite 项目
  • 数据结构初阶(12)排序算法—插入排序(插入、希尔)(动图演示)
  • 智驾系统架构解析
  • 常用机器学习公开数据集大全
  • [系统架构设计师]系统架构基础知识(一)
  • [系统架构设计师]信息安全技术基础知识(三)
  • DataOceanAI Dolphin(ffmpeg音频转化教程) 多语言(中国方言)语音识别系统部署与应用指南
  • 最新去水印小程序系统 前端+后端全套源码 多套模版 免授权
  • TF-IDF实战——《红楼梦》文本分析
  • 商品分类拖拽排序设计
  • 用 Qt C++ 从零打通“前端界面 → 后端接口”的数据交互
  • Redis的基础命令
  • 图像分类-动手学计算机视觉10
  • RabbitMQ:Windows版本安装部署
  • 高防CDN和高防IP的各自优势
  • Vue项目生产环境性能优化实战指南
  • 【Java虚拟机】JVM内存模型
  • uniapp跨端性能优化方案
  • 中科米堆CASAIM蓝光三维扫描仪用于焊接件3D尺寸检测