🚀 granite-vision-3.3-2b-embedding
Granite-vision-3.3-2b-embedding是一个高效的嵌入模型,基于granite-vision-3.3-2b构建。该模型专为多模态文档检索而设计,可对包含表格、图表、信息图和复杂布局的文档进行查询。模型会生成页面的ColBERT风格多向量表示。通过消除基于OCR的文本提取需求,granite-vision-3.3-2b-embedding有助于简化和加速RAG管道。
🚀 快速开始
安装
pip install -q torch torchvision torchaudio
pip install transformers==4.50
代码运行示例
from io import BytesIO
import requests
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModel
device = "cuda" if torch.cuda.is_available() else "cpu"
model_name = "ibm-granite/granite-vision-3.3-2b-embedding"
model = AutoModel.from_pretrained(model_name, trust_remote_code=True, torch_dtype=torch.float16).to(device).eval()
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)
image_url = "https://huggingface.co/datasets/mishig/sample_images/resolve/main/tiger.jpg"
print("\nFetching image...")
image = Image.open(BytesIO(requests.get(image_url).content)).convert("RGB")
text = "A photo of a tiger"
print(f"Image and text inputs ready.")
print("Processing inputs...")
image_inputs = processor.process_images([image])
text_inputs = processor.process_queries([text])
image_inputs = {k: v.to(device) for k, v in image_inputs.items()}
text_inputs = {k: v.to(device) for k, v in text_inputs.items()}
with torch.no_grad():
print("🔍 Getting image embedding...")
img_emb = model(**image_inputs)
print("✍️ Getting text embedding...")
txt_emb = model(**text_inputs)
print("Scoring similarity...")
similarity = processor.score(txt_emb, img_emb, batch_size=1, device=device)
print("\n" + "=" * 50)
print(f"📊 Similarity between image and text: {similarity.item():.4f}")
print("=" * 50)
在MM RAG中使用granite-vision-3.3-2b-embedding
有关使用granite-vision-3.3-2b-embedding进行MM-RAG的示例,请参考此笔记本。
✨ 主要特性
- 专为多模态文档检索设计,可处理包含表格、图表、信息图和复杂布局的文档。
- 生成ColBERT风格的多向量页面表示。
- 无需基于OCR的文本提取,可简化和加速RAG管道。
📚 详细文档
评估
我们使用两个基准测试对granite-vision-3.3-2b-embedding与其他参数范围在1B - 4B的顶级colBERT风格多模态嵌入模型进行了评估:Vidore2和Real-MM-RAG-Bench,这些基准测试旨在专门解决复杂的多模态文档检索任务。
NDCG@5 - ViDoRe V2
数据集 \ 模型 |
ColPali-v1.3 |
ColQwen2.5-v0.2 |
ColNomic-3b |
ColSmolvlm-v0.1 |
granite-vision-3.3-2b-embedding |
ESG Restaurant Human |
51.1 |
68.4 |
65.8 |
62.4 |
62.3 |
Economics Macro Multilingual |
49.9 |
56.5 |
55.4 |
47.4 |
48.3 |
MIT Biomedical |
59.7 |
63.6 |
63.5 |
58.1 |
60.0 |
ESG Restaurant Synthetic |
57.0 |
57.4 |
56.6 |
51.1 |
54.0 |
ESG Restaurant Synthetic Multilingual |
55.7 |
57.4 |
57.2 |
47.6 |
53.5 |
MIT Biomedical Multilingual |
56.5 |
61.1 |
62.5 |
50.5 |
53.6 |
Economics Macro |
51.6 |
59.8 |
60.2 |
60.9 |
60.0 |
Avg (ViDoRe2) |
54.5 |
60.6 |
60.2 |
54.0 |
56.0 |
NDCG@5 - REAL-MM-RAG
数据集 \ 模型 |
ColPali-v1.3 |
ColQwen2.5-v0.2 |
ColNomic-3b |
ColSmolvlm-v0.1 |
granite-vision-3.3-2b-embedding |
FinReport |
55 |
66 |
78 |
65 |
70 |
FinSlides |
68 |
79 |
81 |
55 |
74 |
TechReport |
78 |
86 |
88 |
83 |
84 |
TechSlides |
90 |
93 |
92 |
91 |
93 |
Avg (REAL-MM-RAG) |
73 |
81 |
85 |
74 |
80 |
模型架构
granite-vision-3.3-2b-embedding的架构遵循ColPali(https://arxiv.org/abs/2407.01449)方法,由以下组件组成:
- 视觉语言模型:granite-vision-3.3-2b (https://huggingface.co/ibm-granite/granite-vision-3.3-2b)。
- 投影层:线性层,将视觉语言模型的隐藏层维度投影到128,并为每个图像输出729个嵌入向量。
评分使用基于MaxSim的后期交互机制计算。
训练数据
我们的训练数据完全来自DocFM。DocFM是IBM的一个大规模综合数据集,包含从Common Crawl、Wikipedia和ESG(环境、社会和治理)报告中提取的8500万页独特PDF文档。
基础设施
我们在配备NVIDIA A100 GPU的IBM认知计算集群上训练granite-vision-3.3-2b-embedding。
伦理考量和局限性
使用大型视觉和语言模型涉及人们必须了解的风险和伦理问题,包括但不限于:偏差和公平性、错误信息和自主决策。在这方面,granite-vision-3.3-2b-embedding也不例外。尽管我们的对齐过程包含安全考虑,但模型在某些情况下可能会产生不准确或有偏差的响应。关于伦理问题,所有大语言模型都存在被恶意利用的潜在风险。我们敦促社区以合乎道德的意图和负责任的方式使用granite-vision-3.3-2b-embedding。
资源
📄 许可证
本项目采用Apache 2.0许可证。