VAGOsolutions/sauerkrautlm-colpali

16

stars

14

commits

Python

primary language

Mar 1, 2026

updated

Browse cluster: Visual Document Retrieval & ColPali β†’

README

SauerkrautLM-ColPali: Multi-Vector Vision Retrieval Models

GitHub Hugging Face License


Fork Notice: This repository is a fork of colpali-engine by Illuin Technology. We extend the original codebase with additional model architectures for document retrieval using vision language models.

Overview

SauerkrautLM-ColPali provides model implementations and processors for multi-vector vision retrieval based on the ColPali architecture. This package includes support for several VLM backbones:

  • ColQwen3 - Based on Qwen3-VL (2B, 4B, 8B)
  • ColLFM2 - Based on LargeFlamingoModel 2 (~450M parameters)
  • ColMinistral3 - Based on Ministral-3B-Instruct with Pixtral vision encoder

Models

ModelParametersVRAM (bf16)Max TokensBase ModelLicense
SauerkrautLM-ColQwen3-1.7b-Turbo-v0.11.7B~3.4 GB262KQwen3-VL-1.7BApache 2.0
SauerkrautLM-ColQwen3-2b-v0.12.2B~4.4 GB262KQwen3-VL-2BApache 2.0
SauerkrautLM-ColQwen3-4b-v0.14B~8 GB262KQwen3-VL-4BApache 2.0
SauerkrautLM-ColQwen3-8b-v0.18B~16 GB262KQwen3-VL-8BApache 2.0
SauerkrautLM-ColLFM2-450M-v0.1450M~0.9 GB32KLFM2Apache 2.0
SauerkrautLM-ColMinistral3-3b-v0.13B~6 GB262KMinistral-3BApache 2.0

Supported Languages: English, German, French, Spanish, Italian, Portuguese

🎯 Why Visual Document Retrieval?

Traditional document retrieval relies on OCR + Text Search, which has significant limitations:

ApproachLimitations
OCR-based❌ Loses layout information, tables, charts, images
OCR-based❌ OCR errors compound in downstream tasks
OCR-based❌ Struggles with handwriting, low-quality scans
OCR-based❌ Cannot understand visual elements (logos, diagrams)

Visual Document Retrieval solves these problems by:

  • βœ… Direct visual understanding - No OCR errors, preserves full document context
  • βœ… Layout-aware - Understands tables, forms, multi-column layouts
  • βœ… Multimodal - Combines text and visual elements naturally
  • βœ… End-to-end - Single model for retrieval, no pipeline complexity

ViDoRe v1 Benchmark - 128-dim Models

πŸ† Benchmark Results

Our models achieve state-of-the-art performance on the ViDoRe (Visual Document Retrieval) benchmarks while maintaining a compact 128-dimensional embedding space for efficient retrieval.

Key Highlights

AchievementModelScoreComparison
πŸ₯‡ #1 ViDoRe v1 (128-dim)ColQwen3-8b91.08Beats all 128-dim models
πŸ₯‡ #1 ViDoRe v3 (128-dim)ColQwen3-8b58.55Best 128-dim model
πŸ₯‡ #1 Small Model (<1B)ColLFM2-450M83.56Beats colSmol-500M with fewer params
πŸ₯‡ #1 Medium (1-3B, 128-dim)ColQwen3-2b90.24Best 128-dim in 1-3B class
⚑ Most EfficientAll models128 dimSame dim as ColPali, 2.5-24x smaller than high-dim competitors

128-dim Models Comparison (Fair Comparison)

When comparing only models with the same 128-dimensional embedding space:

ModelParamsViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColQwen3-8b-v0.1 ⭐8.0B91.08 (#1)82.91 (#2)58.55 (#1)
EvoQwen2.5-VL-Retriever-7B-v17.0B90.68 (#3)83.41 (#1)-
SauerkrautLM-ColQwen3-4b-v0.14.0B90.80 (#2)81.97 (#4)56.03 (#4)
EvoQwen2.5-VL-Retriever-3B-v13.0B90.67 (#4)82.76 (#3)-
SauerkrautLM-ColQwen3-2b-v0.12.2B90.24 (#5)81.02 (#6)54.32 (#5)
colnomic-embed-multimodal-7b7.0B89.72 (#7)81.30 (#5)57.64 (#2)
colnomic-embed-multimodal-3b3.0B89.86 (#6)80.09 (#7)56.40 (#3)
colqwen2-v1.02.2B89.23 (#8)79.74 (#8)44.18 (#7)
SauerkrautLM-ColQwen3-1.7b-Turbo-v0.11.7B88.89 (#9)77.94 (#9)48.76 (#6)
colpali-v1.32.9B84.75 (#10)76.17 (#10)42.95 (#9)
SauerkrautLM-ColLFM2-450M-v0.1450M83.5674.3343.32 (#8)

Rankings among 128-dim models only. ⭐ = Best in category. Bold = our models.

Size Category Comparison (128-dim Models)

Small Models (<1B):

ModelParamsViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColLFM2-450M-v0.1 ⭐450M83.5674.3343.32
colSmol-500M500M82.4971.17-
colSmol-256M256M79.7466.9020.73

Medium Models (1-3B):

ModelParamsViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColQwen3-2b-v0.1 ⭐2.2B90.2481.0254.32
colqwen2-v1.02.2B89.2379.7444.18
SauerkrautLM-ColQwen3-1.7b-Turbo-v0.11.7B88.8977.9448.76

Large Models (3-5B):

ModelParamsViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColQwen3-4b-v0.1 ⭐4.0B90.8081.9756.03
EvoQwen2.5-VL-Retriever-3B-v13.0B90.6782.76-
colnomic-embed-multimodal-3b3.0B89.8680.0956.40

XLarge Models (5-10B):

ModelParamsViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColQwen3-8b-v0.1 ⭐8.0B91.0882.9158.55
EvoQwen2.5-VL-Retriever-7B-v17.0B90.6883.41-
colnomic-embed-multimodal-7b7.0B89.7281.3057.64

⭐ = Best 128-dim model in category

Why Choose Our Models?

  1. πŸ† #1 in 128-dim Class: Our ColQwen3-8b beats ALL other 128-dim models on ViDoRe v1 and v3

  2. ⚑ Compact Embeddings: All our models use 128 dimensions - same as ColPali/ColQwen2/colSmol

    • No storage overhead compared to standard ColPali models
    • 2.5x smaller than tomoro (320 dim)
    • 16-24x smaller than llama-nemoretriever (2048-3072 dim)
  3. πŸ’° Best-in-Class for Every Size:

    • Small (<1B): ColLFM2-450M beats colSmol-500M with 10% fewer parameters
    • Medium (1-3B): ColQwen3-2b beats colqwen2-v1.0 by +1.01 points
    • Large (3-5B): ColQwen3-4b achieves 90.80, only -0.20 behind much larger llama-nemo
    • XLarge (5-10B): ColQwen3-8b achieves the highest 128-dim score ever
  4. 🌍 Multilingual: Trained on 6 languages (EN, DE, FR, ES, IT, PT)

  5. πŸ”§ Easy Integration: MTEB-compatible for standardized evaluation

Training

Hardware

Model SizeGPUsEffective Batch Size
450M - 4B4x NVIDIA RTX 6000 Ada (48GB)256
8B4x NVIDIA A100 SXM (80GB)256

Training Datasets

Our models were trained on a diverse mix of public and proprietary datasets:

DatasetTypeDescription
vidore/colpali_train_setPublicOriginal ColPali training data with document-query pairs
openbmb/VisRAG-Ret-Train-In-domain-dataPublicVisual RAG retrieval training data
llamaindex/vdr-multilingual-trainPublicMultilingual document retrieval data
unicamp-dl/mmarcoPublicMultilingual MS MARCO (used for recovery training)
VAGO Multilingual Dataset 1In-houseProprietary multilingual document-query pairs
VAGO Multilingual Dataset 2In-houseProprietary multilingual document-query pairs

Special Training Techniques

ModelTechniqueDescription
ColLFM2-450MCurriculum LearningProgressive difficulty training across 4 stages
ColLFM2-450MHierarchical MergeCombined mMARCO specialist with retrieval model
ColQwen3-1.7b-TurboStructured PruningLayer + intermediate size pruning (-23% params)
ColQwen3-1.7b-TurbomMARCO RecoveryPre-training to heal pruned model

Installation

# From source (recommended)
pip install git+https://github.com/VAGOsolutions/sauerkrautlm-colpali

# For ColMinistral3 models (requires transformers 5.0.0rc0)
pip install "sauerkrautlm-colpali[ministral]"

Note: ColMinistral3 requires transformers>=5.0.0rc0. Install with pip install "sauerkrautlm-colpali[ministral]" or manually install the RC version.

Quick Start

ColQwen3 Example

import torch
from PIL import Image
from sauerkrautlm_colpali.models import ColQwen3, ColQwen3Processor

model_name = "VAGOsolutions/SauerkrautLM-ColQwen3-2b-v0.1"

# Load model and processor
model = ColQwen3.from_pretrained(
    model_name,
    torch_dtype=torch.bfloat16,
    device_map="cuda:0",
).eval()

processor = ColQwen3Processor.from_pretrained(model_name)

# Prepare inputs
images = [Image.open("document.png")]
queries = ["What is the main topic of this document?"]

# Process inputs
batch_images = processor.process_images(images).to(model.device)
batch_queries = processor.process_queries(queries).to(model.device)

# Get embeddings
with torch.no_grad():
    image_embeddings = model(**batch_images)
    query_embeddings = model(**batch_queries)

# Calculate similarity scores
scores = processor.score(query_embeddings, image_embeddings)
print(f"Similarity scores: {scores}")

ColMinistral3 Example

import torch
from PIL import Image
from sauerkrautlm_colpali.models import ColMinistral3, ColMinistral3Processor

model_name = "VAGOsolutions/SauerkrautLM-ColMinistral3-3b-v0.1"

model = ColMinistral3.from_pretrained(model_name)
model = model.to(dtype=torch.bfloat16, device="cuda:0").eval()

processor = ColMinistral3Processor.from_pretrained(model_name)

# Same usage pattern as ColQwen3...

ColLFM2 Example

import torch
from PIL import Image
from sauerkrautlm_colpali.models import ColLFM2, ColLFM2Processor

model_name = "VAGOsolutions/SauerkrautLM-ColLFM2-450M-v0.1"

model = ColLFM2.from_pretrained(
    model_name,
    torch_dtype=torch.bfloat16,
    device_map="cuda:0",
).eval()

processor = ColLFM2Processor.from_pretrained(model_name)

# Same usage pattern as ColQwen3...

MTEB Integration

This package includes MTEB (Massive Text Embedding Benchmark) integration for standardized evaluation on the ViDoRe benchmark. See the mteb_integration/ folder for details.

# Example: Run MTEB evaluation
import mteb

model = mteb.get_model("VAGOsolutions/SauerkrautLM-ColQwen3-2b-v0.1")
tasks = mteb.get_tasks(tasks=["VidoreArxivQARetrieval"])
evaluation = mteb.MTEB(tasks=tasks)
results = evaluation.run(model, output_folder="results/")

Architecture

All models in this package follow the ColPali architecture:

  1. Vision Encoder: Extracts patch embeddings from document images
  2. Language Model: Processes visual tokens alongside text tokens
  3. Projection Layer: Maps hidden states to 128-dimensional embedding space
  4. Late Interaction: MaxSim scoring between query and document embeddings
Document Image β†’ Vision Encoder β†’ Visual Tokens β†’ LLM β†’ Projection β†’ Multi-Vector Embeddings
                                                                              ↓
Query Text β†’ Tokenizer β†’ LLM β†’ Projection β†’ Multi-Vector Embeddings β†’ MaxSim Score

Original ColPali

This package is based on the excellent work by Illuin Technology. For the original ColPali models (ColPali, ColQwen2, ColQwen2.5, ColSmol), please use the original colpali-engine package.

Citation

If you use this package, please cite both the original ColPali paper and our work:

@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}
}

@misc{faysse2024colpaliefficientdocumentretrieval,
  title={ColPali: Efficient Document Retrieval with Vision Language Models}, 
  author={Manuel Faysse and Hugues Sibille and Tony Wu and Bilel Omrani and Gautier Viaud and CΓ©line Hudelot and Pierre Colombo},
  year={2024},
  eprint={2407.01449},
  archivePrefix={arXiv},
  primaryClass={cs.IR},
  url={https://arxiv.org/abs/2407.01449}, 
}

πŸ“Š Benchmark Visualizations

ViDoRe v1 Benchmark (128-dim Models)

ViDoRe v1 Benchmark - 128-dim Models

MTEB v1+v2 Benchmark (128-dim Models)

MTEB v1+v2 Benchmark - 128-dim Models

ViDoRe v3 Benchmark (128-dim Models)

ViDoRe v3 Benchmark - 128-dim Models

Our Models vs High-dim Models

ViDoRe v1 - Our Models vs High-dim

πŸ“‹ Summary Tables

128-dim Models Comparison

128-dim Models Summary

Comparison vs High-dim Models

High-dim Comparison

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contact

Contributors

dgolchin

7 commits

VAGOsolutions/sauerkrautlm-colpali

16

stars

14

commits

Python

primary language

Mar 1, 2026

updated

Browse cluster: Visual Document Retrieval & ColPali β†’

README

SauerkrautLM-ColPali: Multi-Vector Vision Retrieval Models

GitHub Hugging Face License


Fork Notice: This repository is a fork of colpali-engine by Illuin Technology. We extend the original codebase with additional model architectures for document retrieval using vision language models.

Overview

SauerkrautLM-ColPali provides model implementations and processors for multi-vector vision retrieval based on the ColPali architecture. This package includes support for several VLM backbones:

  • ColQwen3 - Based on Qwen3-VL (2B, 4B, 8B)
  • ColLFM2 - Based on LargeFlamingoModel 2 (~450M parameters)
  • ColMinistral3 - Based on Ministral-3B-Instruct with Pixtral vision encoder

Models

ModelParametersVRAM (bf16)Max TokensBase ModelLicense
SauerkrautLM-ColQwen3-1.7b-Turbo-v0.11.7B~3.4 GB262KQwen3-VL-1.7BApache 2.0
SauerkrautLM-ColQwen3-2b-v0.12.2B~4.4 GB262KQwen3-VL-2BApache 2.0
SauerkrautLM-ColQwen3-4b-v0.14B~8 GB262KQwen3-VL-4BApache 2.0
SauerkrautLM-ColQwen3-8b-v0.18B~16 GB262KQwen3-VL-8BApache 2.0
SauerkrautLM-ColLFM2-450M-v0.1450M~0.9 GB32KLFM2Apache 2.0
SauerkrautLM-ColMinistral3-3b-v0.13B~6 GB262KMinistral-3BApache 2.0

Supported Languages: English, German, French, Spanish, Italian, Portuguese

🎯 Why Visual Document Retrieval?

Traditional document retrieval relies on OCR + Text Search, which has significant limitations:

ApproachLimitations
OCR-based❌ Loses layout information, tables, charts, images
OCR-based❌ OCR errors compound in downstream tasks
OCR-based❌ Struggles with handwriting, low-quality scans
OCR-based❌ Cannot understand visual elements (logos, diagrams)

Visual Document Retrieval solves these problems by:

  • βœ… Direct visual understanding - No OCR errors, preserves full document context
  • βœ… Layout-aware - Understands tables, forms, multi-column layouts
  • βœ… Multimodal - Combines text and visual elements naturally
  • βœ… End-to-end - Single model for retrieval, no pipeline complexity

ViDoRe v1 Benchmark - 128-dim Models

πŸ† Benchmark Results

Our models achieve state-of-the-art performance on the ViDoRe (Visual Document Retrieval) benchmarks while maintaining a compact 128-dimensional embedding space for efficient retrieval.

Key Highlights

AchievementModelScoreComparison
πŸ₯‡ #1 ViDoRe v1 (128-dim)ColQwen3-8b91.08Beats all 128-dim models
πŸ₯‡ #1 ViDoRe v3 (128-dim)ColQwen3-8b58.55Best 128-dim model
πŸ₯‡ #1 Small Model (<1B)ColLFM2-450M83.56Beats colSmol-500M with fewer params
πŸ₯‡ #1 Medium (1-3B, 128-dim)ColQwen3-2b90.24Best 128-dim in 1-3B class
⚑ Most EfficientAll models128 dimSame dim as ColPali, 2.5-24x smaller than high-dim competitors

128-dim Models Comparison (Fair Comparison)

When comparing only models with the same 128-dimensional embedding space:

ModelParamsViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColQwen3-8b-v0.1 ⭐8.0B91.08 (#1)82.91 (#2)58.55 (#1)
EvoQwen2.5-VL-Retriever-7B-v17.0B90.68 (#3)83.41 (#1)-
SauerkrautLM-ColQwen3-4b-v0.14.0B90.80 (#2)81.97 (#4)56.03 (#4)
EvoQwen2.5-VL-Retriever-3B-v13.0B90.67 (#4)82.76 (#3)-
SauerkrautLM-ColQwen3-2b-v0.12.2B90.24 (#5)81.02 (#6)54.32 (#5)
colnomic-embed-multimodal-7b7.0B89.72 (#7)81.30 (#5)57.64 (#2)
colnomic-embed-multimodal-3b3.0B89.86 (#6)80.09 (#7)56.40 (#3)
colqwen2-v1.02.2B89.23 (#8)79.74 (#8)44.18 (#7)
SauerkrautLM-ColQwen3-1.7b-Turbo-v0.11.7B88.89 (#9)77.94 (#9)48.76 (#6)
colpali-v1.32.9B84.75 (#10)76.17 (#10)42.95 (#9)
SauerkrautLM-ColLFM2-450M-v0.1450M83.5674.3343.32 (#8)

Rankings among 128-dim models only. ⭐ = Best in category. Bold = our models.

Size Category Comparison (128-dim Models)

Small Models (<1B):

ModelParamsViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColLFM2-450M-v0.1 ⭐450M83.5674.3343.32
colSmol-500M500M82.4971.17-
colSmol-256M256M79.7466.9020.73

Medium Models (1-3B):

ModelParamsViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColQwen3-2b-v0.1 ⭐2.2B90.2481.0254.32
colqwen2-v1.02.2B89.2379.7444.18
SauerkrautLM-ColQwen3-1.7b-Turbo-v0.11.7B88.8977.9448.76

Large Models (3-5B):

ModelParamsViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColQwen3-4b-v0.1 ⭐4.0B90.8081.9756.03
EvoQwen2.5-VL-Retriever-3B-v13.0B90.6782.76-
colnomic-embed-multimodal-3b3.0B89.8680.0956.40

XLarge Models (5-10B):

ModelParamsViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColQwen3-8b-v0.1 ⭐8.0B91.0882.9158.55
EvoQwen2.5-VL-Retriever-7B-v17.0B90.6883.41-
colnomic-embed-multimodal-7b7.0B89.7281.3057.64

⭐ = Best 128-dim model in category

Why Choose Our Models?

  1. πŸ† #1 in 128-dim Class: Our ColQwen3-8b beats ALL other 128-dim models on ViDoRe v1 and v3

  2. ⚑ Compact Embeddings: All our models use 128 dimensions - same as ColPali/ColQwen2/colSmol

    • No storage overhead compared to standard ColPali models
    • 2.5x smaller than tomoro (320 dim)
    • 16-24x smaller than llama-nemoretriever (2048-3072 dim)
  3. πŸ’° Best-in-Class for Every Size:

    • Small (<1B): ColLFM2-450M beats colSmol-500M with 10% fewer parameters
    • Medium (1-3B): ColQwen3-2b beats colqwen2-v1.0 by +1.01 points
    • Large (3-5B): ColQwen3-4b achieves 90.80, only -0.20 behind much larger llama-nemo
    • XLarge (5-10B): ColQwen3-8b achieves the highest 128-dim score ever
  4. 🌍 Multilingual: Trained on 6 languages (EN, DE, FR, ES, IT, PT)

  5. πŸ”§ Easy Integration: MTEB-compatible for standardized evaluation

Training

Hardware

Model SizeGPUsEffective Batch Size
450M - 4B4x NVIDIA RTX 6000 Ada (48GB)256
8B4x NVIDIA A100 SXM (80GB)256

Training Datasets

Our models were trained on a diverse mix of public and proprietary datasets:

DatasetTypeDescription
vidore/colpali_train_setPublicOriginal ColPali training data with document-query pairs
openbmb/VisRAG-Ret-Train-In-domain-dataPublicVisual RAG retrieval training data
llamaindex/vdr-multilingual-trainPublicMultilingual document retrieval data
unicamp-dl/mmarcoPublicMultilingual MS MARCO (used for recovery training)
VAGO Multilingual Dataset 1In-houseProprietary multilingual document-query pairs
VAGO Multilingual Dataset 2In-houseProprietary multilingual document-query pairs

Special Training Techniques

ModelTechniqueDescription
ColLFM2-450MCurriculum LearningProgressive difficulty training across 4 stages
ColLFM2-450MHierarchical MergeCombined mMARCO specialist with retrieval model
ColQwen3-1.7b-TurboStructured PruningLayer + intermediate size pruning (-23% params)
ColQwen3-1.7b-TurbomMARCO RecoveryPre-training to heal pruned model

Installation

# From source (recommended)
pip install git+https://github.com/VAGOsolutions/sauerkrautlm-colpali

# For ColMinistral3 models (requires transformers 5.0.0rc0)
pip install "sauerkrautlm-colpali[ministral]"

Note: ColMinistral3 requires transformers>=5.0.0rc0. Install with pip install "sauerkrautlm-colpali[ministral]" or manually install the RC version.

Quick Start

ColQwen3 Example

import torch
from PIL import Image
from sauerkrautlm_colpali.models import ColQwen3, ColQwen3Processor

model_name = "VAGOsolutions/SauerkrautLM-ColQwen3-2b-v0.1"

# Load model and processor
model = ColQwen3.from_pretrained(
    model_name,
    torch_dtype=torch.bfloat16,
    device_map="cuda:0",
).eval()

processor = ColQwen3Processor.from_pretrained(model_name)

# Prepare inputs
images = [Image.open("document.png")]
queries = ["What is the main topic of this document?"]

# Process inputs
batch_images = processor.process_images(images).to(model.device)
batch_queries = processor.process_queries(queries).to(model.device)

# Get embeddings
with torch.no_grad():
    image_embeddings = model(**batch_images)
    query_embeddings = model(**batch_queries)

# Calculate similarity scores
scores = processor.score(query_embeddings, image_embeddings)
print(f"Similarity scores: {scores}")

ColMinistral3 Example

import torch
from PIL import Image
from sauerkrautlm_colpali.models import ColMinistral3, ColMinistral3Processor

model_name = "VAGOsolutions/SauerkrautLM-ColMinistral3-3b-v0.1"

model = ColMinistral3.from_pretrained(model_name)
model = model.to(dtype=torch.bfloat16, device="cuda:0").eval()

processor = ColMinistral3Processor.from_pretrained(model_name)

# Same usage pattern as ColQwen3...

ColLFM2 Example

import torch
from PIL import Image
from sauerkrautlm_colpali.models import ColLFM2, ColLFM2Processor

model_name = "VAGOsolutions/SauerkrautLM-ColLFM2-450M-v0.1"

model = ColLFM2.from_pretrained(
    model_name,
    torch_dtype=torch.bfloat16,
    device_map="cuda:0",
).eval()

processor = ColLFM2Processor.from_pretrained(model_name)

# Same usage pattern as ColQwen3...

MTEB Integration

This package includes MTEB (Massive Text Embedding Benchmark) integration for standardized evaluation on the ViDoRe benchmark. See the mteb_integration/ folder for details.

# Example: Run MTEB evaluation
import mteb

model = mteb.get_model("VAGOsolutions/SauerkrautLM-ColQwen3-2b-v0.1")
tasks = mteb.get_tasks(tasks=["VidoreArxivQARetrieval"])
evaluation = mteb.MTEB(tasks=tasks)
results = evaluation.run(model, output_folder="results/")

Architecture

All models in this package follow the ColPali architecture:

  1. Vision Encoder: Extracts patch embeddings from document images
  2. Language Model: Processes visual tokens alongside text tokens
  3. Projection Layer: Maps hidden states to 128-dimensional embedding space
  4. Late Interaction: MaxSim scoring between query and document embeddings
Document Image β†’ Vision Encoder β†’ Visual Tokens β†’ LLM β†’ Projection β†’ Multi-Vector Embeddings
                                                                              ↓
Query Text β†’ Tokenizer β†’ LLM β†’ Projection β†’ Multi-Vector Embeddings β†’ MaxSim Score

Original ColPali

This package is based on the excellent work by Illuin Technology. For the original ColPali models (ColPali, ColQwen2, ColQwen2.5, ColSmol), please use the original colpali-engine package.

Citation

If you use this package, please cite both the original ColPali paper and our work:

@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}
}

@misc{faysse2024colpaliefficientdocumentretrieval,
  title={ColPali: Efficient Document Retrieval with Vision Language Models}, 
  author={Manuel Faysse and Hugues Sibille and Tony Wu and Bilel Omrani and Gautier Viaud and CΓ©line Hudelot and Pierre Colombo},
  year={2024},
  eprint={2407.01449},
  archivePrefix={arXiv},
  primaryClass={cs.IR},
  url={https://arxiv.org/abs/2407.01449}, 
}

πŸ“Š Benchmark Visualizations

ViDoRe v1 Benchmark (128-dim Models)

ViDoRe v1 Benchmark - 128-dim Models

MTEB v1+v2 Benchmark (128-dim Models)

MTEB v1+v2 Benchmark - 128-dim Models

ViDoRe v3 Benchmark (128-dim Models)

ViDoRe v3 Benchmark - 128-dim Models

Our Models vs High-dim Models

ViDoRe v1 - Our Models vs High-dim

πŸ“‹ Summary Tables

128-dim Models Comparison

128-dim Models Summary

Comparison vs High-dim Models

High-dim Comparison

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contact

Contributors

dgolchin

7 commits

Languages

Python

100.0%