Instructions to use sshalimov04/ru-reranker-edge-150m with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use sshalimov04/ru-reranker-edge-150m with sentence-transformers:
from sentence_transformers import CrossEncoder model = CrossEncoder("sshalimov04/ru-reranker-edge-150m") query = "Which planet is known as the Red Planet?" passages = [ "Venus is often called Earth's twin because of its similar size and proximity.", "Mars, known for its reddish appearance, is often referred to as the Red Planet.", "Jupiter, the largest planet in our solar system, has a prominent red spot.", "Saturn, famous for its rings, is sometimes mistaken for the Red Planet." ] scores = model.predict([(query, passage) for passage in passages]) print(scores) - Notebooks
- Google Colab
- Kaggle
ru-reranker-edge-150m
Русский кросс-энкодер-реранкер на 150M параметров. Обучен дистилляцией из
BAAI/bge-reranker-v2-m3 (568M) и на русских задачах даёт 95–99% его качества
при в 3.8 раза меньшем размере.
Что это
- База:
deepvk/RuModernBERT-base(контекст до 8192 токенов, обучали и оценивали при 512). - Как обучали: листвайз-дистилляция — модель учится повторять распределение скоров учителя внутри группы «запрос + 16 документов». Меток релевантности не требуется.
- На чём обучали: русский mMARCO (train), MIRACL-ru (train), статьи русской Википедии, фрагменты кодексов и нормативных актов РФ, синтетические пары «аргумент → контраргумент» (Qwen3-27B). Ни один из оценочных датасетов ниже в обучение не попадал.
- Вход: пара (запрос, документ) → один скор (логит). Чем больше, тем релевантнее.
Качество
nDCG@10 на подмножестве RusBEIR (зеро-шот, реранк BM25 top-100, одинаковые кандидаты во всех строках):
| scifact | nfcorpus | arguana | tydiqa | xquad | среднее | |
|---|---|---|---|---|---|---|
| BM25 | 0.657 | 0.302 | 0.325 | 0.351 | 0.952 | 0.517 |
| ru-reranker-edge-150m | 0.742 | 0.346 | 0.386 | 0.583 | 0.987 | 0.609 |
| bge-reranker-v2-m3 (568M, учитель) | 0.733 | 0.340 | 0.381 | 0.592 | 0.989 | 0.607 |
RuBQReranking (ruMTEB, официальный mteb, зеро-шот): MAP 0.773, nDCG@10 0.839
(учитель: 0.785 / 0.848).
Среднее по пяти датасетам — выше учителя; ArguAna (поиск контраргументов) закрыт синтетическими парами «аргумент → контраргумент» (0.249 → 0.386).
Как использовать
from sentence_transformers import CrossEncoder
model = CrossEncoder("sshalimov04/ru-reranker-edge-150m", max_length=512)
query = "Что может вызвать цунами?"
docs = [
"Землетрясения, извержения вулканов и подводные оползни обладают потенциалом вызвать цунами.",
"Флаг муниципального округа утверждён решением совета депутатов.",
]
scores = model.predict([(query, d) for d in docs])
ranked = sorted(zip(scores, docs), reverse=True)
Или через transformers: AutoModelForSequenceClassification с num_labels=1,
на вход tokenizer(query, document, truncation=True, max_length=512).
Скорость
На NVIDIA GB10 (bf16, batch 32, длина 512) реранк 100 документов: 0.8 с в обычном
0.35–0.4 с с transformers-пути и **torch.compile** (2.2× быстрее, без потерь):
model.model = torch.compile(model.model, dynamic=True) # для CrossEncoder
ONNX (папка onnx/): model_fp16.onnx — экспорт opset 17, паритет с torch
(Spearman 0.997 по скорам). Вход: input_ids, attention_mask; выход: logits [batch, 1].
На CUDA через ONNX Runtime он медленнее torch (часть узлов ModernBERT падает на CPU),
поэтому предназначен для переноса на другие рантаймы/устройства, а не для ускорения на GPU.
int8-квантизация не выложена: динамическая int8 заметно портит ранжирование (Spearman 0.77–0.95).
Ограничения
- Только русский язык (тексты на других языках не тестировались).
- Путь внимания ModernBERT в
transformersбез FlashAttention — узкое место;torch.compileего частично закрывает. - Оценка первой стадии —
bm25s, а не Elasticsearch, поэтому абсолютные числа могут отличаться от лидерборда RusBEIR; сравнения внутри таблицы точны.
Данные для воспроизведения
Кэш скоров учителя и тексты всех обучающих групп опубликованы как датасет:
sshalimov04/ru-reranker-teacher-scores.
English. A 150M Russian cross-encoder reranker (RuModernBERT-base) distilled
listwise from BAAI/bge-reranker-v2-m3. Zero-shot on a RusBEIR subset it averages
0.609 nDCG@10 (BM25 0.517, teacher 0.607) and reaches MAP 0.773 on RuBQReranking
(teacher 0.785). Use with sentence_transformers.CrossEncoder; input is a
(query, document) pair, output a relevance logit. Teacher scores and training groups are released as
sshalimov04/ru-reranker-teacher-scores.
- Downloads last month
- 58
Model tree for sshalimov04/ru-reranker-edge-150m
Base model
deepvk/RuModernBERT-base