slavb18

    Поиск идеального матча: тестируем локальные Cross-Encoder модели против NVIDIA Reranker в HR-домене

    AIHRNLPRerankersDocker

    Семантический поиск по резюме и вакансиям давно стал стандартом в HRTech. Обычно это работает по двухкупольной схеме (Bi-encoders): мы быстро кодируем тексты в векторные представления (эмбеддинги) и ищем кандидатов по косинусному сходству.

    Но косинусное сходство векторов улавливает лишь общие темы и ключевые слова. Для точного сопоставления опыта кандидата требованиям работодателя нужен второй этап — переранжирование (Reranking) с помощью тяжелых Cross-Encoder моделей.

    В этом материале мы расскажем о нашем практическом эксперименте: как мы развернули инфраструктуру на удаленном сервере и протестировали несколько популярных кросс-энкодеров на реальных данных сопоставления вакансий и кандидатов против облачного решения NVIDIA Reranker.


    Что и как мы сравнивали

    Для проведения честного бенчмарка мы выгрузили из рабочей базы данных 95 предложений (Offers), по которым у нас уже были накоплены:

    • matched — реальные эталонные оценки релевантности кандидата вакансии (наш ground truth).

    • matchedBatch — оценки, выставленные облачной моделью NVIDIA Reranker (rerank-qa-mistral-4b).

    Выборка была сбалансирована: 50% предложений имели высокие оценки соответствия (≥ 0.7), и 50% — низкие.

    Метрики качества

    Для оценки качества работы моделей использовались две классические статистические метрики:

    • Корреляция Спирмена (Spearman's Rho) — ключевая метрика для поиска и ранжирования. Она оценивает монотонность взаимосвязи (насколько хорошо модель сохраняет правильный относительный порядок кандидатов в выдаче).

    • Корреляция Пирсона (Pearson's r) — оценивает линейную зависимость между скором модели и эталоном.


    Участники тестирования

    Мы выбрали 5 популярных моделей для сравнения:

    1. WpythonW/RUbert-tiny_custom_cross-encoder — ультра-легковесный отечественный кросс-энкодер на базе RuBERT-tiny.

    2. DiTy/cross-encoder-russian-msmarco — классический русскоязычный реранкер на базе RuBERT-base.

    3. BAAI/bge-reranker-base — популярный азиатский мультипликативный реранкер среднего размера.

    4. BAAI/bge-reranker-large — тяжелая версия BGE для высокоточного ранжирования.

    5. s-nlp/ruRoberta-large-paraphrase-v1 — кросс-энкодер от SberDevices для оценки парафраз.


    Результаты бенчмарка

    Вот какие цифры мы получили по итогам запусков на тестовой выборке:

    МодельSpearman (vs True Matched)Pearson (vs True Matched)Spearman (vs Nvidia)Pearson (vs Nvidia)Статус / Примечание
    Nvidia (rerank-qa-mistral-4b)0.35050.25191.00001.0000Победитель (Baseline)
    WpythonW/RUbert-tiny_custom_cross-encoder0.25610.0242-0.0559-0.1393Лучшая среди локальных по ранжированию
    BAAI/bge-reranker-large0.10510.31830.07290.0717Высокая линейная точность
    BAAI/bge-reranker-base0.03940.1248-0.0711-0.0923Слабая корреляция
    DiTy/cross-encoder-russian-msmarcoОшибка: Нет ONNX версии в репозитории
    s-nlp/ruRoberta-large-paraphrase-v1Ошибка: Не поддерживается TEI как реранкер

    Главные инсайды и грабли

    1. Облачный гигант по-прежнему впереди

    Модель Nvidia Reranker на базе архитектуры Mistral показала наилучшую ранговую корреляцию Спирмена (0.3505). Она точнее всего распределяет кандидатов сверху вниз, отправляя неподходящих в подвал выдачи.

    2. Феномен RUbert-tiny

    Малыш RUbert-tiny_custom_cross-encoder приятно удивил. При минимальном размере и времени инференса (около 230 мс на пару на CPU) он выдал корреляцию Спирмена 0.2561.

    Однако обратите внимание на его корреляцию Пирсона (0.0242). Это значит, что модель отлично справляется с бинарным разделением ("хороший кандидат" / "плохой кандидат"), но абсолютно не умеет выстраивать плавную и линейную шкалу оценок.

    3. Нюансы Hugging Face TEI на CPU

    Если вы решите развернуть TEI на процессорах (CPU) без использования видеокарт, вас ждут два ограничения:

    • Требование ONNX формата: Веб-сервер TEI в CPU-режиме требует наличия предобученных ONNX-файлов (model.onnx) прямо в репозитории модели на Hugging Face. Именно поэтому упала модель DiTy — у неё в репозитории были только PyTorch веса, и TEI не смог их инициализировать.

    • Специфика архитектуры: Модель s-nlp/ruRoberta-large-paraphrase-v1 упала с ошибкой model is not a re-ranker model. TEI строго проверяет конфигурационные файлы (config.json) и ожидает увидеть стандартную структуру sequence classification с одним выходным лейблом.


    Резюме

    Если вам нужна максимальная точность ранжирования "из коробки" и бюджет позволяет — облачный Nvidia Reranker остается лучшим выбором.

    Если же вы строите независимый и экономичный контур на собственных CPU-серверах:

    • Для быстрого отсева мусора на первом этапе идеально подойдет компактный RUbert-tiny.
    • Для более тонкой оценки и построения скоринговых карт стоит смотреть в сторону BAAI/bge-reranker-large, предварительно прогрев кэш его ONNX-весов.