NeoMME: эффективный мультимодальный и многоязычный энкодер
Кратко
Мы представляем NeoMME — семейство мультиязычных мультимодальных энкодеров на 260 и 800 млн параметров. В отличие от многих генеративных визуально-языковых моделей, NeoMME не использует отдельную предварительно обученную зрительную башню или каузальную языковую модель. Единый двунаправленный Transformer обрабатывает как текстовые токены, так и необработанные патчи изображений, а всю модель мы обучаем с нуля с использованием целевой функции маскированной дискретной диффузии.
Мы дообучили NeoMME для поиска визуальных документов, применив подход ColPali с изображением страницы. NeoMME-Retriever возвращает плотные эмбеддинги и эмбеддинги позднего взаимодействия за один прямой проход. Обе версии модели находятся на границе Парето ViDoRe v3 по показателям nDCG@10 и размеру модели. При одинаковом размере входного изображения 2048×2048 на GPU NVIDIA L40S модель на 260 млн параметров кодирует около 51 страницы в секунду — примерно вдвое быстрее ColModernVBERT. Иерархическое объединение токенов и асимметричное квантование сокращают объём хранения индекса позднего взаимодействия примерно с 1,5 МБ до 6 КБ на страницу (в 255 раз), сохраняя более 95% базового показателя nDCG@10.
NeoMME доступна в Hugging Face Transformers. Мы выпускаем все контрольные точки моделей по лицензии Apache 2.0.
Зачем нужен ещё один мультимодальный энкодер?
Многие современные системы поиска визуальных документов адаптированы из предварительно обученных генеративных визуально-языковых моделей. Отдельно предварительно обученный визуальный энкодер создаёт визуальные признаки, которые проектор переводит в пространство входных данных языковой модели. Затем каузальный декодер обрабатывает объединённые представления изображения и текста. Поиск, классификация и разметка токенов не требуют авторегрессионной генерации текста, поэтому им не нужны ни каузальный декодер, ни дополнительные параметры и вычислительные затраты такой архитектуры.
ModernBERT привнёс эффективную архитектуру и улучшения обучения для двунаправленных энкодеров. Для поиска визуальных документов ModernVBERT применил двунаправленный текстовый энкодер в стиле ModernBERT, сохранив при этом отдельную предварительно обученную зрительную башню SigLIP2. Мы хотели пойти ещё дальше, разработав и обучив мультимодальный энкодер без дополнительных параметров и вычислительных затрат VLM.
NeoMME (произносится как «ни-о-ми», IPA /ˈniː.oʊ.mi/) — мультиязычный мультимодальный базовый энкодер, который создаёт векторные представления входного текста и/или изображений с помощью единого энкодера Transformer. Он не основан на существующей предварительно обученной зрительной башне, текстовом энкодере или текстовом декодере.
Изображения и текст используют один и тот же вычислительный путь, поэтому NeoMME проще применять для предварительного обучения, дообучения, распараллеливания и обслуживания обеих модальностей.
Архитектура энкодера NeoMME
Один Transformer для изображений и текста
NeoMME выпускается в двух размерах: 260M и 800M. Обе версии используют одну архитектуру:
- Нативные мультимодальные входные данные: для текста используются факторизованные токенные эмбеддинги, а изображения делятся на сетку неперекрывающихся патчей 32×32 и проецируются с помощью небольшой MLP. И те и другие поступают в один энкодер Transformer.
- Динамическое разрешение изображений: изображения сохраняют свои соотношение сторон и размер. Благодаря этому модель может использовать больше токенов для страницы документа с высоким разрешением и большим объёмом информации, чем для небольшого изображения с меньшим содержанием.
- Длинный двунаправленный контекст: обе модели имеют длину контекста 16 384 токена (этого достаточно для двух стандартных изображений 3840×2160 4K UHD). В большинстве слоёв используется симметричное внимание со скользящим окном, а в каждом шестом слое и в последнем слое — глобальное внимание.
- Современный стек энкодера: NeoMME использует последние улучшения энкодеров, включая внимание grouped-query, нормализацию query-key, управляемое внимание, двумерные ротационные позиционные эмбеддинги и MLP с squared-ReLU.
- Мультиязычный текст: мы с нуля обучили BPE-токенизатор со словарём на 131 тыс. токенов на мультиязычном тексте, коде, математических материалах и машинных расшифровках изображений.
Обучение на изображениях через маскированный текст
Мы предварительно обучаем NeoMME с нуля как денойзер текста на основе дискретной маскированной диффузии. Для каждого примера только с текстом мы равномерно выбираем коэффициент искажения от 0 до 1. Затем каждый подходящий текстовый токен независимо маскируется с этой вероятностью.
Для мультимодальных примеров используются коэффициенты искажения от 0,3 до 1. Патчи изображения остаются видимыми, пока NeoMME восстанавливает замаскированный текст. При слабом маскировании модель часто может восстановить пропущенное слово только по окружающему тексту. Например, «cat» — правдоподобное продолжение фразы «The [MASK] sat on the mat» даже без изображения. Но сильное маскирование заставляет модель учиться строить описания, основанные на изображении, практически без сигнала от незамаскированных текстовых токенов.
Предварительное обучение сочетает мультиязычный текст, код, математику, обычные изображения и изображения документов. Каждая модель обрабатывает около 524 млрд упакованных входных токенов, включая 290 млрд токенов из примеров только с текстом. Этот объём текста относительно невелик по сравнению с 2 трлн токенов, использованных для обучения ModernBERT. Поэтому для повышения эффективности использования данных во время обучения мы выбрали оптимизатор NorMuon.
NeoMME-Retriever
Чтобы содержательно оценить базовую модель на последующих задачах, мы дообучили NeoMME для поиска визуальных документов, используя методологию изображений страниц, представленную в ColPali. В то время как традиционный текстовый поиск заключается в извлечении фрагментов текста, NeoMME-Retriever ранжирует скриншоты страниц документов и обходит все этапы предварительной OCR-обработки, необходимые для извлечения текста из PDF. Представление страниц в виде изображений сохраняет макет, графики, таблицы, тип и размер шрифта и другие визуальные признаки, которые не способен уловить даже идеальный OCR-модуль.
Двухголовочная архитектура для плотного поиска и поиска с поздним взаимодействием
NeoMME-Retriever повторно использует базовую модель NeoMME, но добавляет поверх неё две совместно обучаемые поисковые головы:
- Плотная голова усредняет векторы скрытых состояний базовой модели в нормализованный вектор (усреднение). Сегодня плотные эмбеддинги используются чаще всего: они компактны и естественным образом работают с методами приближённого поиска ближайших соседей (ANN) для быстрого поиска.
- Голова позднего взаимодействия проецирует каждый текстовый токен или патч изображения из выходных скрытых состояний базовой модели в нормализованный вектор размерности 128. По сравнению с плотными эмбеддингами более мелкая гранулярность сохраняет локальные соответствия между отдельными токенами запроса и областями изображения.
Омар Хаттаб, представивший позднее взаимодействие в ColBERT, объясняет, почему этот термин точнее, чем «мультивектор». Он описывает гранулярность и обучаемость функции оценки, а не просто количество сохранённых векторов.
Чтобы узнать больше о позднем взаимодействии, рекомендуем прочитать этот краткий курс Амели Шателен.
Один прямой проход NeoMME-Retriever возвращает оба представления, что обеспечивает гибкость независимо от вашего сценария использования и инфраструктуры. В целом мы рекомендуем использовать эмбеддинги позднего взаимодействия, поскольку они мощнее и легко применяются с библиотеками с открытым исходным кодом, такими как NextPlaid. Однако при работе с очень большим корпусом можно выполнить один прямой проход NeoMME-Retriever для получения плотного эмбеддинга, извлечь небольшое количество документов через ANN-индекс, а затем использовать позднее взаимодействие для переранжирования найденных кандидатов.
Конкурентоспособный поиск при компактных размерах моделей
Мы приводим значения nDCG@10 на ViDoRe v3. NeoMME-Retriever-260M достигает 0,523 — это высший результат среди оценённых моделей со строго менее чем 800 млн параметров. Он уступает ColQwen2.5 всего на 0,002 nDCG@10, используя примерно в 14 раз меньше параметров. NeoMME-Retriever-800M достигает 0,556, отставая на 0,009 nDCG@10 от близкой по размеру модели Vultron Retriever Flash (0.8B). Обе модели NeoMME-Retriever находятся на границе Парето по размеру модели.
В ViDoRe v1 и v2 используется nDCG@5. На обоих бенчмарках NeoMME-Retriever-260M превосходит ColModernVBERT и ColSmol-500M, который вдвое больше. NeoMME-Retriever-800M превосходит ColPali v1.3, используя в 3,6 раза меньше параметров.
| Сведения о модели | ViDoRe (nDCG@k) | |||
|---|---|---|---|---|
| Модель | Параметры. | v3 (@10) | v2 (@5) | v1 (@5) |
| <300M | ||||
| ColModernVBERT | 250M | 0.261† | 0.407‡ | 0.806‡ |
| ColSmol-256M† | 256M | 0.207 | 0.348 | 0.797 |
| NeoMME-260M‡ | 260M | 0.523 | 0.522 | 0.860 |
| От 300M до 1B | ||||
| ColSmol-500M | 500M | 0.340‡ | 0.455† | 0.825† |
| Vultron Flash† | 850M | 0.565 | 0.604 | 0.882 |
| NeoMME-800M‡ | 800M | 0.556 | 0.559 | 0.874 |
| >1B | ||||
| ColQwen2.5-v0.2† | 3.75B | 0.524 | 0.601 | 0.895 |
| ColPali v1.3† | 2.92B | 0.430 | 0.547 | 0.848 |
† Оценки MTEB. ‡ Результаты наших собственных оценок.
Практичный поиск высокого разрешения для позднего взаимодействия
Объём хранения при позднем взаимодействии линейно зависит от количества векторов в выходном эмбеддинге. Изображения с более высоким разрешением содержат больше патчей и поэтому порождают более крупные эмбеддинги. Например, квадратная страница размером 2048×2048 создаёт с помощью NeoMME-Retriever эмбеддинги, содержащие 4200 векторов, или около 2,1 МБ в формате float32. В среднем по бенчмарку ViDoRe v3 измеренный объём составляет около 1,5 МБ на документ.
Чтобы уменьшить объём индекса позднего взаимодействия, мы объединяем два взаимодополняющих метода сжатия:
- Иерархическое объединение токенов группирует похожие векторы документов в данном мультивекторном эмбеддинге и заменяет каждый кластер его средним значением, тем самым уменьшая количество сохраняемых векторов для каждой страницы.
- Асимметричное квантование квантует эмбеддинги документов до int8 или бинарного формата. Поскольку эмбеддинги запросов не сохраняются и генерируются только по мере необходимости, их можно хранить с более высокой точностью.
Мы протестировали эту конфигурацию на ViDoRe v3. При коэффициенте объединения 10 и использовании int8 для запросов и документов объём хранения уменьшился примерно с 1,5 МБ до 39 КБ на страницу — в 39 раз, при этом сохранилось более 99% базового значения nDCG@10. Более агрессивная конфигурация использует коэффициент объединения 8, int8 для запросов и бинарный формат для документов. В этом варианте требуется 6 КБ на страницу (в 255 раз меньше), а качество сохраняется на уровне более 95% от исходного.
Пользователи могут выбрать настройку сжатия на этой границе в зависимости от доступного объёма хранения и требуемого качества поиска.
Быстрый вывод для более дешёвого индексирования мультимодальных корпусов
Прежде чем выполнять поиск по корпусу, модель поиска должна преобразовать документы в эмбеддинги, которые будут храниться в векторном хранилище, например Qdrant, Weaviate или Milvus. Более быстрое кодирование ускоряет создание индекса и добавление в него новых документов, снижая необходимое время работы GPU и вычислительные затраты.
Поэтому мы измерили скорость кодирования изображений для NeoMME-Retriever и других мультимодальных систем поиска документов. Мы использовали предварительно обработанные тензоры изображений и отдельно подбирали размер пакета для каждой модели и каждого размера изображения. При одинаковом размере входных данных 2048×2048 на одной NVIDIA L40S модель NeoMME-Retriever-260M кодирует около 51 страницы в секунду — почти вдвое быстрее ColModernVBERT, который обрабатывает 26 страниц в секунду. Обе модели NeoMME-Retriever, на 260M и 800M параметров, также быстрее остальных сравниваемых моделей при меньших размерах входных изображений.
Попробуйте NeoMME-Retriever самостоятельно!
NeoMME-Retriever (260M и 800M) одновременно возвращает плотные и мультивекторные эмбеддинги. В приведённом ниже примере два текстовых запроса сопоставляются с двумя изображениями страниц документов с помощью позднего взаимодействия MeanMaxSim и плотного косинусного сходства.
Нажмите, чтобы просмотреть полный фрагмент примера 🤗transformers
pip install -U accelerate "transformers @ git+https://github.com/huggingface/transformers.git@main" "sentence-transformers>=6.0.0"
from typing import Any, Literal
import requests
import torch
from PIL import Image
from sentence_transformers.util import cos_sim, mean_maxsim
from transformers import BatchFeature, NeoMMEForRetrieval, NeoMMEProcessor
def encode(
messages: list[list[dict[str, Any]]],
task: Literal["query", "document"],
) -> BatchFeature:
return processor.apply_chat_template(
messages,
task=task,
tokenize=True,
return_dict=True,
return_tensors="pt",
processor_kwargs={"padding": "longest"},
)
model_name = "Hcompany/NeoMME-260M-Retriever"
processor = NeoMMEProcessor.from_pretrained(model_name)
model = NeoMMEForRetrieval.from_pretrained(model_name, device_map="auto")
image_urls = [
"https://github.com/tonywu71/colpali-cookbooks/blob/6ef1332da6bcb48c7ef1f19b25bfa555be7031a8/examples/data/shift_kazakhstan.jpg?raw=true",
"https://github.com/tonywu71/colpali-cookbooks/blob/6ef1332da6bcb48c7ef1f19b25bfa555be7031a8/examples/data/energy_electricity_generation.jpg?raw=true",
]
documents = [Image.open(requests.get(url, stream=True).raw) for url in image_urls]
queries = [
"Quelle partie de la production pétrolière du Kazakhstan provient de champs en mer ?",
"Which hour of the day had the highest overall electricity generation in 2019?",
]
document_messages = [
[{"role": "user", "content": [{"type": "image", "image": document}]}] for document in documents
]
query_messages = [[{"role": "user", "content": query}] for query in queries]
inputs_documents = encode(document_messages, "document").to(model.device)
inputs_text = encode(query_messages, "query").to(model.device)
with torch.inference_mode():
document_outputs = model(**inputs_documents)
query_outputs = model(**inputs_text)
late_scores = mean_maxsim(
query_outputs.embeddings,
document_outputs.embeddings,
a_mask=inputs_text["attention_mask"],
b_mask=inputs_documents["attention_mask"],
)
dense_scores = cos_sim(query_outputs.dense_embeddings, document_outputs.dense_embeddings)
print(late_scores, dense_scores)
Дообучение с помощью Sentence Transformers
Мы предоставляем отдельные контрольные точки для плотного и позднего взаимодействия для дообучения с помощью Sentence Transformers v6. Следуя тому же принципу, что и текстовые энкодеры, например ModernBERT, Sentence Transformers загружает базовую модель через NeoMMEModel, а не через двухголовую модель NeoMMEForRetrieval. В настоящее время Sentence Transformers поддерживает по одной поисковой голове на модель, поэтому каждая контрольная точка позволяет независимо дообучать плотную голову или голову позднего взаимодействия. Чтобы обучать обе головы одновременно, используйте NeoMMEForRetrieval с пользовательским Trainer.
От поиска к визуальному RAG
Поиск визуальных документов можно использовать как первый этап системы генерации с дополнением поиска (RAG). В отличие от текстового RAG, который извлекает фрагменты текста, визуальный RAG получает исходные изображения страниц и передаёт их визуально-языковой модели. Тогда модель может использовать таблицы, графики, диаграммы и макет страницы, которые извлечение текста может упростить или пропустить. Визуальный RAG работает следующим образом:
- Индексирование: преобразуйте каждую страницу PDF в изображение, создайте эмбеддинг с помощью поисковой модели и сохраните эмбеддинги в векторном хранилище.
- Поиск: создайте эмбеддинг запроса пользователя с помощью той же модели и извлеките k наиболее релевантных страниц.
- Генерация: добавьте изображения после запроса в сообщении чата (например,
{query}{img_1}{img_2}...{img_k}) и отправьте его в VLM для генерации ответа.
Вы можете напрямую протестировать визуальный RAG с помощью NeoMME-Retriever в нашем HF Space: 🤗 tonywu71/neomme-retriever-demo.
Заключение
NeoMME заменяет отдельные предварительно обученные энкодеры изображений и текста одним двунаправленным Transformer с длинным контекстом. Мы обучаем его с нуля для обработки как мультиязычных текстовых токенов, так и необработанных патчей изображений 32×32.
NeoMME-Retriever — это дообученная версия NeoMME для поиска визуальных документов. Один прямой проход создаёт одновременно плотные представления и представления позднего взаимодействия. Модель на 260 млн параметров превосходит все оценённые модели со строго менее чем 800 млн параметров и при одинаковом размере входных данных 2048×2048 кодирует страницы примерно вдвое быстрее ColModernVBERT. Чтобы уменьшить большой объём хранения эмбеддингов позднего взаимодействия для документов высокого разрешения, мы экспериментировали с иерархическим объединением токенов и асимметричным квантованием и смогли сократить размер эмбеддингов позднего взаимодействия примерно с 1,5 МБ до 6 КБ на страницу — сжатие в 255 раз при сохранении более 95% базового показателя nDCG@10.
Мы выпускаем все контрольные точки моделей NeoMME и реализацию для Hugging Face Transformers, доступную с первого дня, чтобы разработчики могли создавать эффективные мультимодальные и мультиязычные модели представлений на основе нашей работы.
Благодарности
NeoMME началась как побочный проект двух хороших друзей. Мы работали в условиях ограниченного времени и вычислительных ресурсов и решили поделиться результатами, чтобы сообщество могло развивать их дальше. Мы благодарим H Company за поддержку работы и предоставленные вычислительные ресурсы, использованные для обучения NeoMME.
Цитирование
@misc{lac2026neommesingletowermultimodalnativemultilingual,
title={NeoMME: A Single-Tower Multimodal-Native Multilingual Foundation Encoder for Efficient Fine-Tuning and Inference},
author={Aurélien Lac and Tony Wu},
year={2026},
eprint={2609.01657},
archivePrefix={arXiv},
primaryClass={cs.IR},
url={https://arxiv.org/abs/2609.01657},
}
Модели, упомянутые в этой статье 7
Пространства, упомянутые в этой статье 1
Статьи, упомянутые в этой статье 1
Коллекции, упомянутые в этой статье 1
Сообщество
· Зарегистрируйтесь или войдите, чтобы оставить комментарий
Модели, упомянутые в этой статье 7
Пространства, упомянутые в этой статье 1
Статьи, упомянутые в этой статье 1
Коллекции, упомянутые в этой статье 1
Переведено автоматически с английского. Оригинал статьи — по ссылке ниже.