/ Модель

Характеристики

Контекст
7 999 токенов
Параметры
149 млн
Лицензия
MIT
Архитектура
modernbert · dense
Базовая модель
ettin-encoder-150m
Библиотека
sentence-transformers
Опубликована
20 сен 2026

ColNanoVDR-Q-Ettin150M-Tomoro8B-320-ML

ЭмбеддингиТекст → embedding

Текстовый энкодер Ettin на 149 млн параметров кодирует запросы в многовекторное пространство TomoroAI/tomoro-colqwen3-embed-8b для поиска по проиндексированным визуальным документам.

111скачиваний за 30 дней2лайкавеса обновлены3 окт 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Эмбеддинги» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

ColNanoVDR-Q-Ettin150M-Tomoro8B-320-ML — текстовый энкодер запросов, разработанный авторами ColNanoVDR для поиска по визуально представленным документам. Он заменяет крупную мультимодальную модель на стороне запроса: кодирует текстовый запрос в набор 320-мерных векторов токенов, согласованных с пространством позднего взаимодействия TomoroAI/tomoro-colqwen3-embed-8b. Архитектура включает энкодер Ettin на базе ModernBERT, линейную проекцию, нормализацию векторов и обучаемые веса токенов; размер модели — около 149 млн параметров, контекст — до 7 999 токенов.

Модель предназначена для поиска по документам, страницы которых заранее проиндексированы учителем TomoroAI/tomoro-colqwen3-embed-8b. Её применяют для кодирования текстовых запросов и сравнения их с готовыми индексами документов методом MaxSim; индекс учителя можно использовать без перестроения. Обучение проводилось дистилляцией на текстах запросов с использованием кешированных векторов учителя и без изображений страниц и меток релевантности. README сообщает о сохранении 95,7% качества учителя на 22 наборах ViDoRe и возможности выполнять кодирование запросов на CPU.

Для работы требуется совместимый индекс, построенный именно указанной моделью-учителем и с шириной векторов 320. Запросы следует передавать без инструкционного префикса, а выходные векторы не следует повторно нормализовать. Модель распространяется по лицензии MIT.

Сценарии применения

  • поиск текстовым запросом по заранее проиндексированным страницам документов
  • кодирование запросов для индекса TomoroAI/tomoro-colqwen3-embed-8b
  • ускорение обработки поисковых запросов без запуска крупной VLM
  • поиск по визуальным документам на CPU
  • использование существующего индекса Tomoro без повторной индексации страниц

Ограничения

Модель совместима только с индексом страниц от TomoroAI/tomoro-colqwen3-embed-8b и шириной векторов 320; для другого учителя нужен соответствующий энкодер. Запросы нужно подавать без инструкционного префикса и не нормализовать выход повторно.

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

What is ColNanoVDR

ColNanoVDR extends NanoVDR from single-vector retrievers to the multi-vector, late-interaction encoders that define the state of the art in visual document retrieval (ColPali-style models such as ColQwen3.5, Vultron, Tomoro and ColVec).

In those systems the query is encoded, at serving time, by a multi-billion-parameter vision-language model, even though a query is plain text and carries no image. ColNanoVDR removes that model from the online path. Using document-free distillation, a small text-only encoder is trained to reproduce the teacher's query token embeddings under an optimal-transport objective, so its output lands directly in the teacher's late-interaction space and the teacher's existing page index can be scored by MaxSim unchanged. Training needs only cached teacher query embeddings: no page image is ever encoded, and no relevance label is ever used.

The result keeps 95.7% of a 8.8B teacher across 22 ViDoRe datasets with a query tower 59x smaller, and the document side is left untouched, so an existing index does not need to be rebuilt. With no vision tower on the query path, encoding a query becomes feasible on CPU, so serving no longer requires a GPU at all.

This model

Every ColNanoVDR release is named:

ColNanoVDR-Q-{backbone}-{teacher}-{dim}-ML
FieldMeaningThis model
Qthe query tower: the only side that is trained; documents stay with the teacherQ
{backbone}the text-only encoder distilled intoEttin150M = jhu-clsp/ettin-encoder-150m, 150M params
{teacher}the multi-vector VDR teacher whose embedding space this tower targetsTomoro8B = TomoroAI/tomoro-colqwen3-embed-8b, 8.8B params
{dim}late-interaction vector width of that teacher320
MLmultilingual training mixtureEnglish + 5 Latin-script European languages

So ColNanoVDR-Q-Ettin150M-Tomoro8B-320-ML is a 150M ettin-encoder-150m query tower that emits 320-d multi-vector queries inside the late-interaction space of TomoroAI/tomoro-colqwen3-embed-8b.

A tower is only valid with the teacher it was distilled from: the teacher and the width must both match. This one requires pages indexed by TomoroAI/tomoro-colqwen3-embed-8b; for a different teacher, take the corresponding tower:

Query towerTeacher that must index your pagesWidth
ColNanoVDR-Q-Ettin150M-ColQwen35-320-MLathrael-soju/colqwen3.5-4.5B-v3320
ColNanoVDR-Q-Ettin150M-Tomoro8B-320-ML (this model)TomoroAI/tomoro-colqwen3-embed-8b320
ColNanoVDR-Q-Ettin150M-Vultron45B-320-MLvultr/VultronRetrieverCore-Qwen3.5-4.5B320
ColNanoVDR-Q-Ettin150M-ColVec4B-640-MLwebAI-Official/webAI-ColVec1.1-4b640
ColNanoVDR-Q-Ettin150M-ColVec8B-640-MLwebAI-Official/webAI-ColVec1.1-8b640
ColNanoVDR-Q-Ettin400M-ColQwen35-320-MLathrael-soju/colqwen3.5-4.5B-v3320

Training

Dataset. nanovdr/NanoVDR-Train: 1.49M queries, 711K English plus 778K MarianMT translations into five Latin-script European languages. Only the query text is used. Teacher query embeddings are cached once before training, so the teacher never runs during training.

Loss: OTW (weighted entropic optimal transport). A query is a set of token vectors, and the student and the teacher do not produce the same number of tokens, so there is no token-to-token correspondence to regress onto. OTW instead treats each side as a distribution on the unit sphere, the student as mu_S = sum_i a_i d(s_i) and the teacher as mu_T = sum_j b_j d(t_j), and minimises the entropic optimal-transport cost between them under c(s,t) = 1 - <s,t>:

L = <P*, C>,   P* = argmin_{P in U(a,b)} <P, C> - eps H(P)

Transport is balanced, so every student token must carry mass and the student is forced to cover the teacher's full token distribution rather than collapsing onto a few easy directions. The W is the student marginal: a_i is a softmax over learned per-token weight logits instead of uniform, which lets a student token carry more mass and match a teacher measure with more atoms. The motivation is that the transport cost upper-bounds the MaxSim scoring error uniformly over every possible document, which is what makes the objective document-free: minimising it constrains retrieval behaviour without a single page ever being encoded.

Settings: eps = 0.05, 50 Sinkhorn iterations, AdamW one-cycle, peak LR 3e-4, 3% warmup, effective batch 1024 (128 per GPU x 2 GPUs x 4 accumulation), 10 epochs.

Architecture. Ettin encoder -> bias-free linear projection to 320-d -> per-token L2 normalisation -> learned weight head. The weight head is a linear layer over the pre-projection hidden states whose softmax gives a_i; at inference each unit token vector is scaled by its weight, so the emitted vectors are deliberately not unit-length and the per-query token norms sum to 1. Special tokens are excluded from scoring. 150M parameters total.

Usage

Requires sentence-transformers>=6.0 and transformers>=5.0.

Retrieval runs in two stages. The teacher builds the page index once, offline; ColNanoVDR then answers every query online, and the teacher is never loaded again.

Step 1 (offline, once): index your pages with the teacher

This is the only stage where the vision-language model runs. Cache the resulting page embeddings; they are what you serve against.

import torch
from transformers import AutoModel, AutoProcessor

TEACHER = "TomoroAI/tomoro-colqwen3-embed-8b"
teacher = AutoModel.from_pretrained(
    TEACHER, trust_remote_code=True, dtype=torch.bfloat16,
    attn_implementation="sdpa", device_map="cuda:0"
).eval()
processor = AutoProcessor.from_pretrained(TEACHER, trust_remote_code=True)

page_embeddings = []
with torch.no_grad():
    for batch in batches_of(page_images, 4):          # PIL images
        inputs = processor.process_images(batch).to(teacher.device)
        page_embeddings.extend(teacher(**inputs))     # (n_patches, 320) each

# persist page_embeddings to disk / a multi-vector index (PLAID, Vespa, Qdrant, ...)

If you already run tomoro-colqwen3-embed-8b in production, skip this step entirely: your existing index is already in the right space and does not need rebuilding.

Step 2 (online, per query): encode with ColNanoVDR and score

from sentence_transformers import MultiVectorEncoder

model = MultiVectorEncoder(
    "nanovdr/ColNanoVDR-Q-Ettin150M-Tomoro8B-320-ML",
    trust_remote_code=True,
)

q = model.encode_query(["What was the revenue growth in Q3 2024?"])
# list of (n_tokens, 320) float arrays, weights already folded in

scores = model.similarity(q, page_embeddings)   # meanMaxSim

No teacher, no image processor, no GPU required on this path.

Two notes that change results if ignored:

  • Pass the raw query, with no instruction prefix. The teacher's targets were cached through the teacher's own query processor, but the student was trained to reproduce them from bare query text, and every number below was measured that way.
  • Do not re-normalise the output. The learned weights are already folded in. similarity_fn_name is meanmaxsim (MaxSim over document tokens per query token, then averaged over query tokens); the summed ColBERT variant changes the ranking.

Performance

NDCG@5 on ViDoRe (22 datasets). The query side is measured in isolation against teacher-encoded pages, which attributes all error to this tower:

v1v2v3Avg
tomoro-colqwen3-embed-8b (teacher)90.6165.0059.0071.54
ColNanoVDR-Q-Ettin150M-Tomoro8B-320-ML89.9560.6154.8768.48
Retention99.3%93.3%93.0%95.7%

Efficiency

ParamsVision tower at query timeCPU serving
tomoro-colqwen3-embed-8b (teacher)8.8Brequiredno
ColNanoVDR-Q-Ettin150M-Tomoro8B-320-ML150Mnoneyes

The query tower is 59x smaller than the teacher and runs no vision tower, so a query can be encoded on CPU. Query latency depends on your hardware and on the teacher's attention kernels, so measure it on your own stack.

License

MIT. The teacher's own licence governs how you index and serve pages.

Contact

Zhuchenyang Liu, Aalto University: zhuchenyang.liu@aalto.fi

Citation

If you use ColNanoVDR, please cite:

@misc{liu2026colnanovdrdocumentfreequerydistillation,
      title={ColNanoVDR: Document-Free Query Distillation for Multi-Vector Visual Document Retrieval via Optimal Transport}, 
      author={Zhuchenyang Liu and Ziyi Wang and Yao Zhang and Yu Xiao},
      year={2026},
      eprint={2609.34899},
      archivePrefix={arXiv},
      primaryClass={cs.IR},
      url={https://arxiv.org/abs/2609.34899}, 
}

ColNanoVDR builds on NanoVDR:

@article{nanovdr2026,
  title   = {NanoVDR: Distilling a 2B Vision-Language Retriever into a 70M
             Text-Only Encoder for Visual Document Retrieval},
  author  = {Liu, Zhuchenyang and Zhang, Yao and Xiao, Yu},
  journal = {arXiv preprint arXiv:2603.12824},
  year    = {2026}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · sentence-transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
ModernBertModel
Ревизия весов
eda9180

0 моделей