Reranker
Переранжировщик повторно оценивает короткий список результатов ретривера с помощью более медленной, но точной модели, например кросс-энкодера, прежде чем результаты попадут к пользователю или в LLM.
Модель переранжирования получает короткий список кандидатов от быстрого поискового компонента первого этапа, точнее оценивает каждого кандидата относительно запроса и меняет порядок элементов. Поисковые системы, конвейеры генерации с дополнением из найденных источников (RAG) и рекомендательные системы используют этот подход, поскольку самые точные модели релевантности слишком медленны для обработки миллионов документов, но достаточно быстры для нескольких десятков или сотен лучших кандидатов. В текстовом поиске обычно применяют кросс-энкодер — трансформер, который одновременно обрабатывает запрос и одного кандидата и выдаёт единственную оценку релевантности. Nogueira и Cho (2019) дообучили BERT таким образом и возглавили таблицу лидеров MS MARCO по ранжированию фрагментов: значение MRR@10 оказалось на 27% выше предыдущего лучшего результата в относительном выражении.
Как работает схема «поиск, затем переранжирование»#
Первый этап ориентирован на полноту: за миллисекунды он извлекает из всей коллекции несколько сотен потенциально релевантных кандидатов с помощью сопоставления ключевых слов на основе BM25, векторного поиска по заранее вычисленным эмбеддингам или их сочетания. Переранжировщик ориентирован на точность: он выполняет полный проход модели для каждой пары «запрос — кандидат», а пользователю или в контекстное окно LLM попадают только несколько лучших результатов. Поисковым компонентом первого этапа такого типа служит VisualAISearch — решение от Ultralytics: решение создает эмбеддинги изображений из папки с помощью CLIP ViT-B/32, ранжирует изображения по косинусному сходству с текстовым запросом и по умолчанию возвращает до 30 совпадений, сходство которых превышает порог 0.1.
Кросс-энкодеры и би-энкодеры#
Би-энкодер, обычно используемый для поиска, отдельно строит эмбеддинги запроса и каждого документа, поэтому векторы документов можно вычислить один раз и сохранить в векторной базе данных. Эта независимость — одновременно и ограничение: вектор документа фиксируется до того, как становится известен запрос. Кросс-энкодер объединяет запрос и документ в один вход, позволяя механизму самовнимания сопоставить каждое слово запроса с каждым словом документа, но для каждой пары при обработке запроса требуется полный прямой проход. ColBERT занимает промежуточное положение: он хранит один вектор на токен документа и сопоставляет с ними токены запроса посредством отложенного взаимодействия. Класс CrossEncoder в Sentence Transformers запускает модель переранжирования, такую как ms-marco-MiniLM-L6-v2, обученную на поисковых запросах MS MARCO:
from sentence_transformers import CrossEncoder
query = "When was the transformer architecture introduced?"
# Shortlist returned by a fast first-stage retriever, in its original order
candidates = [
"Transformer models such as GPT and BERT are widely used in natural language processing.",
"An electrical transformer changes the voltage of an alternating current.",
"Convolutional neural networks became popular after AlexNet won ImageNet in 2012.",
"The transformer was introduced in the 2017 paper Attention Is All You Need.",
]
# The cross-encoder reads the query and each candidate together and scores their relevance
reranker = CrossEncoder("cross-encoder/ms-marco-MiniLM-L6-v2")
ranked = reranker.rank(query, candidates)
for hit in ranked:
print(f"{hit['score']:6.2f} {candidates[hit['corpus_id']]}")Фрагмент, содержащий ответ на вопрос, перемещается с последнего места на первое с оценкой 6.97, значительно опережая следующего кандидата с оценкой -4.48. Предложение об электрическом трансформаторе содержит ключевое слово из запроса, но получает оценку -5.29.
Типы моделей переранжирования#
- Кросс-энкодеры: Компактные трансформеры, дообученные на метках релевантности, например модели MS MARCO MiniLM и семейство bge-reranker от BAAI; также доступны в виде размещённых API для переранжирования.
- Переранжировщики на основе LLM: Большой языковой модели (LLM) предлагают оценить кандидатов или сразу упорядочить весь список. RankGPT показал, что ChatGPT и GPT-4 могут переранжировать фрагменты, выдавая отсортированный список, а затем сжал ранжирование ChatGPT до небольшой специализированной модели переранжирования.
- Модели обучения ранжированию: Рекомендательные системы и системы электронной коммерции переранжируют кандидатов с помощью моделей, например деревьев градиентного бустинга, учитывающих такие признаки, как история кликов, цена и актуальность. Их обучают с целевыми функциями ранжирования, например LambdaMART, доступной в LightGBM и XGBoost.
Модели переранжирования и связанные понятия#
- Семантический поиск: Поиск по смыслу, обычно с помощью би-энкодера. Переранжировщик может выступать дополнительным вторым этапом.
- Гибридный поиск: Объединяет списки результатов поиска по ключевым словам и векторного поиска, часто с помощью слияния обратных рангов, которое объединяет позиции результатов без повторного анализа содержимого. Переранжировщик часто обрабатывает объединённый список.
- Дистилляция знаний: Обучает быстрый поисковый компонент имитировать оценки медленного переранжировщика, перенося часть качества переранжирования на первый этап.
- Двухэтапные детекторы объектов: Для изображений применяют тот же подход: на первом этапе предлагаются области с кандидатами, а на втором каждая из них повторно оценивается и уточняется, после чего подавление немаксимумов (NMS) удаляет перекрывающиеся дубликаты.










