VAGOsolutions/SauerkrautLM-ColQwen3-1.7b-Turbo-v0.1
SauerkrautLM-ColQwen3-1.7b-Turbo-v0.1
<p align="center"> <img src="https://vago-solutions.ai/wp-content/uploads/2025/12/Sauerkrautlm-colpali-scaled.png" alt="VAGO Solutions Logo" width="75%"/> </p>
โก Turbo Edition | 23% Smaller, 88.89 ViDoRe v1
SauerkrautLM-ColQwen3-1.7b-Turbo-v0.1 is a pruned and optimized model created by applying structured pruning to Qwen3-VL-2B. Despite being 23% smaller, it achieves 88.89 NDCG@5 on ViDoRe v1 - still beating ColPali-v1.3 (84.75) by a large margin!
<p align="center"> <img src="https://raw.githubusercontent.com/VAGOsolutions/sauerkrautlm-colpali/main/assets/benchmark128dimv1.png" alt="ViDoRe v1 Benchmark - 128-dim Models" width="100%"/> </p>
๐ฏ Why Visual Document Retrieval?
Traditional OCR-based retrieval loses layout, tables, and visual context. Our visual approach:
- โ No OCR errors - Direct visual understanding
- โ Layout-aware - Understands tables, forms, charts
- โ End-to-end - Single model, no pipeline complexity
โจ What Makes This "Turbo"?
๐ Benchmark Results
Medium Category Comparison (1-3B, 128-dim)
vs. ColPali Baseline
Turbo model beats ColPali-v1.3 by +4.14 points with 42% fewer parameters!
Detailed Benchmark Results
<details> <summary><b>๐ ViDoRe v1 (NDCG@5) - Click to expand</b></summary>
</details>
<details> <summary><b>๐ MTEB v1+v2 (NDCG@5) - Click to expand</b></summary>
ViDoRe v1 Tasks: | Task | Score | |------|-------| | ArxivQA | 91.09 | | DocVQA | 60.98 | | InfoVQA | 92.08 | | ShiftProject | 87.76 | | SyntheticDocQA-AI | 98.16 | | SyntheticDocQA-Energy | 97.49 | | SyntheticDocQA-Gov | 94.88 | | SyntheticDocQA-Health | 98.26 | | TabFQuAD | 87.03 | | TATDQA | 81.19 |
ViDoRe v2 Tasks (Multilingual): | Task | Score | |------|-------| | ViDoRe-v2-2BioMed | 53.92 | | ViDoRe-v2-2Econ | 47.85 | | ViDoRe-v2-2ESG-HL | 57.23 | | ViDoRe-v2-2ESG | 43.27 | | Combined Average | 77.94 |
</details>
<details> <summary><b>๐ ViDoRe v3 (NDCG@10) - Click to expand</b></summary>
</details>
๐ Summary Tables
128-dim Models Comparison
<p align="center"> <img src="https://raw.githubusercontent.com/VAGOsolutions/sauerkrautlm-colpali/main/assets/tablesummary128dim.png" alt="128-dim Models Summary" width="100%"/> </p>
Comparison vs High-dim Models
<p align="center"> <img src="https://raw.githubusercontent.com/VAGOsolutions/sauerkrautlm-colpali/main/assets/tablesummaryhighdim_comparison.png" alt="High-dim Comparison" width="100%"/> </p>
โ๏ธ Pruning Methodology
Structured Pruning
- Layer Pruning: Removed less important transformer layers based on gradient-based importance scoring
- Intermediate Size Reduction: Reduced FFN intermediate dimensions
- Result: 23% parameter reduction (2.2B โ 1.7B)
Recovery Training with mMARCO
After pruning, the model underwent recovery training:
Pruned Model โ mMARCO Pre-training โ Fine-tuning โ Final ModelThe mMARCO pre-training was crucial to "heal" the model after pruning.
Model Details
Training
Hardware & Configuration
Training Pipeline
- Phase 1: Structured Pruning (gradient-based importance)
- Phase 2: mMARCO Recovery Training
- Phase 3: Retrieval Fine-tuning on standard datasets
Installation & Usage
Sentence Transformers
This model can be used with Sentence Transformers as a multi-vector (ColBERT-style late interaction) retriever via the MultiVectorEncoder:
pip install "sentence-transformers[image]>=6.0.0"from sentence_transformers import MultiVectorEncoder
model = MultiVectorEncoder("VAGOsolutions/SauerkrautLM-ColQwen3-1.7b-Turbo-v0.1")
queries = [
"What is the variable represented on the y-axis of the graph?",
"Total outlay is maximum in which year?",
]
images = [
"https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc1.jpg",
"https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc2.jpg",
]
query_embeddings = model.encode_query(queries)
image_embeddings = model.encode_document(images)
print(query_embeddings[0].shape, image_embeddings[0].shape)
# torch.Size([25, 128]) torch.Size([1251, 128])
# Diagonal should have higher scores
scores = model.similarity(query_embeddings, image_embeddings)
print(scores)
# tensor([[14.5811, 11.6055],
# [ 7.1665, 14.7393]], device='cuda:0')SauerkrautLM ColPali
โ ๏ธ Important: Install our package first before loading the model:
pip install git+https://github.com/VAGOsolutions/sauerkrautlm-colpaliimport torch
from PIL import Image
from sauerkrautlm_colpali.models import ColQwen3, ColQwen3Processor
model_name = "VAGOsolutions/SauerkrautLM-ColQwen3-1.7b-Turbo-v0.1"
model = ColQwen3.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
attn_implementation="flash_attention_2",
device_map="cuda:0",
).eval()
processor = ColQwen3Processor.from_pretrained(model_name)
images = [Image.open("document.png")]
queries = ["What is the main topic?"]
batch_images = processor.process_images(images).to(model.device)
batch_queries = processor.process_queries(queries).to(model.device)
with torch.no_grad():
image_embeddings = model(**batch_images)
query_embeddings = model(**batch_queries)
scores = processor.score(query_embeddings, image_embeddings)When to Use Turbo
โ Choose Turbo when:
- Running on limited GPU memory (< 4GB available)
- Need faster inference
- Deploying on edge devices
- Cost optimization is priority
โ Choose 2B instead when:
- Maximum accuracy required
- Memory is not a constraint
๐ Additional Benchmark Visualizations
MTEB v1+v2 Benchmark (128-dim Models)
<p align="center"> <img src="https://raw.githubusercontent.com/VAGOsolutions/sauerkrautlm-colpali/main/assets/benchmark128dimv1v2.png" alt="MTEB v1+v2 Benchmark - 128-dim Models" width="100%"/> </p>
ViDoRe v3 Benchmark (128-dim Models)
<p align="center"> <img src="https://raw.githubusercontent.com/VAGOsolutions/sauerkrautlm-colpali/main/assets/benchmark128dimv3.png" alt="ViDoRe v3 Benchmark - 128-dim Models" width="100%"/> </p>
Our Models vs High-dim Models
<p align="center"> <img src="https://raw.githubusercontent.com/VAGOsolutions/sauerkrautlm-colpali/main/assets/benchmarkoursvshighdimv1.png" alt="ViDoRe v1 - Our Models vs High-dim" width="100%"/> </p>
Citation
@misc{sauerkrautlm-colpali-2025,
title={SauerkrautLM-ColPali: Multi-Vector Vision Retrieval Models},
author={David Golchinfar},
organization={VAGO Solutions},
year={2025},
url={https://github.com/VAGOsolutions/sauerkrautlm-colpali}
}Contact
- VAGO Solutions: https://vago-solutions.ai
- GitHub: https://github.com/VAGOsolutions
