🚀 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許可證。