π EVIE-8B: The Most Accurate Visual Document Retriever
35
19 commits
2 repos using this model
1 linked in READMEs
updated Oct 9, 2026
4096-Dimensional Token Representation β’ Bidirectional Full-Attention β’ Teacher for EVIE-4.5B Prefix-MRL
π€ EVIE-8B (Flagship Teacher) Β β’Β π€ EVIE-4.5B (Prefix-MRL & HAC) Β β’Β π GitHub: Tencent/EVIE Β β’Β π Paper: arXiv:2610.11553
π’ Release Announcement: All model weights, inference pipelines, and evaluation suites have been fully open-sourced. The technical report is available on arXiv: EVIE: Evidence-Vector-Informed Embeddings for Visual Document Retrieval. Training code and distillation recipes are available in the Tencent/EVIE repository.
Query Text βββββββββΊ ColQwen3.5 (BiDir Attention) βββββΊ 4096D Per-Token Embeddings
β
MaxSim Matching
β
Doc Image βββββββββΊ ColQwen3.5 (Vision Encoder) βββββΊ Full Multi-Vector Patch Embeddings
$$ S(Q, D) = \sum_{i=1}^{|Q|} \max_{j=1}^{|D|} (q_i \cdot d_j) $$
Official ranking on the ViDoRe leaderboard (ViDoRe V3, Mean Task).
| Rank | Model | Parameters | Mean (Task) |
|---|---|---|---|
| π₯ #1 | tencent/EVIE-8B | 8.4B | 66.24 |
| π₯ #2 | tencent/EVIE-4.5B | 4.5B | 65.70 |
| #3 | webAI-ColVec1.1-8b | 8.4B | 64.95 |
| #4 | VultronRetrieverPrime-Qwen3.5-8B | 8.4B | 64.26 |
| #5 | webAI-ColVec1.1-4b | 4.5B | 63.90 |
| #6 | VultronRetrieverCore-Qwen3.5-4.5B | 4.5B | 63.57 |
Performance comparison across modern multi-vector late-interaction visual document retrievers on ViDoRe:
| Rank | Model | Base Model | Param | Embed Dim | ViDoRe V1 (nDCG@5) | ViDoRe V2 (nDCG@5) | ViDoRe V3 (nDCG@10) |
|---|---|---|---|---|---|---|---|
| π₯ | EVIE-8B | Qwen3.5-9B | 8.41B | 4096D | 92.18 | 74.23 | 66.75 |
| π₯ | EVIE-4.5B | Qwen3.5-4B | 4.61B | 64β2048D Prefix-MRL | 92.07 | 73.38 | 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 |
| 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 |
Protocol paired-all-pages-dedup+process_queries+ndcg2r-20260827 ($\text{MVT} = 1024$, bidirectional attention):
| 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 |
git clone https://github.com/Tencent/EVIE.git
cd EVIE
pip install -r requirements.txt
export PYTHONPATH="$(pwd)/colpali${PYTHONPATH:+:$PYTHONPATH}"
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)
Load EVIE with Sentence Transformers to encode queries and document images and compute MaxSim scores. Bidirectional attention is configured automatically.
pip install -U "sentence-transformers[image]>=6.0.0"
from sentence_transformers import MultiVectorEncoder
model = MultiVectorEncoder("tencent/EVIE-8B")
queries = [
"What is the variable represented on the y-axis of the graph?",
"Total outlay is maximum in which year?",
]
documents = [
"https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc1.jpg",
"https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc2.jpg",
"https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc3.jpg",
"https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc4.jpg",
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents, batch_size=1)
print(query_embeddings[0].shape, document_embeddings[0].shape)
# torch.Size([23, 4096]) torch.Size([3161, 4096])
scores = model.similarity(query_embeddings, document_embeddings)
print(scores)
# tensor([[14.3594, 6.1758, 4.5137, 3.2979],
# [ 1.8079, 10.9180, 1.9668, 1.9541]])
Documents can be URLs, local image paths, or PIL.Image objects. The output contains 4096-dimensional token embeddings. Scores can vary slightly with dtype and attention backend.
The default page budget allows up to 16,384 visual tokens. Encoding images one at a time reduces peak memory use. To use the 1,024-token budget from the evaluation protocol above, set the image processor's pixel budget:
model = MultiVectorEncoder(
"tencent/EVIE-8B",
processor_kwargs={"size": {"longest_edge": 1024 * 32 * 32, "shortest_edge": 65536}},
)
Evie-8B/
βββ model.safetensors # EVIE-8B weights (safetensors)
βββ config.json # Model configuration (4096D)
βββ 1_Dense/ # Sentence Transformers 4096D projection
βββ modules.json # MultiVectorEncoder module graph
βββ 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
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.
@misc{wang2026evie,
title = {EVIE: Evidence-Vector-Informed Embeddings for Visual Document Retrieval},
author = {Zifei Wang and Wei Wen and Qiang Ji and Qian-Wen Zhang and Ruizhi Qiao and Xing Sun},
year = {2026},
eprint = {2610.11553},
archivePrefix = {arXiv},
primaryClass = {cs.IR},
url = {https://arxiv.org/abs/2610.11553}
}
This model and codebase are released under the Apache-2.0 License.
| Name | Role | Affiliation | Contact |
|---|---|---|---|
| Zifei Wang | Author | Tencent IMA Product Center | [email protected] |
| Wei Wen | Author & Corresponding | Tencent Youtu Lab | [email protected] |
π EVIE-8B: The Most Accurate Visual Document Retriever
35
19 commits
2 repos using this model
1 linked in READMEs
updated Oct 9, 2026
4096-Dimensional Token Representation β’ Bidirectional Full-Attention β’ Teacher for EVIE-4.5B Prefix-MRL
π€ EVIE-8B (Flagship Teacher) Β β’Β π€ EVIE-4.5B (Prefix-MRL & HAC) Β β’Β π GitHub: Tencent/EVIE Β β’Β π Paper: arXiv:2610.11553
π’ Release Announcement: All model weights, inference pipelines, and evaluation suites have been fully open-sourced. The technical report is available on arXiv: EVIE: Evidence-Vector-Informed Embeddings for Visual Document Retrieval. Training code and distillation recipes are available in the Tencent/EVIE repository.
Query Text βββββββββΊ ColQwen3.5 (BiDir Attention) βββββΊ 4096D Per-Token Embeddings
β
MaxSim Matching
β
Doc Image βββββββββΊ ColQwen3.5 (Vision Encoder) βββββΊ Full Multi-Vector Patch Embeddings
$$ S(Q, D) = \sum_{i=1}^{|Q|} \max_{j=1}^{|D|} (q_i \cdot d_j) $$
Official ranking on the ViDoRe leaderboard (ViDoRe V3, Mean Task).
| Rank | Model | Parameters | Mean (Task) |
|---|---|---|---|
| π₯ #1 | tencent/EVIE-8B | 8.4B | 66.24 |
| π₯ #2 | tencent/EVIE-4.5B | 4.5B | 65.70 |
| #3 | webAI-ColVec1.1-8b | 8.4B | 64.95 |
| #4 | VultronRetrieverPrime-Qwen3.5-8B | 8.4B | 64.26 |
| #5 | webAI-ColVec1.1-4b | 4.5B | 63.90 |
| #6 | VultronRetrieverCore-Qwen3.5-4.5B | 4.5B | 63.57 |
Performance comparison across modern multi-vector late-interaction visual document retrievers on ViDoRe:
| Rank | Model | Base Model | Param | Embed Dim | ViDoRe V1 (nDCG@5) | ViDoRe V2 (nDCG@5) | ViDoRe V3 (nDCG@10) |
|---|---|---|---|---|---|---|---|
| π₯ | EVIE-8B | Qwen3.5-9B | 8.41B | 4096D | 92.18 | 74.23 | 66.75 |
| π₯ | EVIE-4.5B | Qwen3.5-4B | 4.61B | 64β2048D Prefix-MRL | 92.07 | 73.38 | 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 |
| 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 |
Protocol paired-all-pages-dedup+process_queries+ndcg2r-20260827 ($\text{MVT} = 1024$, bidirectional attention):
| 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 |
git clone https://github.com/Tencent/EVIE.git
cd EVIE
pip install -r requirements.txt
export PYTHONPATH="$(pwd)/colpali${PYTHONPATH:+:$PYTHONPATH}"
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)
Load EVIE with Sentence Transformers to encode queries and document images and compute MaxSim scores. Bidirectional attention is configured automatically.
pip install -U "sentence-transformers[image]>=6.0.0"
from sentence_transformers import MultiVectorEncoder
model = MultiVectorEncoder("tencent/EVIE-8B")
queries = [
"What is the variable represented on the y-axis of the graph?",
"Total outlay is maximum in which year?",
]
documents = [
"https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc1.jpg",
"https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc2.jpg",
"https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc3.jpg",
"https://huggingface.co/datasets/sentence-transformers/example-documents/resolve/main/doc4.jpg",
]
query_embeddings = model.encode_query(queries)
document_embeddings = model.encode_document(documents, batch_size=1)
print(query_embeddings[0].shape, document_embeddings[0].shape)
# torch.Size([23, 4096]) torch.Size([3161, 4096])
scores = model.similarity(query_embeddings, document_embeddings)
print(scores)
# tensor([[14.3594, 6.1758, 4.5137, 3.2979],
# [ 1.8079, 10.9180, 1.9668, 1.9541]])
Documents can be URLs, local image paths, or PIL.Image objects. The output contains 4096-dimensional token embeddings. Scores can vary slightly with dtype and attention backend.
The default page budget allows up to 16,384 visual tokens. Encoding images one at a time reduces peak memory use. To use the 1,024-token budget from the evaluation protocol above, set the image processor's pixel budget:
model = MultiVectorEncoder(
"tencent/EVIE-8B",
processor_kwargs={"size": {"longest_edge": 1024 * 32 * 32, "shortest_edge": 65536}},
)
Evie-8B/
βββ model.safetensors # EVIE-8B weights (safetensors)
βββ config.json # Model configuration (4096D)
βββ 1_Dense/ # Sentence Transformers 4096D projection
βββ modules.json # MultiVectorEncoder module graph
βββ 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
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.
@misc{wang2026evie,
title = {EVIE: Evidence-Vector-Informed Embeddings for Visual Document Retrieval},
author = {Zifei Wang and Wei Wen and Qiang Ji and Qian-Wen Zhang and Ruizhi Qiao and Xing Sun},
year = {2026},
eprint = {2610.11553},
archivePrefix = {arXiv},
primaryClass = {cs.IR},
url = {https://arxiv.org/abs/2610.11553}
}
This model and codebase are released under the Apache-2.0 License.
| Name | Role | Affiliation | Contact |
|---|---|---|---|
| Zifei Wang | Author | Tencent IMA Product Center | [email protected] |
| Wei Wen | Author & Corresponding | Tencent Youtu Lab | [email protected] |