Buckets:
| Name | Size | Uploaded | Xet hash |
|---|---|---|---|
| code | 26 items | ||
| colpali | 29 items | ||
| examples | 19 items | ||
| .gitattributes | 200 Bytes xet | 1005d938 | |
| .gitignore | 138 Bytes xet | 968f44ab | |
| LICENSE | 21.5 kB xet | ea239cc7 | |
| NOTICE | 550 Bytes xet | 1d112934 | |
| README.md | 8.61 kB xet | c1c3f1f4 | |
| chat_template.jinja | 7.76 kB xet | 89948697 | |
| config.json | 2.82 kB xet | 5fe08230 | |
| env.sh.example | 486 Bytes xet | 0a99ee22 | |
| infer.py | 2.9 kB xet | 4352452d | |
| model.safetensors | 16.8 GB xet | 8d8bcd1d | |
| processor_config.json | 1.19 kB xet | 05f18f4d | |
| requirements.txt | 144 Bytes xet | 6505b6d3 | |
| tokenizer.json | 20 MB xet | 777bcaa6 | |
| tokenizer_config.json | 1.12 kB xet | 5b148ccb |
🏛️ EVIE-8B: High-Capacity Visual Document Retrieval
4096-Dimensional Token Representation • Bidirectional Full-Attention • Teacher for EVIE-4.5B Prefix-MRL
🌟 Highlights
- SOTA Retrieval Performance: 66.75 nDCG@10 on ViDoRe V3 Public, delivering industry-leading visual document retrieval accuracy.
- High-Capacity 4096D Representations: Full per-token multi-vector embeddings preserving fine-grained layout, typography, charts, and table structures.
- Teacher Foundation: Provides capacity-aware relation and margin distillation targets for the lightweight EVIE-4.5B Prefix-MRL model.
- Multi-Benchmark 138-Task Coverage: Thoroughly validated across 138 tasks (ViDoRe V1, V2, V3, and JinaVDR) across 4 standard metric families (nDCG, Recall, MAP, MRR @1/5/10).
📊 Comprehensive ViDoRe Leaderboard Comparison
Performance comparison across modern multi-vector late-interaction visual document retrievers on ViDoRe:
| Rank | Model | Base Model | Param | Embed Dim | ViDoRe V1 | ViDoRe V2 | ViDoRe V3 |
|---|---|---|---|---|---|---|---|
| 🥇 | EVIE-8B | Qwen3.5-9B | 8.41B | 4096D | 92.64 | 75.35 | 66.75 |
| 🥈 | EVIE-4.5B | Qwen3.5-4B | 4.61B | 64–2048D Prefix-MRL | 92.53 | 74.91 | 66.02 |
| 🥉 | EVIE-Preview-4.5B | Qwen3.5-4B | 4.54B | 128D | 91.73 | 70.87 | 65.36 |
| 4 | webAI-ColVec1.1-8b | Qwen2.5-VL | 8.40B | 640D | 91.30 | 65.82 | 65.32 |
| 5 | VultronRetrieverPrime-8B | Qwen3.5-9B | 8.40B | 320D | 92.08 | 68.18 | 64.26 |
| 6 | webAI-ColVec1.1-4b | Qwen2.5-VL | 4.54B | 640D | 90.49 | 63.60 | 63.90 |
| 7 | VultronRetrieverCore-4.5B | Qwen3.5-4B | 4.50B | 320D | 92.21 | 66.12 | 63.57 |
| 8 | nemotron-colembed-vl-8b-v2 | Nemotron-8B | 8.80B | 4096D | 92.65 | 65.16 | 63.54 |
| 9 | tomoro-colqwen3-embed-8b | Qwen2.5-VL | 8.00B | 320D | 90.76 | 65.40 | 61.60 |
| 10 | nemotron-colembed-vl-4b-v2 | Nemotron-4B | 4.80B | 2560D | 91.62 | 64.49 | 61.42 |
| 11 | athrael-soju/colqwen3.5-4.5B-v3 | Qwen3.5-4B | 4.60B | 128D | 91.54 | 64.25 | 61.46 |
| 12 | tomoro-colqwen3-embed-4b | Qwen2.5-VL | 4.00B | 320D | 90.57 | 64.69 | 60.16 |
| 13 | VultronRetrieverFlash-0.8B | Qwen3.5-0.8B | 0.85B | 320D | 88.15 | 60.36 | 56.16 |
🔍 ViDoRe V3 Per-Domain Breakdown (nDCG@10)
| Model | Avg | CompSci | Energy | Finance EN | Finance FR | HR | Industrial | Pharma | Physics |
|---|---|---|---|---|---|---|---|---|---|
| EVIE-8B | 66.75 | 81.86 | 72.51 | 71.23 | 56.40 | 69.29 | 59.77 | 70.81 | 52.11 |
| EVIE-4.5B | 66.02 | 81.72 | 72.32 | 70.00 | 54.90 | 67.82 | 59.40 | 70.27 | 51.69 |
| webAI-ColVec1.1-8b | 65.32 | 80.08 | 70.12 | 71.90 | 54.87 | 68.55 | 57.65 | 67.88 | 51.50 |
| nemotron-colembed-vl-8b-v2 | 63.54 | 79.30 | 69.82 | 67.29 | 51.54 | 66.32 | 56.03 | 67.19 | 50.84 |
| VultronRetrieverPrime-8B | 64.26 | 79.80 | 70.30 | 69.00 | 54.50 | 66.80 | 57.40 | 68.20 | 51.70 |
| VultronRetrieverCore-4.5B | 63.57 | 79.80 | 69.20 | 68.90 | 52.00 | 66.10 | 56.10 | 67.50 | 50.20 |
| tomoro-colqwen3-embed-8b | 61.60 | 75.35 | 68.41 | 65.08 | 49.10 | 63.98 | 54.41 | 66.36 | 50.13 |
📋 Complete 138-Task Evaluation Matrix
Protocol paired-all-pages-dedup+process_queries+ndcg2r-20260827 ($\text{MVT} = 1024$, bidirectional attention):
- ViDoRe V1: 10 tasks, 3,943 queries, 6,729 docs
- ViDoRe V2: 4 tasks, 1,152 queries, 4,544 docs
- ViDoRe V3: 48 tasks, 14,514 queries, 115,512 docs
- JinaVDR: 76 tasks, 43,375 queries, 55,398 docs
| Metric | ViDoRe V1 | ViDoRe V2 | ViDoRe V3 | JinaVDR | 4-Board Macro Avg |
|---|---|---|---|---|---|
| nDCG@1 | 88.51 | 75.58 | 62.14 | 75.50 | 75.43 |
| nDCG@5 | 92.18 | 74.23 | 64.16 | 82.45 | 78.26 |
| nDCG@10 | 92.64 | 75.35 | 66.75 | 83.30 | 79.51 |
| Recall@1 | 88.51 | 37.87 | 30.79 | 75.50 | 58.17 |
| Recall@5 | 95.07 | 66.65 | 58.69 | 88.07 | 77.12 |
| Recall@10 | 96.43 | 76.34 | 70.10 | 90.65 | 83.38 |
| MAP@1 | 88.51 | 75.99 | 65.94 | 75.50 | 76.49 |
| MAP@5 | 91.21 | 67.30 | 55.82 | 80.56 | 73.72 |
| MAP@10 | 91.40 | 66.81 | 56.32 | 80.92 | 73.86 |
| MRR@1 | 88.51 | 75.99 | 65.94 | 75.50 | 76.49 |
| MRR@5 | 91.21 | 82.85 | 75.39 | 80.56 | 82.50 |
| MRR@10 | 91.40 | 83.23 | 76.09 | 80.92 | 82.91 |
⚡ Quick Start
Installation
git clone https://github.com/Tencent/EVIE.git
cd EVIE
pip install -r requirements.txt
export PYTHONPATH="$(pwd)/colpali${PYTHONPATH:+:$PYTHONPATH}"
Python Inference
import torch
from PIL import Image
from colpali_engine.models import ColQwen3_5, ColQwen3_5Processor
model_id = "tencent/EVIE-8B"
# 1. Load model with FlashAttention and bidirectional attention
model = ColQwen3_5.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="cuda",
attn_implementation="flash_attention_2",
).eval()
model.enable_bidirectional_attention()
# 2. Process query and document image
processor = ColQwen3_5Processor.from_pretrained(model_id)
images = [Image.open("examples/demo/pages/q3_revenue.png").convert("RGB")]
queries = ["What is the total quarterly revenue?"]
image_batch = processor.process_images(images).to(model.device)
query_batch = processor.process_queries(queries).to(model.device)
# 3. Generate 4096D multi-vectors and late-interaction score
with torch.inference_mode():
image_embeddings = model(**image_batch)
model.rope_deltas = None # Reset RoPE deltas before text query forward
query_embeddings = model(**query_batch)
scores = processor.score(query_embeddings, image_embeddings)
print("Late-interaction MaxSim Relevance Score:", scores)
📂 Repository Layout
Evie-8B/
├── model.safetensors # EVIE-8B weights (safetensors)
├── config.json # Model configuration (4096D)
├── infer.py # Standalone inference & scoring CLI
├── colpali/ # ColQwen3.5 inference engine
├── code/shared/ # 138-task eval harness
├── examples/demo/ # 8-page retrieval demo (run.sh)
└── env.sh.example # Environment variables template
🔬 Released Checkpoint
EVIE-8B was trained on 775,635 document-query pairs across multilingual domains. Hard negatives were mined and classified into answerable (promoted to positives), ambiguous (masked), and strict negatives (negative cross-entropy loss).
The released a40 checkpoint represents a weight-space mix ($\alpha = 0.40$) of two independently trained arms, achieving the peak 66.75 nDCG@10 on ViDoRe V3. Full training reproduction scripts are provided in the companion repository Tencent/EVIE.
📚 Citation
@misc{tencent2026evie8b,
title = {EVIE-8B: High-Capacity Visual Document Retrieval with 4096-Dimensional Embeddings},
author = {{Tencent}},
year = {2026},
howpublished = {\url{https://github.com/Tencent/EVIE}}
}
📄 License
This model and codebase are released under the Apache-2.0 License.
- Total size
- 16.8 GB
- Files
- 88
- Last updated
- Sep 7
- Pre-warmed CDN
- US EU US EU