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

多模态文档检索开源方案-三大竞赛获奖方案技术链路

前期也提到,在实际场景中,用户通常需要检索多模态文档,包括文本、图像、表格和图表。这需要一个更复杂的检索系统,能够处理多模态信息,并根据用户查询提供相关文档或段落。检索多模态文档将有助于 AI 聊天机器人、搜索引擎和其他应用程序向用户提供更准确、更相关的信息。因此衍生了一系列的多模态RAG方案,如:
开源多模态RAG的视觉文档(OCR-Free)检索增强生成方案-VDocRAG
、多模态GraphRAG初探:文档智能+知识图谱+大模型结合范式
提到的诸多方案。

下面来看看www会议开设的多模态文档检索挑战赛的三个获奖方案。

概述:多模态文档检索任务专注于对多模态文档或网页中的段落进行建模,利用文本和多模态信息进行嵌入建模。最终目标是根据用户的文本或多模态查询检索相关的多模态文档或段落。

任务一:MMDocIR – 长文档的多模态检索

此任务旨在评估检索系统识别文档中视觉丰富的信息的能力。MMDocIR 评估集包含 313 篇长文档,平均篇幅 65.1 页,涵盖多个领域:研究报告、行政管理、行业、教程、研讨会、学术论文、宣传册、财务报告、指南、政府文件、法律和新闻文章。不同领域的多模态信息分布各异。

每个领域都呈现出独特的多模态信息分布,带来了不同的检索挑战。

目标:对于给定的文本查询 → 检索相关文档页面:
识别文档中与用户查询最相关的页面。每个查询的检索范围仅限于给定文档中的所有页面。

数据集:MMDocIR

任务 2:M2KR – 开放域视觉检索基准

此任务评估检索系统在开放域场景(包括维基百科网页)中检索视觉丰富的信息的能力。它涉及多种主题、形式(图形、表格、文本)和语言。原始 M2KR 数据集仅包含从维基百科页面中提取的文本。我们扩展了数据集,以包含维基百科页面的屏幕截图。

子任务:

图片→Wiki文档检索:
数据集: WIT、KVQA。
图片+文字→Wiki文档检索:
数据集: OVEN、OKVQA、Infoseek、E-VQA。

Rank1

code:https://github.com/hbhalpha/MDR

流程图

  1. 首先使用cv_tools/DINO识别视觉关键点

    • 通过视觉模型(如DINO)提取输入数据的视觉关键点特征,得到视觉关键点结果
  2. 训练五个不同参数的专家模型进行双任务投票

    • 构建五个参数配置不同的专家模型(如不同超参数或初始化),每个专家模型同时参与两个任务的决策投票
    • 所有专家模型的集成(整体)视为一个统一模型
  3. 融合专家投票结果与视觉关键点结果

    • 将视觉关键点特征与专家模型的投票结果进行融合,最终形成统一模型输出
    • 核心特性:五个专家模型与DINO共同构成一个统一模型,天然支持两个任务,且无需针对特定任务单独训练

Rank2:视觉丰富的多粒度检索框架

code:https://github.com/i2vec/MMDocRetrievalChallenge
框架分为两个主要组成部分:

  1. M2KR,通过整合的视觉和文本关注细粒度区域级别的检索
  2. MMDocIR,将全页检索与详细的区域和基于OCR的检索阶段结合起来

M2KR: Multimodal Region Retrieval with Fusion

流程图详细思路如下:

输入

  • 候选页面被分割成多个区域,以获得区域级表示。

  • 使用Qwen2.5-VL模型生成候选页面的文本描述,提供互补的语义信息。

  • 用户查询(可以是文本、图像或多模态格式)也被处理成统一的嵌入空间。

过程

  • 应用三种匹配策略:

    1. 基于区域嵌入的纯图像检索。
    2. 结合查询和区域特征的多模态检索。
    3. 查询和候选文本描述之间的纯文本检索。
  • 计算每种模态的余弦相似度(CosSim)。

  • 将三种匹配策略的相关性得分融合,综合考虑视觉、多模态和文本信号。

输出
经过分值融合后,使用基于VLM的验证模块评估查询与候选结果的语义对齐。过滤模块促进高置信度的匹配,丢弃误报,确保最终结果既精确又与查询语义一致。

MMDocIR: Full-Page Retrieval with Multistage Validation

输入

  • 文本形式的用户查询

  • 候选文档页面的全页图像分割区域图像OCR识别的文本多种粒度,以实现多粒度检索。

过程

  • 使用ColQwen2-7B对用户查询和全页图像候选进行编码,进行初始全页检索。

  • 使用GME-7B进行两个额外的检索路径:

    1. 文本到OCR文本检索,将查询与页面提取的OCR文本匹配。
    2. 文本到区域图像检索,将查询与分割的区域图像匹配。

    GME框架,https://arxiv.org/pdf/2412.16855

  • 计算每种检索路径的余弦相似度(CosSim)。

  • 将全页检索、OCR文本检索和区域图像检索的相关性得分融合,结合全局、文本和区域信息。

输出:经过分值融合后,使用基于VLM的验证模块(由Qwen2.5-VL模型驱动)对排名靠前的候选结果进行语义验证。验证模块进行细粒度的跨模态验证,确认查询意图与候选内容的一致性,确保最终结果具有高精度和可靠性。

融合和验证机制

1、多源分数融合

实施两层分值融合过程:

  1. 模态分值整合阶段:GME模型为每个候选生成三种相关性得分:文本到OCR文本相似度、文本到区域图像相似度和查询与区域特征之间的多模态相似度。这些得分捕捉文档相关性的不同方面,并用于初始排名,提供丰富的多粒度匹配信号。
  2. 融合GME和ColQwen检索路径的输出:应用RRF,通过为每个检索路径的顶部排名结果分配更高权重,有效平衡全局和细粒度检索信号。融合后的排名确保不同模型的强候选结果被共同考虑,增强检索的鲁棒性。

2、VLM验证机制

在融合步骤之后,应用基于VLM的验证过程,使用Qwen2.5-VL模型进行语义验证。该模块通过预测每个候选是否为真实匹配(Yes)或不匹配(No)来执行语义验证。验证通过的候选结果在最终输出中被优先考虑,确保只有具有强语义对齐的结果被保留。这一验证步骤增加了跨模态理解的关键层,超越了传统的基于相似度的方法,进一步优化了检索结果。

Rank3

方案分两步:MMDocIR和M2KR

  1. MMDocIR

code:https://github.com/bargav25/MultiModal_InformationRetrieval/tree/main/Task1_MMDocIR

流程

  1. 使用基于 ColQwen 的模型,根据图像和 VLM 文本生成每个页面的图像和文本嵌入。然后融合这些嵌入。
  2. 根据文本查询(即问题)查找查询嵌入
  3. 使用后期交互机制查找页面嵌入和查询嵌入之间的相似度分数。
  4. 检索前 5 个页面

这个过程是不是很熟悉,前期介绍的:

  • https://mp.weixin.qq.com/s/coMc5jNPJldPk9X74tDAbA

  • https://mp.weixin.qq.com/s/mzmv01yKl1c8941BJY60ig


  1. M2KR:使用 Wikipedia + FAISS 进行多模态检索

code:https://github.com/bargav25/MultiModal_InformationRetrieval/tree/main/Task2_M2KR

该项目实现了一个端到端的视觉检索流程,该流程接收查询图像,并通过将其与从维基百科页面抓取或提取的图像进行匹配,检索出最相关的维基百科文章。它使用来自 ColQwen2 和 FAISS 的嵌入进行高效的相似性搜索,并支持从实时维基百科页面抓取图像以及从屏幕截图中提取图像。

功能如下:

  1. 根据查询文件名从维基百科文章中抓取图像(或者,您可以选择使用传统的 OpenCV 技术从维基百科截图中提取图像:检查extract_images.py)
  2. 🖼️ 使用基于 Transformer 的视觉模型生成密集嵌入(ColQwen2)
  3. ⚡ 使用 FAISS 索引段落图像(IndexFlatL2)
  4. 🎯 根据查询检索前 k 个最相关的图像
  5. 🧰 模块化代码:可轻松扩展到其他数据集或模型

参考文献:

A Multi-Granularity Retrieval Framework for Visually-Rich Documents,https://arxiv.org/pdf/2505.01457v2

https://erel-mir.github.io/challenge/overview/

http://www.xdnf.cn/news/4602.html

相关文章:

  • Flink SQL DataStream 融合开发模式与动态配置热加载机制实战
  • C++ STL 入门:map 键值对容器
  • Centos离线安装mysql、redis、nginx等工具缺乏层层依赖的解决方案
  • 全面解析 iTextSharp:在 .NET 中高效处理 PDF
  • 贵州安全员考试内容有哪些?
  • Python学习笔记--Django的安装和简单使用(一)
  • 【Linux网络】Socket 编程预备
  • 图像管理与人脸识别工具深度解析
  • 查看单元测试覆盖率
  • 辰鳗科技朱越洋:紧扣时代契机,全力投身能源转型战略赛道
  • maven 安装 本地 jar
  • 算法的时间复杂度
  • 手写 vue 源码 ===:自定义调度器、递归调用规避与深度代理
  • 基于大模型预测的产钳助产分娩全方位研究报告
  • 【工具教程】批量提取PDF指定内容并重命名,PDF文档根据指定识别文字改名,基于java的实现方案
  • (7)Nokov 室内光学跟踪系统
  • 玄机 第一章 应急响应-Linux日志分析
  • C#学习7_面向对象:类、方法、修饰符
  • MySQL 8.0 OCP(1Z0-908)英文题库(11-20)
  • 编写大模型Prompt提示词方法
  • 奥威BI:AI+BI深度融合,重塑智能AI数据分析新标杆
  • 382_C++_在用户会话结束时,检查是否有其他会话仍然来自同一个客户端 IP 地址,没有连接状态设置为断开,否则为连接
  • M0芯片的基础篇Timer
  • Android RecyclerView自带的OnFlingListener,Kotlin
  • 58.[前端开发-前端工程化]Day05-webpack-Git安装-配置-Git命令
  • 【目标检测标签转换工具】YOLO 格式与 Pascal VOC XML 格式的互转详解(含完整代码)
  • Tcp 通信简单demo思路
  • Typora安装使用教程,图片相对储存路径路径设置
  • 什么是 DDoS 攻击?从零到精通的全面解析
  • 如何在 Java 中调用本机摄像头并结合 Vue 实现实时视频流?