Views
No views yet


| Benchmark | Score | Rank (128-dim) |
|---|---|---|
| ViDoRe v1 | 90.80 | #2 |
| MTEB v1+v2 | 81.97 | #4 |
| ViDoRe v3 | 56.03 | #4 |
| Model | Params | Dim | ViDoRe v1 | MTEB v1+v2 | ViDoRe v3 |
|---|---|---|---|---|---|
| SauerkrautLM-ColQwen3-4b-v0.1 ⭐ | 4.0B | 128 | 90.80 | 81.97 | 56.03 |
| EvoQwen2.5-VL-Retriever-3B-v1 | 3.0B | 128 | 90.67 | 82.76 | - |
| colnomic-embed-multimodal-3b | 3.0B | 128 | 89.86 | 80.09 | 56.40 |
| colqwen2.5-v0.2 | 3.0B | 128 | 89.54 | 81.12 | 52.44 |
| SauerkrautLM-ColMinistral3-3b-v0.1 | 3.0B | 128 | 81.98 | 71.93 | 40.50 |
| Task | Score |
|---|---|
| ArxivQA | 91.83 |
| DocVQA | 66.96 🥇 |
| InfoVQA | 94.23 |
| ShiftProject | 90.55 |
| SyntheticDocQA-AI | 99.63 |
| SyntheticDocQA-Energy | 96.52 |
| SyntheticDocQA-Gov | 96.16 |
| SyntheticDocQA-Health | 100.00 🥇 |
| TabFQuAD | 89.48 |
| TATDQA | 82.66 |
| Average | 90.80 |
| Task | Score |
|---|---|
| ArxivQA | 91.83 |
| DocVQA | 66.96 🥇 |
| InfoVQA | 94.23 |
| ShiftProject | 90.55 |
| SyntheticDocQA-AI | 99.63 |
| SyntheticDocQA-Energy | 96.52 |
| SyntheticDocQA-Gov | 96.16 |
| SyntheticDocQA-Health | 100.00 🥇 |
| TabFQuAD | 89.48 |
| TATDQA | 82.66 |
| Task | Score |
|---|---|
| ViDoRe-v2-2BioMed | 58.85 |
| ViDoRe-v2-2Econ | 54.96 |
| ViDoRe-v2-2ESG-HL | 69.23 |
| ViDoRe-v2-2ESG | 56.52 |
| Combined Average | 81.97 |
| Task | Score |
|---|---|
| ViDoRe-v3-CS | 73.96 |
| ViDoRe-v3-Energy | 64.66 |
| ViDoRe-v3-FinanceEn | 55.92 |
| ViDoRe-v3-FinanceFr | 42.87 |
| ViDoRe-v3-HR | 55.70 |
| ViDoRe-v3-Industry | 46.06 |
| ViDoRe-v3-Pharma | 60.70 |
| ViDoRe-v3-Physics | 48.33 |
| Average | 56.03 |
| Model | Params | ViDoRe v1 | MTEB v1+v2 | ViDoRe v3 |
|---|---|---|---|---|
| SauerkrautLM-ColQwen3-8b-v0.1 | 8.0B | 91.08 (#1) | 82.91 (#2) | 58.55 (#1) |
| SauerkrautLM-ColQwen3-4b-v0.1 ⭐ | 4.0B | 90.80 (#2) | 81.97 (#4) | 56.03 (#4) |
| EvoQwen2.5-VL-Retriever-7B-v1 | 7.0B | 90.68 (#3) | 83.41 (#1) | - |
| EvoQwen2.5-VL-Retriever-3B-v1 | 3.0B | 90.67 (#4) | 82.76 (#3) | - |
| SauerkrautLM-ColQwen3-2b-v0.1 | 2.2B | 90.24 (#5) | 81.02 (#7) | 54.32 (#5) |
| colqwen2.5-v0.2 | 3.0B | 89.54 (#8) | 81.12 (#6) | 52.44 (#6) |


| Property | Value |
|---|---|
| Base Model | Qwen/Qwen3-VL-4B |
| Parameters | 4.0B |
| Embedding Dimension | 128 |
| VRAM (bfloat16) | ~8 GB |
| Max Context Length | 262,144 tokens |
| License | Apache 2.0 |
| Setting | Value |
|---|---|
| GPUs | 4x NVIDIA RTX 6000 Ada (48GB) |
| Effective Batch Size | 256 |
| Precision | bfloat16 |
| Dataset | Type | Description |
|---|---|---|
| vidore/colpali_train_set | Public | ColPali training data |
| openbmb/VisRAG-Ret-Train-In-domain-data | Public | Visual RAG training data |
| llamaindex/vdr-multilingual-train | Public | Multilingual document retrieval |
| VAGO Multilingual Dataset 1 | In-house | Proprietary multilingual document-query pairs |
| VAGO Multilingual Dataset 2 | In-house | Proprietary multilingual document-query pairs |
MultiVectorEncoder:pip install "sentence-transformers[image]>=6.0.0"1from sentence_transformers import MultiVectorEncoder
2
3model = MultiVectorEncoder(
4 "VAGOsolutions/SauerkrautLM-ColQwen3-4b-v0.1",
5 model_kwargs={"dtype": "bfloat16"},
6)
7
8queries = [
9 "What is the variable represented on the y-axis of the graph?",
10 "Total outlay is maximum in which year?",
11]
12images = [
13 "https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc1.jpg",
14 "https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc2.jpg",
15]
16
17query_embeddings = model.encode_query(queries)
18image_embeddings = model.encode_document(images)
19print(query_embeddings[0].shape, image_embeddings[0].shape)
20# torch.Size([25, 128]) torch.Size([1251, 128])
21
22# Diagonal should have higher scores
23scores = model.similarity(query_embeddings, image_embeddings)
24print(scores)
25# tensor([[16.3877, 8.1367],
26# [ 5.8350, 15.3848]], device='cuda:0')⚠️ Important: Install our package first before loading the model:
pip install git+https://github.com/VAGOsolutions/sauerkrautlm-colpali1import torch
2from PIL import Image
3from sauerkrautlm_colpali.models import ColQwen3, ColQwen3Processor
4
5model_name = "VAGOsolutions/SauerkrautLM-ColQwen3-4b-v0.1"
6
7model = ColQwen3.from_pretrained(
8 model_name,
9 torch_dtype=torch.bfloat16,
10 attn_implementation="flash_attention_2",
11 device_map="cuda:0",
12).eval()
13
14processor = ColQwen3Processor.from_pretrained(model_name)
15
16images = [Image.open("document.png")]
17queries = ["What is the main topic?"]
18
19batch_images = processor.process_images(images).to(model.device)
20batch_queries = processor.process_queries(queries).to(model.device)
21
22with torch.no_grad():
23 image_embeddings = model(**batch_images)
24 query_embeddings = model(**batch_queries)
25
26scores = processor.score(query_embeddings, image_embeddings)


1@misc{sauerkrautlm-colpali-2025,
2 title={SauerkrautLM-ColPali: Multi-Vector Vision Retrieval Models},
3 author={David Golchinfar},
4 organization={VAGO Solutions},
5 year={2025},
6 url={https://github.com/VAGOsolutions/sauerkrautlm-colpali}
7}