ViDoRAG:开源多模态文档检索框架,多智能体推理+图文理解精准解析文档

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦


🚀 「PDF分析要失业?阿里开源视觉文档核弹:多智能体动态推理,复杂图表秒变答案」

大家好,我是蚝油菜花。你是否还在为这些场景抓狂——

  • 👉 百页技术文档图文混杂,关键信息像玩「大家来找茬」
  • 👉 学术论文图表公式连环嵌套,检索3小时理解5分钟
  • 👉 产品手册跨页流程图看不懂,AI生成答案总在瞎编…

今天揭秘阿里通义实验室的 ViDoRAG ,重新定义视觉文档理解!这个融合多模态检索与动态推理的框架,让AI真正学会「看图说话」:

  • ✅ 高斯混合模型 智能调配文本/视觉权重
  • ✅ Seeker-Inspector-Answer 三体协作推理
  • ✅ 动态调整检索粒度 拒绝无效信息轰炸

这个由阿里巴巴通义实验室联合中科大、上交大推出的视觉文档检索增强生成框架,基于多智能体协作和动态迭代推理,显著提升了复杂视觉文档的检索和生成效率。无论是教育、金融还是医疗领域,ViDoRAG 都能为你提供精准的文档分析和答案生成服务。接下来,让我们一起深入了解这个强大的工具!

🚀 快速阅读

ViDoRAG 是一个基于多智能体协作的视觉文档检索增强生成框架。

  1. 核心功能:整合视觉和文本信息,支持动态迭代推理,提升复杂文档的理解和生成效率。
  2. 技术原理:采用高斯混合模型(GMM)的多模态混合检索策略,动态调整检索结果数量,优化生成质量。

ViDoRAG 是什么

ViDoRAG

ViDoRAG 是阿里巴巴通义实验室联合中国科学技术大学和上海交通大学推出的视觉文档检索增强生成框架。它基于多智能体协作和动态迭代推理,解决了传统方法在处理复杂视觉文档时的检索和推理局限性。

ViDoRAG 使用高斯混合模型(GMM)的多模态混合检索策略,动态调整检索结果数量,优化文本和视觉信息的整合。框架中包含 Seeker、Inspector 和 Answer 三种智能体,分别负责快速筛选、详细审查和最终答案生成,基于迭代交互逐步细化答案,提升生成质量和一致性。

ViDoRAG 的主要功能

  • 多模态检索:整合视觉和文本信息,实现精准的文档检索。
  • 动态迭代推理:多智能体协作(Seeker、Inspector、Answer Agent),逐步细化答案,提升推理深度和准确性。
  • 复杂文档理解:支持单跳和多跳推理,处理复杂的视觉文档内容。
  • 生成一致性保障:基于 Answer Agent 确保最终答案的准确性和一致性。
  • 高效生成:动态调整检索结果数量,减少计算开销,提升生成效率。

ViDoRAG 的技术原理

ViDoRAG-pipeline

  • 多模态混合检索:结合文本和视觉检索结果,基于高斯混合模型(GMM)动态调整检索结果数量。GMM 拟合查询与文档集合的相似度分布,动态确定最优的检索结果数量(Top-K),避免固定数量检索带来的噪声和计算开销,有效整合视觉和文本信息,提升检索精度,减少无关信息的干扰。
  • 动态迭代推理框架
    • Seeker Agent:负责快速筛选相关图像或文档片段,提供全局线索。
    • Inspector Agent:对筛选结果进行详细审查,提供反馈或初步答案。
    • Answer Agent:整合 Inspector 的初步答案,验证一致性生成最终答案。
  • 粗到细的生成策略:从全局视角开始,逐步聚焦到局部细节,多智能体协作实现从粗到细的生成过程,减少无关信息的干扰,提升生成效率和准确性。
  • 推理能力激活:基于迭代推理和多智能体协作,激活模型的推理能力,特别是在处理复杂视觉文档时,提升模型在多跳推理和复杂文档理解任务中的表现。
  • 动态检索长度调整:基于 GMM 动态调整检索结果数量,避免固定 Top-K 值带来的局限性,减少计算开销,提升检索效率和生成质量。

如何运行 ViDoRAG

1. 环境准备

# 创建环境
conda create -n vidorag python=3.10
# 克隆项目
git clone https://github.com/alibaba-nlp/ViDoRAG.git
cd ViDoRAG
# 安装依赖
pip install -r requirements.txt

2. 构建索引数据库

在嵌入整个数据集之前,可以运行 ./llm/vl_embedding.py 检查嵌入模型是否正确加载:

python ./llm/vl_embedding.py

然后运行 ingestion.py 嵌入整个数据集:

# 文档嵌入和多模态嵌入
python ./ingestion.py

3. 运行多模态检索器

尝试使用基本的单模态搜索引擎:

from search_engine import SearchEngine
# 初始化引擎
search_engine = SearchEngine(dataset='ViDoSeek', node_dir_prefix='colqwen_ingestion',embed_model_name='vidore/colqwen2-v1.0')
# 检索结果
recall_results = search_engine.search('some query')

4. 运行多智能体生成

可以直接使用 vidorag_agents.py 脚本进行生成,或将其集成到自己的框架中:

from llms.llm import LLM
vlm = LLM('qwen-vl-max')
agent = ViDoRAG_Agents(vlm)
answer=agent.run_agent(query='Who is Tim?', images_path=['./data/ExampleDataset/img/00a76e3a9a36255616e2dc14a6eb5dde598b321f_1.jpg','./data/ExampleDataset/img/00a76e3a9a36255616e2dc14a6eb5dde598b321f_2.jpg'])
print(answer)

5. 运行评估

使用基于 LLM 的评估方法进行端到端评估:

python eval.py \
  --experiment_type retrieval_infer ## 选择 retrieval_infer/dynamic_hybird_retrieval_infer/vidorag
  --dataset ViDoSeek ## 数据集文件夹名称
  --embed_model_name_vl ## 视觉语言嵌入模型名称
  --embed_model_name_text ## 文本嵌入模型名称
  --embed_model_name ## 仅用于单一嵌入模型评估
  --generate_vlm ## 视觉语言模型名称,如 gpt-4o/qwen-max-vl

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦

### 开源多模态视觉大模型 #### OpenAI CLIP OpenAI 的 CLIP (Contrastive Language–Image Pre-training) 是一个多模态模型,能够理解图像和文本之间的关系。CLIP 使用大量的互联网图片及其描述进行训练,在多种跨模态任务上表现出色[^1]。 ```python import clip import torch model, preprocess = clip.load("ViT-L/14") ``` 此代码片段展示了如何加载预训练好的 CLIP 模型 `ViT-Large-Patch14`。该模型可以用于处理涉及图像与文本的任务,比如图像检索、分类等。 #### BLIP (Bootstrap Language-Image Pre-training) BLIP 是由 Salesforce 提出的一个强大的多模态预训练框架。它不仅可以在图文匹配方面取得优异成绩,还能够在无需微调的情况下生成高质量的图像字幕[^3]。 ```bash pip install git+https://github.com/salesforce/blip.git ``` 安装命令行工具后,可以通过简单的 API 调用来实现复杂的多模态应用开发。 #### M6 和 Qwen 阿里云发布的M6以及其升级版Qwen也是重要的开源多模态大模型系列。这些模型支持超过数百种下游任务,并且拥有从轻量级到超大规模的不同版本供开发者选择[^4]。 ```python from transformers import AutoModelForVision2Seq, AutoProcessor processor = AutoProcessor.from_pretrained("Qwen/Qwen-VL-7B") model = AutoModelForVision2Seq.from_pretrained("Qwen/Qwen-VL-7B") ``` 这段 Python 代码说明了怎样利用 Hugging Face Transformers 库快速部署 Qwen 多模态模型来进行推理计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值