Ettin Reranker Family: обзор 6 реранкеров на ModernBERT с открытым кодом | AiManual
AiManual Logo Ai / Manual.
31 Май 2026 Инструмент

Ettin Reranker Family: шесть гильотин для посредственного поиска. И да, код обучения открыт

Разбор Ettin Reranker от Sentence Transformers: ModernBERT, дистилляция, сравнение с Cohere и BGE, примеры использования. Кому подойдут и как кастомизировать.

Зачем плодить шестёрку, если можно одну, великую?

Долгое время рынок реранкеров напоминал игру «угадай цену»: хочешь качество — плати Cohere или BGE, хочешь бесплатно — собирай костыли из маленьких моделей с дырявой документацией. Локальные варианты на CPU были компромиссом, но не панацеей. И тут команда Sentence Transformers (теперь под крылом Hugging Face, что само по себе событие) выкатывает Ettin Reranker Family — шесть моделей от 85 млн до 1,3 млрд параметров.

Но главная фишка не в количестве, а в отрытом рецепте обучения: датасеты, скрипты дистилляции, шаги — всё на столе. Больше никаких «засекреченных рецептов» от вендоров. Можно взять Ettin-Reranker-595M, дообучить на своей предметной области и получить результат, который уделывает Cohere Rerank v3 в бенчмарках вроде Reranking-MUP. Звучит как хайп? Давайте разбираться на практике.

Та самая гильотина: что под капотом

Все шесть моделей построены на архитектуре ModernBERT — эволюции BERT с ротационными позиционными эмбеддингами, улучшенным attention и поддержкой длинных контекстов (до 8192 токенов). ModernBERT — это не просто «BERT, но быстрее». Это архитектура, которая выжимает из GPU всё, не прося при этом A100. Ettin Reranker — Cross-Encoder: на вход подаётся пара (запрос, документ), а на выходе — скор релевантности. Никаких отдельных эмбеддингов, никаких dot-product — только прямая атака на соответствие.

Модель Параметры Квантование Скорость (док/сек на T4)
Ettin-Reranker-85M85 млнFP16, INT8~1200
Ettin-Reranker-220M220 млнFP16, INT8~750
Ettin-Reranker-595M595 млнFP16, INT8, INT4~280
Ettin-Reranker-1.3B1,3 млрдFP16, INT8~120

В семейство также входят дистиллированные версии Ettin-Reranker-85M-Distil и Ettin-Reranker-220M-Distil, которые обучены через knowledge distillation от большой модели-учителя (1.3B). Разница в качестве минимальная — пару процентов на Reranking-MUP, зато скорость на CPU взлетает до небес.

Если вам кажется, что 85M — это смешно, вспомните: Cross-Encoders и Reranking — это именно то, что отделяет вменяемый RAG от «garbage in, garbage out». Дофига параметров не нужно, когда архитектура умная.

Живой пример: как скармливать запросы

Возьмём самую популярную конфигурацию — Ettin-Reranker-595M. Допустим, мы строим RAG-систему для технической документации. Есть запрос пользователя и 20 кандидатов от первого этапа поиска (bi-encoder). Хотим отранжировать их, чтобы LLM не захлебнулась мусором. Подключаем через Hugging Face Transformers (Sentence Transformers последней версии уже включает Ettin):

from sentence_transformers import CrossEncoder

# Модель автоматически загружается с Hugging Face Hub
model = CrossEncoder("SentenceTransformers/Ettin-Reranker-595M", 
                     trust_remote_code=True)

query = "Как откатить коммит в Git?"
# candidates — список из 20 текстов, полученных от первого этапа поиска
pairs = [[query, doc] for doc in candidates]
scores = model.predict(pairs)

# Сортируем по убыванию
ranked_docs = [doc for _, doc in sorted(zip(scores, candidates), reverse=True)]

Всё. Никаких колбэков, никаких токенов — модель сама вернёт float-скор от 0 до 1. Можно прогонять батчами по 32-64 пары на T4. Если железа нет — 85M-дистилляция справится на CPU за миллисекунды на пару.

Сравнение с альтернативами: кто кого?

Берите табличку с бенчмарками, но давайте честно: главные конкуренты Ettin — Cohere Rerank v3 (проприетарный, дорогой даже в batch mode) и BGE-M3-Reranker (китайская модель, лучшая в open-source до выхода Ettin). Сравнение на Reranking-MUP (Multi-Pr: новость, что Ettin-595M обгоняет Cohere Rerank v3 на 2-3% по nDCG@10. А BGE-M3-Reranker (около 1 млрд параметров) — на равных по одномунадцатой метрике, но при этом Ettin легче на 40%.

Мы уже писали, что это дерзкий open-source. Сейчас, спустя месяц после релиза, появились детальные логи обучения — можно повторить дистилляцию на своих данных. У Cohere такого нет. BGE хотя бы открыли тренировочные данные, но рецепт там слишком завязан на специфичную архитектуру M3. Ettin же использует чистый Cross-Encoder без магии — его легче адаптировать.

⚠️
Не путайте Ettin Reranker с обычными bi-encoder эмбеддингами. Это разные вещи. Bi-encoder (например, BGE-M3) быстр для первого этапа, но менее точен. Cross-encoder (Ettin) — медленный, но точный. В RAG они работают в связке: bi-encoder отсеивает 95% шума, а Ettin доранжирует топ-20. Без этого — попытки построить LLM в латентном пространстве захлебнутся в токенах.

Рецепт обучения: теперь твой черёд

Самый сок — открытый пайплайн дистилляции. Sentence Transformers выложили на GitHub ettin-training-recipe с шагами:

  • Шаг 1: Собрать датасет пар (query, doc) с релевантностью от LLM или человека. Используется MS MARCO + синтезированные примеры через GPT-4o.
  • Шаг 2: Обучить большую модель-учитель (1.3B) на этих парах с loss MultipleNegativesRankingLoss (обычный для Cross-Encoder).
  • Шаг 3: Использовать учителя для генерации soft labels на большом корпусе (например, 50 млн пар).
  • Шаг 4: Обучить маленькую модель (85M или 220M) дистиллированно с MSE loss на предсказаниях учителя.

Всё это можно запустить на одной A100 за 2-3 дня. Главное — открытость данных: Hugging Face Dataset с хард-негативами уже есть. И да, русский язык поддерживается (в датасете есть русские backtranslation).

Кому это реально нужно?

Если вы строите RAG для enterprise или стартапа — Ettin это то, что доктор прописал. Модель маленькая, дешёвая, лего дообучается под предметную область. Особенно рекомендую:

  • Разработчикам RAG-систем — встройте Ettin-595M в пайплайн вместо Cohere, сэкономите деньги и повысите точность.
  • Исследователям в NLP — берите рецепт дистилляции и экспериментируйте с новыми архитектурами attention (спойлер: Differential Transformer V2 можно впихнуть вместо ModernBERT — кто мешает?).
  • Тем, кто пишет AI-агентов — реранкер снижает галлюцинации агента на этапе ретрива. Архитектура AI-кодинг-агентов без нормального ранжирования документов — это катастрофа.
  • Фанатам мультимодальностимодальные эмбеддинги и реранкеры тоже можно комбинировать, хотя Ettin пока текстовый.

А ещё есть TransformersPHP, который работает с Cross-Encoder, так что Ettin можно дёргать даже из PHP-монолита — без питона. Жизнь налаживается.

Ну и последнее (совет, а не заключение)

Не гонитесь за самой большой моделью. Ettin-Reranker-220M-Distil на CPU даёт 90% качества 1.3B за 10% времени. Если ваш RAG крутится на инференсе под десятками тысяч запросов в день — 220M будет золотой серединой. А 85M вообще можно встроить в браузерный WebAssembly — вот где будет разрыв шаблонов. Ждём ONNX-экспорт и было бы круто увидеть Ettin в AI-агентах нового поколения. Пока же — берите рецепт, качайте веса и делайте поиск таким, каким он должен быть: точным и дешёвым.

Подписаться на канал