Model reference · open weights

granite-vision-3.3-embedding

Embeddings ibm-granite Embeddings 1 build Open weights 642 dl/mo

granite-vision-3.3-embedding is an open-weight embedding model from IBM. granite-vision-3.3-2b-embedding (FP32) weighs 6.0 GB; the smallest configuration that runs it is RTX 3060 12 GB.

For self-hosting, compare this build's requirements below with the GPU you plan to rent.

  • Granite-vision-3.3-embedding is a 3.0B parameter feature extraction model developed by IBM for multimodal document retrieval.
  • It generates ColBERT-style multi-vector representations to process complex layouts, tables, and charts without requiring OCR-based text extraction.
  • The model supports a context length of 131,072 tokens, accepts English instructions and images as input, and is released under the Apache 2.0 license.

Summary of the ibm-granite/granite-vision-3.3-2b-embedding model card, 2026-10-01

What it is

Released byIBM
Released2025-06-03
Parameters3.0B
VRAM6.0 GB for the weights

What it runs on

Memory and cards for granite-vision-3.3-2b-embedding (FP32)

6.0 GBweights, file size
1.1 GBruntime overhead
CardRunsMemory
RTX 3060 12 GBfits11.6 GB
RTX 4060 Ti 16 GBfits15.4 GB
RTX 3090 24 GBfits23.4 GB
RTX 4090 24 GBfits23.4 GB
RTX 5090 32 GBfits31.0 GB
L40S 48 GBfits44.0 GB
A100 80 GBfits78.2 GB
H100 80 GBfits78.1 GB
RTX PRO 6000 Blackwell 96 GBfits93.8 GB
DGX Spark (GB10) 128 GB unifiedfits107 GB
H200 141 GBfits138 GB
B200 180 GBfits176 GB

From the model card

What IBM says about granite-vision-3.3-embedding

Read the model card

Model Summary: Granite-vision-3.3-2b-embedding is an efficient embedding model based on granite-vision-3.3-2b. This model is specifically designed for multimodal document retrieval, enabling queries on documents with tables, charts, infographics, and complex layouts. The model generates ColBERT-style multi-vector representations of pages. By removing the need for OCR-based text extractions, granite-vision-3.3-2b-embedding can help simplify and accelerate RAG pipelines.

Evaluations: We evaluated granite-vision-3.3-2b-embedding alongside other top colBERT style multi-modal embedding models in the 1B-4B parameter range using two benchmark: Vidore2 and Real-MM-RAG-Bench which aim to specifically address complex multimodal document retrieval tasks.

NDCG@5 - ViDoRe V2

Collection \ ModelColPali-v1.3ColQwen2.5-v0.2ColNomic-3bColSmolvlm-v0.1granite-vision-3.3-2b-embedding
ESG Restaurant Human51.168.465.862.465.3
Economics Macro Multilingual49.956.555.447.451.2
MIT Biomedical59.763.663.558.161.5
ESG Restaurant Synthetic57.057.456.651.156.6
ESG Restaurant Synthetic Multilingual55.757.457.247.655.7
MIT Biomedical Multilingual56.561.162.550.555.5
Economics Macro51.659.860.260.958.3
Avg (ViDoRe2)54.560.660.254.057.7

NDCG@5 - REAL-MM-RAG

Collection \ ModelColPali-v1.3ColQwen2.5-v0.2ColNomic-3bColSmolvlm-v0.1granite-vision-3.3-2b-embedding
FinReport5566786573
FinSlides6879815579
TechReport7886888387
TechSlides9093929193
Avg (REAL-MM-RAG)7381857483
  • Release Date: June 11th 2025
  • License: Apache 2.0
  • Supported Input Format: Currently the model supports English instructions and images (png, jpeg) as input format.

Intended Use: The model is intended to be used in enterprise applications that involve retrieval of visual and text data. In particular, the model is well-suited for multi-modal RAG systems where the knowledge base is composed of complex enterprise documents, such as reports, slides, images, canned doscuments, manuals and more. The model can be used as a standalone retriever, or alongside a text-based retriever.

Usage

pip install -q torch torchvision torchaudio
pip install transformers==4.50

Then run the code:

from io import BytesIO

import requests
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModel
from transformers.utils.import_utils import is_flash_attn_2_available

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,
                      device_map=device,
                      attn_implementation="flash_attention_2" if is_flash_attn_2_available() else None
                      ).eval()
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)

# ─────────────────────────────────────────────
# Inputs: Image + Text
# ─────────────────────────────────────────────
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.")

# Process both inputs
print("Processing inputs...")
image_inputs = processor.process_images([image])
text_inputs = processor.process_queries([text])

# Move to correct device
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()}

# ─────────────────────────────────────────────
# Run Inference
# ─────────────────────────────────────────────
with torch.no_grad():
    print("🔍 Getting image embedding...")
    img_emb = model(**image_inputs)

    print("✍️ Getting text embedding...")
    txt_emb = model(**text_inputs)

# ─────────────────────────────────────────────
# Score the similarity
# ─────────────────────────────────────────────
print("Scoring similarity...")
similarity = processor.score(txt_emb, img_emb, batch_size=1, device=device)

print("\n" + "=" * 50)
print(f"📊 Similarity between 

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms