Ettin Reranker: 6 моделей, которые делают поиск точнее и быстрее
Поисковая выдача часто выглядит так: первые три результата релевантны, четвёртый — почти по теме, а пятый явно промахнулся. Проблема не в том, что эмбеддинговая модель плоха, а в том, что она оценивает запрос и документ по отдельности. Реранкер смотрит на пару запрос-документ напрямую, и за счёт этого поправляет порядок. Но хороших реранкеров мало, а быстрых — ещё меньше.
Tom Aarsen из Hugging Face выпустил семейство Ettin Reranker — шесть моделей от 17M до 1B параметров, построенных на энкодерах ModernBERT от Johns Hopkins University. Каждая показывает state-of-the-art результат на своём размере, а самая маленькая обгоняет MiniLM-модели вдвое крупнее. В посте разберём, как устроен retrieve-then-rerank пайплайн, почему Ettin оказались такими быстрыми и что значит «дистилляция от учителя» на практике.
Что такое реранкер и зачем он нужен
Эмбеддинговая модель кодирует запрос и документ независимо, а затем сравнивает их векторы. Это дешёво и масштабируется на миллионы документов, но точность ограничена: запрос и документ никогда не «видят» друг друга напрямую. Реранкер (cross-encoder) принимает пару (query, document) как единую последовательность и пропускает её через все слои трансформера. Запрос и документ взаимно влияют друг на друга через механизм внимания, поэтому оценка релевантности получается гораздо точнее.
Проблема в стоимости: если эмбеддинг-модель обрабатывает каждый документ один раз и потом лишь сравнивает векторы, то реранкер должен прогонять каждую пару отдельно. На корпусе из миллиона документов это невозможно. Поэтому в production используют двухступенчатый подход: сначала быстрый ретривер отбирает top-K кандидатов, затем реранкер пересортировывает только эти K документов. Итоговая стоимость остаётся управляемой, а качество близко к полному перебору.
Этот паттерн retrieve-then-rerank применяется в поисковых движках, RAG-системах, рекомендательных сервисах и даже в e-commerce, где запрос пользователя сопоставляется с каталогом товаров. Разница между хорошим и плохим реранкером часто измеряется в процентах конверсии: если пятый результат в выдаче оказывается релевантнее первого, пользователь либо находит ответ быстрее, либо уходит недовольным.
Архитектура Ettin: ModernBERT + модульная головка
Все шесть моделей построены на энкодерах Ettin — ModernBERT-архитектуре с незаполненным вниманием (unpadded attention), RoPE-позиционными кодировками, GeGLU-активациями и предобучением на 2 трлн токенов под лицензией Apache 2.0. Контекстное окно — до 8192 токенов, что критично для реранкинга длинных документов.
Поверх энкодера установлена четырёхмодульная классификационная головка, собранная из модульных компонентов Sentence Transformers. Ключевое отличие от стандартных CrossEncoder: вместо обёртки AutoModel используется прямой модуль Encoder, что позволяет передавать на вход незаполненные (unpadded) последовательности прямо в Flash Attention 2. При средней длине документа это даёт ускорение от 1,7× до 8,3× по сравнению с fp32+SDPA в зависимости от размера модели.
Интересно, что в абляциях CLS-пулинг оказался лучше mean-пулинга, несмотря на то что ModernBERT использует глобальное внимание лишь в каждом третьем слое. Остальные слои работают с локальным окном и не могут «достучаться» до CLS с дальних позиций. Очевидно, тех немногих глобальных слоёв достаточно, чтобы сигнал собрался именно в CLS-токене.
Модели выпущены под лицензией Apache 2.0, что позволяет использовать их в коммерческих продуктах без ограничений. Все шесть размеров — от 17,6M до 1B параметров — доступны на Hugging Face Hub вместе с данными обучения и полным скриптом тренировки.
Результаты на MTEB и NanoBEIR
Автор протестировал все шесть реранкеров на полном бенчмарке MTEB(eng, v2) Retrieval (10 задач, top-100 переранжирован) и на NanoBEIR — быстром 13-датасетном подмножестве BEIR. Каждый реранкер сочетался с шестью эмбеддинг-моделями разного уровня: от статических эмбеддингов GloVe до 596M-модели.
Самая маленькая модель — 17M — набирает 0,5576 NDCG@10 на MTEB и 0,6746 на NanoBEIR. Для сравнения, 33M MiniLM-модель показывает 0,5066 на MTEB и 0,6369 на NanoBEIR. То есть Ettin 17M обгоняет модель почти вдвое крупнее с комфортным отрывом. 32M набирает 0,5779 на MTEB, опережая 568M bge-reranker-v2-m3 (0,5526) — разрыв в параметрах 17×, а качество выше у меньшей модели.
150M — сильнейший реранкер в категории до 600M параметров на MTEB: 0,5994 против 0,5940 у 596M bge-reranker-large. 68M набирает 0,5915, практически догоняя ту же 596M-модель, но с параметрами в девять раз меньше. 400M подбирается к учителю на расстояние 0,0024 (0,6091 против 0,6115 у 1,54B mxbai-rerank-large-v2). А 1B совпадает с учителем с точностью до четвёртого знака: 0,6114 против 0,6115.
На NanoBEIR картина похожа: 1B набирает 0,7237, учитель — 0,7318. Дистилляция эффективно закрыла разрыв к модели в полтора раза крупнее. Для production это означает, что можно заменить 1,5B-модель на 1B и получить ту же точность с заметно меньшей задержкой.
Сравнение с конкурентами показывает ещё один важный момент: качество реранкера зависит не только от параметров, но и от архитектурных деталей. 568M bge-reranker-v2-m3 уступает 32M Ettin, хотя разница в параметрах — 17×. Это говорит о том, что выбор бэкбона, способа пулинга и реализации внимания может перевесить сырой размер модели.
Скорость: где выигрывает незаполненное внимание
Тесты проводились на H100 80GB с авто-батчингом: батч удваивался, пока не заканчивалась память, и выбирался размер с максимальной пропускной способностью. Все измерения — медиана трёх прогонов.
Ettin 17M показывает 7517 пар в секунду — быстрее любой другой модели в сравнении, включая 19M MiniLM (4029 пар/сек). Ettin 150M работает на 3237 пар/сек, в то время как две другие 150M-модели на том же ModernBERT-base дают 1418 и 1404 пар/сек соответственно. Разница ровно в 2,3× — и объясняется исключительно unpadded inputs.
Все три 150M-модели используют Flash Attention 2, но у конкурентов вход остаётся заполненным (padded) из-за загрузки через AutoModel. FA2 получает padded тензор, тратит вычисления на padding-токены и теряет часть преимущества. У Ettin модульный Encoder пропускает незаполненные последовательности через все слои, поэтому каждый слой работает только с реальными токенами. Это различие между «частичным FA2» и «полным FA2».
На RTX 3090 картина схожа: 17M выдаёт 9008 пар/сек — даже выше, чем на H100, потому что на таких маленьких моделях узкое место не в вычислениях. На CPU (i7-13700K) преимущество unpadded пропадает, и 17M всё равно остаётся лидером с 267 парами в секунду.
Почему unpadded attention так сильно влияет на задержку? В стандартном батчинге все последовательности в батче дополняются до длины самой длинной. Если в батче один документ на 512 токенов и девять на 50 токенов, девять коротких документов всё равно обрабатываются как 512 токенов. При миллионах пар в сутки эти лишние вычисления превращаются в существенные затраты. Ettin убирает padding на уровне архитектуры, и выигрыш растёт с размером модели: от 1,71× на 17M до 8,26× на 1B.
Как обучались: дистилляция вместо разметки
Классический подход к обучению реранкеров — человеческая разметка релевантности в формате троек (запрос, положительный документ, отрицательный) с контрастивной или попарной функцией потерь. У этого подхода три проблемы: разметка дорога, модель видит только малую часть пар, а бинарные метки не отражают спектр релевантности.
Aarsen пошёл другим путём: точечная MSE-дистилляция от сильного учителя. Учитель — mxbai-rerank-large-v2 (1,54B параметров). Лосс — MSE на сырых логитах учителя без масштабирования. Данные — около 143 миллионов троек, собранных из двух источников.
Первый источник — предобучающие данные LightOn: 32 сплита с текстами из MTP, FW-EDU, Reddit, PAQ, S2ORC, Amazon, Wikipedia, MS MARCO и других. Второй — переранжированные retrieval-данные из семи датасетов (NQ, HotpotQA, FiQA, MS MARCO, NFCorpus, SciFact, Touche). Каждый запрос содержал до 2048 кандидатов, которые были переранжированы учителем и затем прорежены до 256 по рецепту квантильных якорей Jang et al. В обучение попадали 64 документа на запрос: 32 из головы рейтинга (положительный + сложные негативы) и 32 средней сложности из нижних квантилей.
Все шесть моделей обучались одним и тем же рецептом. Менялись только learning rate и размер батча: от 2,4e-4 и 1024 для 17M до 3e-6 и 512 для 1B. Гиперпараметры не подбирались индивидуально под каждый размер — LR определялась решётчатым поиском на 15% подвыборки, и эти значения перенеслись на полные данные без донастройки.
Во время обучения автор отслеживал NanoBEIR mean NDCG@10 каждые 5% шагов и использовал эту метрику для выбора лучшего чекпоинта. NanoBEIR достаточно быстрый, чтобы проводить оценку 20 раз за одну тренировку. После обучения лучший чекпоинт по NanoBEIR и последний чекпоинт проверялись на полном MTEB. Финальные релизные модели — те, что показали лучший результат на MTEB. Исключение — 68M, где последний чекпоинт оказался чуть сильнее.
Практические выводы для разработчиков
Если вы сейчас используете MiniLM-реранкер, замена на Ettin 17M — это однострочное изменение с улучшением и качества, и скорости. Если нужен баланс между точностью и задержкой, 150M-модель даёт лучший результат в среднем сегменте и работает в 2,3 раза быстрее прямых конкурентов на той же архитектуре. Для максимального качества при ограниченных ресурсах 1B-модель заменяет 1,5B-учителя без потери точности.
Важный нюанс: полное ускорение доступно только при включении Flash Attention 2 и bf16. Если загрузить Ettin через стандартный AutoModel без модульной головы, вы попадёте в колонку «bf16+FA2 с padding» — она медленнее, чем bf16+SDPA. Для других CrossEncoder эффект будет ещё скромнее, потому что unpadded inputs требуют модульного Encoder.
Часто задаваемые вопросы
В чём разница между реранкером и эмбеддинг-моделью?
Эмбеддинг-модель кодирует запрос и документ независимо, а реранкер подаёт их в трансформер как единую последовательность. Это дороже, но точнее, поэтому реранкер применяют только к top-K кандидатам после этапа ретривала.
Почему Ettin быстрее других моделей на том же ModernBERT?
Из-за незаполненных входных последовательностей (unpadded inputs). Стандартные модели загружаются через AutoModel и работают с padded тензорами, тратя вычисления на padding-токены. Ettin использует модульный Encoder, который пропускает через слои только реальные токены, получая полный выигрыш от Flash Attention 2.
Что такое дистилляция в контексте реранкеров?
Маленькая модель (студент) обучается предсказывать те же скоры релевантности, что и большая модель (учитель). В случае Ettin использовалась MSE между логитами студента и учителя на 143M тройках, без дорогой человеческой разметки.
Итог
Семейство Ettin Reranker показывает, что дистилляция от сильного учителя на качественных синтетических данных масштабируется от 17M до 1B параметров без изменения архитектурных решений. Ключевые инсайты: незаполненное внимание даёт 2–8× ускорения в зависимости от размера, CLS-пулинг работает даже в архитектурах с преимущественно локальным вниманием, а 1B-модель может заменить 1,5B-учителя с точностью до четвёртого знака. Для команд, которые строят поисковые системы, это готовый набор drop-in замен с открытыми весами, данными и скриптами обучения.