基于ColBERT风格的后期交互视觉文档检索模型,采用Qwen3.5-4B构建。
45亿参数 | 128维嵌入 | LoRA(r=16,alpha=64) | BF16
关于嵌入维度的说明:投影头为320维(已训练)。
config.json中设置dim: 320(供ColQwen3_5读取),并将embed_dim: 320作为跨生态工具的同义词,因此ColQwen3_5.from_pretrained(...)默认可正确加载。排行榜中显示“128”的列反映的是colpali-engine类的默认值(self.dim = getattr(config, "dim", 128)),而非实际输出维度。
V3版本在V2的基础上,引入了自动化超参数搜索和进化模型融合技术。搜索过程确定了最优的LoRA配置(r=16,alpha=64)及余弦调度策略,最终模型 checkpoint 是与V2版本进行逐层进化融合的结果。这使得模型在各基准测试中的表现较V2提升了0.0219。
实时 ViDoRe V3 排行榜 上的排名会随着新提交模型的加入而变化。发布时,v3版本总体排名第3;以下数据采集于2026年4月20日,此时v3在“Mean (Task)”指标上排名第6,在40亿参数级别模型中仍保持前三。
| 排名 | 模型 | 内存(MB) | 参数(B) | 嵌入维度 | 最大 tokens | Mean (Task) | Mean (Public) | Mean (Private) |
|---|---|---|---|---|---|---|---|---|
| 1 | nemotron-colembed-vl-8b-v2 | 16722 | 8.7 | 4096 | 262144 | 63.42 | 63.54 | 62.92 |
| 2 | webAI-ColVec1-9b | — | 9.42 | 2560 | 262144 | 63.00 | 64.45 | 57.20 |
| 3 | webAI-ColVec1-4b | — | 4.541 | 640 | 262144 | 62.22 | 63.39 | 57.55 |
| 4 | tomoro-colqwen3-embed-8b | 16724 | 8.0 | 320 | 262144 | 61.59 | 61.60 | 61.56 |
| 5 | nemotron-colembed-vl-4b-v2 | 9206 | 4.8 | 2560 | 262144 | 61.54 | 61.42 | 62.04 |
| 6 | colqwen3.5-4.5B-v3 | 8660 | 4.6 | 128 | 262144 | 61.46 | 61.56 | 61.06 |
| 7 | Ops-Colqwen3-4B | 9206 | 4.8 | 2560 | 32768 | 61.17 | 61.27 | 60.78 |
| 8 | tomoro-colqwen3-embed-4b | 8466 | 4.0 | 320 | 262144 | 60.20 | 60.16 | 60.33 |
| 9 | llama-nemotron-colembed-vl-3b-v2 | 8403 | 4.407 | 3072 | 8192 | 59.79 | 59.70 | 60.16 |
| 10 | jina-embeddings-v4 | 7500 | 3.935 | 2048 | 32768 | 57.52 | 57.54 | 57.41 |
| 排名 | 模型 | ArxivQA | DocVQA | InfoVQA | ShiftProj | SynAI | SynEnergy | SynGov | SynHealth | Tabfquad | Tatdqa | BioMed | ESGHL | ESG | Econ | 平均值 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Ops-Colqwen3-4B | 91.8 | 66.5 | 94.0 | 90.8 | 99.6 | 97.3 | 98.0 | 99.6 | 93.6 | 82.4 | 65.5 | 78.6 | 66.0 | 64.5 | 84.9 |
| 2 | nemotron-colembed-vl-8b-v2 | 93.1 | 68.1 | 94.6 | 93.3 | 100.0 | 97.9 | 98.9 | 99.6 | 97.7 | 83.4 | 66.2 | 73.2 | 60.6 | 60.8 | 84.8 |
| 3 | nemotron-colembed-vl-4b-v2 | 92.0 | 67.4 | 93.3 | 92.3 | 99.3 | 96.2 | 98.0 | 98.5 | 98.1 | 81.2 | 64.3 | 71.4 | 61.5 | 60.8 | 83.9 |
| 4 | colqwen3.5-4.5B-v3 | 91.9 | 66.6 | 93.6 | 90.2 | 100.0 | 97.1 | 97.3 | 98.9 | 95.9 | 84.0 | 65.3 | 73.8 | 58.0 | 59.9 | 83.7 |
| 5 | llama-nemotron-colembed-vl-3b-v2 | 90.4 | 67.2 | 94.7 | 92.0 | 100.0 | 98.0 | 98.0 | 98.9 | 97.3 | 81.0 | 63.2 | 73.1 | 58.6 | 58.6 | 83.6 |
| 6 | tomoro-colqwen3-embed-8b | 91.2 | 66.4 | 94.5 | 87.9 | 99.3 | 96.7 | 97.6 | 99.1 | 94.2 | 80.9 | 65.5 | 76.0 | 60.7 | 59.5 | 83.5 |
| 7 | EvoQwen2.5-VL-Retriever-7B-v1 | 91.5 | 65.1 | 94.1 | 88.8 | 99.6 | 96.6 | 96.3 | 98.9 | 93.6 | 82.3 | 65.2 | 77.0 | 59.7 | 59.1 | 83.4 |
| 8 | tomoro-colqwen3-embed-4b | 90.6 | 66.3 | 94.3 | 87.4 | 99.3 | 96.9 | 97.2 | 99.6 | 94.3 | 79.9 | 65.4 | 74.6 | 62.4 | 56.3 | 83.2 |
| 9 | llama-nemoretriever-colembed-3b-v1 | 88.4 | 66.2 | 94.9 | 90.7 | 99.6 | 96.6 | 97.8 | 99.3 | 95.9 | 80.6 | 62.7 | 75.4 | 57.4 | 57.8 | 83.1 |
| 10 | SauerkrautLM-ColQwen3-8b-v0.1 | 93.8 | 64.7 | 94.5 | 90.4 | 98.6 | 96.5 | 96.8 | 99.3 | 92.2 | 84.0 | 63.3 | 70.8 | 57.9 | 58.0 | 82.9 |
import torch
from PIL import Image
from colpali_engine.models import ColQwen3_5, ColQwen3_5Processor
model = ColQwen3_5.from_pretrained(
"athrael-soju/colqwen3.5-4.5B-v3",
torch_dtype=torch.bfloat16,
device_map="cuda",
attn_implementation="sdpa",
)
processor = ColQwen3_5Processor.from_pretrained("athrael-soju/colqwen3.5-4.5B-v3")
# Embed document images
images = [Image.open("page1.png"), Image.open("page2.png")]
batch = processor.process_images(images).to(model.device)
with torch.no_grad():
doc_embeddings = model(**batch)
# Embed queries
queries = ["What is the revenue for Q4?", "Show me the organizational chart"]
batch = processor.process_queries(queries).to(model.device)
with torch.no_grad():
model.rope_deltas = None
query_embeddings = model(**batch)
# Score with MaxSim
scores = processor.score(query_embeddings, doc_embeddings)| 参数 | 值 |
|---|---|
| LoRA r | 16 |
| LoRA alpha | 64(alpha/r = 4.0) |
| 学习率(LR) | 4.57e-5 |
| 调度器 | cosine |
| Dropout | 0.197 |
| 预热(Warmup) | 8% |
| 权重衰减 | 0.02 |
| 批大小 | 32 |
| 难负例 | 2 个/样本 |
| 随机种子 | 42, 123, 456 |
add_weighted_adapter 函数在 ColQwen3.5 上存在问题(DARE-TIES 和线性融合均受影响)。种子融合需使用完整状态字典平均法。rope_deltas。V1、V2 和 V3 版本开发过程中的完整评估记录可在 athrael-soju/colqwen-optimization-trail 查看。其中包括所有中间评估结果,展示了尝试过的候选模型、它们的得分以及被选中进行发布的模型。所有选择决策均基于与最终报告相同的公开 ViDoRe 基准进行评估。
V1 和 V2 模型快照已整合到本仓库中,以减少仓库分散并保留溯源信息。之前单独的 colqwen3.5-4.5B-v1 和 colqwen3.5-4.5B-v2 仓库的全部内容可在以下路径获取:
v1/ — 完整的 V1 快照(权重、模型卡片、分词器、配置文件)v2/ — 完整的 V2 快照(权重、模型卡片、分词器、配置文件)每个子文件夹均包含完整的原始文件集(model.safetensors、README.md、config.json、chat_template.jinja、processor_config.json、tokenizer.json、tokenizer_config.json)。
加载归档版本的方法:
from colpali_engine.models import ColQwen3_5, ColQwen3_5Processor
# V1
model = ColQwen3_5.from_pretrained("athrael-soju/colqwen3.5-4.5B-v3", subfolder="v1", ...)
processor = ColQwen3_5Processor.from_pretrained("athrael-soju/colqwen3.5-4.5B-v3", subfolder="v1")
# V2
model = ColQwen3_5.from_pretrained("athrael-soju/colqwen3.5-4.5B-v3", subfolder="v2", ...)顶层文件仍是 V3 模型——生产环境推荐使用的版本。
@misc{colqwen35v3,
title={ColQwen3.5-v3: Visual Document Retrieval with Evolutionary Model Soups},
author={athrael-soju},
year={2026},
url={https://huggingface.co/athrael-soju/colqwen3.5-4.5B-v3}
}Apache 2.0