VAGOsolutions/SauerkrautLM-ColLFM2-450M-v0.1

Model

11

stars

5

commits

4

repos using this model

2

linked in READMEs

Aug 27, 2026

updated

collfm2
colpali
curriculum-learning
document-retrieval
efficient
hierarchical-merge
image-text-to-text
late-interaction
lfm2
mteb
multi-vector
safetensors
sauerkrautlm-colpali
sentence-transformers
small-model
vidore
vision-language-model
visual-retrieval
Browse cluster: Multilingual Large Language Models β†’

README

SauerkrautLM-ColLFM2-450M-v0.1

VAGO Solutions Logo

πŸ† #1 Small Model (<1B) | Best-in-Class Efficiency

SauerkrautLM-ColLFM2-450M-v0.1 is the #1 small model for visual document retrieval, achieving 83.56 NDCG@5 on ViDoRe v1 - beating colSmol-500M (82.49) with 10% fewer parameters!

ViDoRe v1 Benchmark - 128-dim Models

🎯 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

πŸ† Key Achievements

BenchmarkScoreRank (Small <1B)
ViDoRe v183.56πŸ₯‡ #1
MTEB v1+v274.33πŸ₯‡ #1
ViDoRe v343.32πŸ₯‡ #1

Small Category Comparison (<1B, 128-dim)

ModelParamsDimViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColLFM2-450M-v0.1 ⭐450M12883.5674.3343.32
colSmol-500M500M12882.4971.17-
colSmol-256M256M12879.7466.9020.73

#1 in ALL benchmarks for small models!

Detailed Benchmark Results

πŸ“Š ViDoRe v1 (NDCG@5) - Click to expand
TaskScore
ArxivQA76.11
DocVQA59.11
InfoVQA88.36
ShiftProject73.14
SyntheticDocQA-AI98.76
SyntheticDocQA-Energy94.39
SyntheticDocQA-Gov94.61
SyntheticDocQA-Health97.32
TabFQuAD80.91
TATDQA72.88
Average83.56
πŸ“Š MTEB v1+v2 (NDCG@5) - Click to expand

ViDoRe v1 Tasks:

TaskScore
ArxivQA76.11
DocVQA59.11
InfoVQA88.36
ShiftProject73.14
SyntheticDocQA-AI98.76
SyntheticDocQA-Energy94.39
SyntheticDocQA-Gov94.61
SyntheticDocQA-Health97.32
TabFQuAD80.91
TATDQA72.88

ViDoRe v2 Tasks (Multilingual):

TaskScore
ViDoRe-v2-2BioMed51.00
ViDoRe-v2-2Econ48.35
ViDoRe-v2-2ESG-HL54.87
ViDoRe-v2-2ESG50.80
Combined Average74.33
πŸ“Š ViDoRe v3 (NDCG@10) - Click to expand
TaskScore
ViDoRe-v3-CS58.08
ViDoRe-v3-Energy47.92
ViDoRe-v3-FinanceEn47.72
ViDoRe-v3-FinanceFr33.00
ViDoRe-v3-HR43.37
ViDoRe-v3-Industry30.21
ViDoRe-v3-Pharma51.42
ViDoRe-v3-Physics34.83
Average43.32

Efficiency Comparison

MetricColLFM2-450McolSmol-500MAdvantage
Parameters450M500M-10%
ViDoRe v183.5682.49+1.07
MTEB v1+v274.3371.17+3.16

πŸ“‹ Summary Tables

128-dim Models Comparison

128-dim Models Summary

Comparison vs High-dim Models

High-dim Comparison

✨ Key Features

  • πŸ† Best Small Model: #1 in ALL benchmarks for <1B models
  • ⚑ Ultra Efficient: Only 450M parameters, ~0.9GB VRAM
  • πŸŽ“ Curriculum Learning: Trained with progressive difficulty
  • πŸ”€ Hierarchical Merge: Advanced model merging for optimal performance
  • πŸ“ Native 512x512: Optimized for document resolution
  • 🌍 Multilingual: 6 languages (EN, DE, FR, ES, IT, PT)

Model Details

PropertyValue
Base ModelLiquidAI/LFM2-VL-450M
Parameters450M
Embedding Dimension128
VRAM (bfloat16)~0.9 GB
Max Context Length32,768 tokens
Image Resolution512Γ—512 native
Image Tokens64-256 (dynamic)
Vision EncoderSigLIP2 (86M)
LicenseLFM 1.0

πŸŽ“ Advanced Training Methodology

1. Curriculum Learning

Unlike standard training, ColLFM2 was trained with curriculum learning:

Stage 1: Easy examples (high-quality, clear documents)
    ↓
Stage 2: Medium examples (mixed quality)
    ↓
Stage 3: Hard examples (complex layouts, noisy scans)
    ↓
Stage 4: Full mixture with hard negatives

2. Hierarchical Model Merging

Base LFM2-VL-450M
        ↓
    β”Œβ”€β”€β”€β”΄β”€β”€β”€β”
    ↓       ↓
mMARCO   Retrieval
Specialist  Model
    ↓       ↓
    β””β”€β”€β”€β”¬β”€β”€β”€β”˜
        ↓
  Hierarchical Merge
        ↓
   Final Model
  • mMARCO Specialist: Sub-model trained on mMARCO for retrieval fundamentals
  • Retrieval Model: Trained on document retrieval datasets
  • Hierarchical Merge: Combined using learned merge weights

Hardware & Configuration

SettingValue
GPUs4x NVIDIA RTX 6000 Ada (48GB)
Effective Batch Size256
Precisionbfloat16
Curriculum Stages4

Datasets

DatasetDescription
vidore/colpali_train_setColPali training data
openbmb/VisRAG-Ret-Train-In-domain-dataVisual RAG training data
llamaindex/vdr-multilingual-trainMultilingual retrieval (with curriculum)
unicamp-dl/mmarcomMARCO for specialist model
VAGO Multilingual DatasetsProprietary multilingual data

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-ColLFM2-450M-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([14, 128]) torch.Size([1792, 128])

# Diagonal should have higher scores
scores = model.similarity(query_embeddings, image_embeddings)
print(scores)
# tensor([[13.5820, 13.4766],
#         [ 9.2461,  9.5703]], device='cuda:0')

SauerkrautLM ColPali

⚠️ Important: Install our package first before loading the model:

pip install git+https://github.com/VAGOsolutions/sauerkrautlm-colpali
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)

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)

Use Cases

βœ… Perfect for:

  • Edge deployment (Raspberry Pi, Jetson)
  • Mobile applications
  • High-throughput batch processing
  • Cost-sensitive deployments
  • Real-time retrieval systems

πŸ“Š Additional Benchmark Visualizations

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

License

This model is licensed under the LFM 1.0 License from LiquidAI. Please review the full license before commercial use.

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

Contributors

DavidGF

4 commits

tomaarsen

1 commits

VAGOsolutions/SauerkrautLM-ColLFM2-450M-v0.1

Model

11

stars

5

commits

4

repos using this model

2

linked in READMEs

Aug 27, 2026

updated

collfm2
colpali
curriculum-learning
document-retrieval
efficient
hierarchical-merge
image-text-to-text
late-interaction
lfm2
mteb
multi-vector
safetensors
sauerkrautlm-colpali
sentence-transformers
small-model
vidore
vision-language-model
visual-retrieval
Browse cluster: Multilingual Large Language Models β†’

README

SauerkrautLM-ColLFM2-450M-v0.1

VAGO Solutions Logo

πŸ† #1 Small Model (<1B) | Best-in-Class Efficiency

SauerkrautLM-ColLFM2-450M-v0.1 is the #1 small model for visual document retrieval, achieving 83.56 NDCG@5 on ViDoRe v1 - beating colSmol-500M (82.49) with 10% fewer parameters!

ViDoRe v1 Benchmark - 128-dim Models

🎯 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

πŸ† Key Achievements

BenchmarkScoreRank (Small <1B)
ViDoRe v183.56πŸ₯‡ #1
MTEB v1+v274.33πŸ₯‡ #1
ViDoRe v343.32πŸ₯‡ #1

Small Category Comparison (<1B, 128-dim)

ModelParamsDimViDoRe v1MTEB v1+v2ViDoRe v3
SauerkrautLM-ColLFM2-450M-v0.1 ⭐450M12883.5674.3343.32
colSmol-500M500M12882.4971.17-
colSmol-256M256M12879.7466.9020.73

#1 in ALL benchmarks for small models!

Detailed Benchmark Results

πŸ“Š ViDoRe v1 (NDCG@5) - Click to expand
TaskScore
ArxivQA76.11
DocVQA59.11
InfoVQA88.36
ShiftProject73.14
SyntheticDocQA-AI98.76
SyntheticDocQA-Energy94.39
SyntheticDocQA-Gov94.61
SyntheticDocQA-Health97.32
TabFQuAD80.91
TATDQA72.88
Average83.56
πŸ“Š MTEB v1+v2 (NDCG@5) - Click to expand

ViDoRe v1 Tasks:

TaskScore
ArxivQA76.11
DocVQA59.11
InfoVQA88.36
ShiftProject73.14
SyntheticDocQA-AI98.76
SyntheticDocQA-Energy94.39
SyntheticDocQA-Gov94.61
SyntheticDocQA-Health97.32
TabFQuAD80.91
TATDQA72.88

ViDoRe v2 Tasks (Multilingual):

TaskScore
ViDoRe-v2-2BioMed51.00
ViDoRe-v2-2Econ48.35
ViDoRe-v2-2ESG-HL54.87
ViDoRe-v2-2ESG50.80
Combined Average74.33
πŸ“Š ViDoRe v3 (NDCG@10) - Click to expand
TaskScore
ViDoRe-v3-CS58.08
ViDoRe-v3-Energy47.92
ViDoRe-v3-FinanceEn47.72
ViDoRe-v3-FinanceFr33.00
ViDoRe-v3-HR43.37
ViDoRe-v3-Industry30.21
ViDoRe-v3-Pharma51.42
ViDoRe-v3-Physics34.83
Average43.32

Efficiency Comparison

MetricColLFM2-450McolSmol-500MAdvantage
Parameters450M500M-10%
ViDoRe v183.5682.49+1.07
MTEB v1+v274.3371.17+3.16

πŸ“‹ Summary Tables

128-dim Models Comparison

128-dim Models Summary

Comparison vs High-dim Models

High-dim Comparison

✨ Key Features

  • πŸ† Best Small Model: #1 in ALL benchmarks for <1B models
  • ⚑ Ultra Efficient: Only 450M parameters, ~0.9GB VRAM
  • πŸŽ“ Curriculum Learning: Trained with progressive difficulty
  • πŸ”€ Hierarchical Merge: Advanced model merging for optimal performance
  • πŸ“ Native 512x512: Optimized for document resolution
  • 🌍 Multilingual: 6 languages (EN, DE, FR, ES, IT, PT)

Model Details

PropertyValue
Base ModelLiquidAI/LFM2-VL-450M
Parameters450M
Embedding Dimension128
VRAM (bfloat16)~0.9 GB
Max Context Length32,768 tokens
Image Resolution512Γ—512 native
Image Tokens64-256 (dynamic)
Vision EncoderSigLIP2 (86M)
LicenseLFM 1.0

πŸŽ“ Advanced Training Methodology

1. Curriculum Learning

Unlike standard training, ColLFM2 was trained with curriculum learning:

Stage 1: Easy examples (high-quality, clear documents)
    ↓
Stage 2: Medium examples (mixed quality)
    ↓
Stage 3: Hard examples (complex layouts, noisy scans)
    ↓
Stage 4: Full mixture with hard negatives

2. Hierarchical Model Merging

Base LFM2-VL-450M
        ↓
    β”Œβ”€β”€β”€β”΄β”€β”€β”€β”
    ↓       ↓
mMARCO   Retrieval
Specialist  Model
    ↓       ↓
    β””β”€β”€β”€β”¬β”€β”€β”€β”˜
        ↓
  Hierarchical Merge
        ↓
   Final Model
  • mMARCO Specialist: Sub-model trained on mMARCO for retrieval fundamentals
  • Retrieval Model: Trained on document retrieval datasets
  • Hierarchical Merge: Combined using learned merge weights

Hardware & Configuration

SettingValue
GPUs4x NVIDIA RTX 6000 Ada (48GB)
Effective Batch Size256
Precisionbfloat16
Curriculum Stages4

Datasets

DatasetDescription
vidore/colpali_train_setColPali training data
openbmb/VisRAG-Ret-Train-In-domain-dataVisual RAG training data
llamaindex/vdr-multilingual-trainMultilingual retrieval (with curriculum)
unicamp-dl/mmarcomMARCO for specialist model
VAGO Multilingual DatasetsProprietary multilingual data

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-ColLFM2-450M-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([14, 128]) torch.Size([1792, 128])

# Diagonal should have higher scores
scores = model.similarity(query_embeddings, image_embeddings)
print(scores)
# tensor([[13.5820, 13.4766],
#         [ 9.2461,  9.5703]], device='cuda:0')

SauerkrautLM ColPali

⚠️ Important: Install our package first before loading the model:

pip install git+https://github.com/VAGOsolutions/sauerkrautlm-colpali
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)

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)

Use Cases

βœ… Perfect for:

  • Edge deployment (Raspberry Pi, Jetson)
  • Mobile applications
  • High-throughput batch processing
  • Cost-sensitive deployments
  • Real-time retrieval systems

πŸ“Š Additional Benchmark Visualizations

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

License

This model is licensed under the LFM 1.0 License from LiquidAI. Please review the full license before commercial use.

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

Contributors

DavidGF

4 commits

tomaarsen

1 commits