📢
Release Announcement
: All model weights, inference pipelines, and evaluation suites have been fully open-sourced. Full technical details, architectural ablations, and the formal research paper will be updated in an upcoming release. Training code and distillation recipes are available in the
Tencent/EVIE
repository.
Late-Interaction Token Embeddings
: Rather than compressing visual documents into an information-lossy single vector, EVIE-8B preserves spatial nuances, typography, and tabular relations with per-token late-interaction representations. Relevance is scored using MaxSim:
S
(
Q
,
D
)
=
i
=
1
∑
∣
Q
∣
j
=
1
max
∣
D
∣
(
q
i
⋅
d
j
)
Full Bidirectional Attention
: Employs bidirectional self-attention across multimodal vision-text sequences to facilitate cross-modal interaction between visual patch tokens and prompt contexts.
Foundational Distillation Teacher
: Serves as the high-capacity anchor model for training the compact
EVIE-4.5B
student via topological relation transfer and hard-negative margin supervision (ARD).
📊 Comprehensive ViDoRe Leaderboard Comparison
Performance comparison across modern multi-vector late-interaction visual document retrievers on ViDoRe:
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 scorewith 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)
Sentence Transformers
Load EVIE with
Sentence Transformers
to encode queries and document images and compute MaxSim scores. Bidirectional attention is configured automatically.
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:
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 = {Wang, Zifei and Wen, Wei},
year = {2026},
howpublished = {\url{https://github.com/Tencent/EVIE}},
note = {Corresponding author: Wei Wen <[email protected]>}
}
EVIE-8B huggingface.co is an AI model on huggingface.co that provides EVIE-8B's model effect (), which can be used instantly with this tencent EVIE-8B model. huggingface.co supports a free trial of the EVIE-8B model, and also provides paid use of the EVIE-8B. Support call EVIE-8B model through api, including Node.js, Python, http.
EVIE-8B huggingface.co is an online trial and call api platform, which integrates EVIE-8B's modeling effects, including api services, and provides a free online trial of EVIE-8B, you can try EVIE-8B online for free by clicking the link below.
tencent EVIE-8B online free url in huggingface.co:
EVIE-8B is an open source model from GitHub that offers a free installation service, and any user can find EVIE-8B on GitHub to install. At the same time, huggingface.co provides the effect of EVIE-8B install, users can directly use EVIE-8B installed effect in huggingface.co for debugging and trial. It also supports api for free installation.