Зачем плодить шестёрку, если можно одну, великую?
Долгое время рынок реранкеров напоминал игру «угадай цену»: хочешь качество — плати 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-85M | 85 млн | FP16, INT8 | ~1200 |
| Ettin-Reranker-220M | 220 млн | FP16, INT8 | ~750 |
| Ettin-Reranker-595M | 595 млн | FP16, INT8, INT4 | ~280 |
| Ettin-Reranker-1.3B | 1,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 без магии — его легче адаптировать.
Рецепт обучения: теперь твой черёд
Самый сок — открытый пайплайн дистилляции. 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-агентах нового поколения. Пока же — берите рецепт, качайте веса и делайте поиск таким, каким он должен быть: точным и дешёвым.