Reranking

reranking — повторная сортировка кандидатов более точной моделью

Раздел
Языковые модели
Обновлено
03.07.26

Reranking — двухступенчатый поиск: сначала быстрый retrieval достаёт топ-50 кандидатов, потом более точная (но медленная) reranker-модель переоценивает их и оставляет финальные топ-5. Cross-encoder сравнивает каждый документ с запросом напрямую — точнее, чем cosine similarity по embedding'ам. Поднимает качество RAG на 15–30% без замены retriever'а.

Коротко

Коротко. Reranking — это второй проход поиска: первая фаза быстро достаёт 30–50 кандидатов, вторая более точная модель (cross-encoder) переоценивает их и оставляет финальные топ-3-5. Reranker сравнивает запрос напрямую с каждым документом — точнее, чем cosine similarity. Главные модели: Cohere Rerank, BGE-Reranker (open-source), Voyage rerank-2. Поднимает качество RAG на 15–30%.

Что это такое

Команда строит RAG для технической документации. После hybrid search получают топ-5 документов, отдают LLM. Качество ответов посредственное — иногда LLM получает «почти правильный» документ, но самый релевантный болтается на 7-м месте.

Проблема: bi-encoder (обычный embedding-search) сравнивает векторы запроса и документа по cosine similarity. Это приближённая мера. На длинных документах с тонкой разницей в смысле — может ошибаться.

Решение — reranking:

  1. Первая фаза (retrieval): hybrid search достаёт топ-50.
  2. Вторая фаза (reranking): cross-encoder модель читает каждую пару (query, document) целиком, выдаёт точный score близости.
  3. Топ-5 после reranking подаются в LLM.

Cross-encoder в 100× медленнее bi-encoder'а на одну пару, но 50 пар × 50мс = 2,5 сек на запрос — приемлемо. И качество резко лучше.

К 2026-му это обязательный шаг production-RAG. Главные модели:

  • Cohere Rerank — managed API, $1/1M токенов.
  • BGE-Reranker — open-source, можно self-host.
  • Voyage rerank-2 — специализирован под RAG.
  • Jina Reranker v2 — multilingual, бесплатный tier.

В большом разборе «RAG и AI-поиск в 2026» reranking показан не отдельно, а внутри всей цепочки: документы → chunking → hybrid search → reranking → ответ с цитатами. Так проще понять, почему reranker не заменяет поиск, а доводит его до рабочего качества.

Как это работает

Разница между bi-encoder и cross-encoder:

Bi-encoder (обычный embedding для retrieval)

[Query]   ──→ [Encoder] ──→ vec_q (1536 dim)
[Doc]     ──→ [Encoder] ──→ vec_d (1536 dim)

similarity = cosine(vec_q, vec_d)

Запрос и документ кодируются независимо. Модель не «видит» их вместе, только сравнивает уже готовые векторы. Быстро, но грубо.

Cross-encoder (reranker)

[Query, Doc] ──→ [Encoder] ──→ score (число 0..1)

Модель получает обе строки сразу, проходит attention между ними. Может уловить детали взаимного контекста: «query спрашивает про X, document описывает Y, но связанный с X через Z».

Стандартный pipeline:

# Шаг 1: retrieval
candidates = vector_db.search(query, limit=50)  # быстро, 50мс

# Шаг 2: reranking
from sentence_transformers import CrossEncoder
reranker = CrossEncoder('BAAI/bge-reranker-v2-m3')
pairs = [(query, c.text) for c in candidates]
scores = reranker.predict(pairs)  # медленнее, ~2 сек

# Сортируем и берём топ-5
ranked = sorted(zip(candidates, scores), key=lambda x: -x[1])[:5]

Пример на практике

Команда замерила качество RAG для своего customer-support бота:

Без reranking (только hybrid search):

  • Тестовый набор: 100 пар (query, правильный документ).
  • Recall@5: 78% (правильный документ в топ-5).
  • Точность ответов LLM: 71%.

С reranking (BGE-Reranker v2):

  • Retrieval: hybrid возвращает топ-30.
  • Reranker переоценивает, оставляет топ-5.
  • Recall@5: 91%.
  • Точность ответов: 86%.

Прирост 15% точности при добавлении одного шага. Latency выросла с 100мс до 800мс — приемлемо для чата.

В ComfyUI с RAG-нодами reranking встречается реже (большинство нод используют только bi-encoder), но в LangChain/LlamaIndex есть нативная поддержка через классы Reranker.

С чем часто путают

  • Reranking и Hybrid Search — Hybrid это первая фаза (retrieval). Reranking — вторая (улучшение результатов).
  • Cross-encoder и Bi-encoder — Bi кодирует независимо (быстро), Cross — вместе (медленно, точнее).
  • Reranking и Re-retrieval — Reranking сортирует существующие результаты. Re-retrieval — повторный поиск с другим запросом.
  • Cohere Rerank и BGE-Reranker — managed API vs open-source. Качество близкое, выбор по бюджету.
  • Reranking и LLM-as-Judge — LLM-as-Judge использует общую LLM (GPT-4) для оценки. Reranker — специализированная модель, в 100× быстрее и дешевле.

Частые ошибки и заблуждения

  • «Reranking заменяет хороший retrieval». Не заменяет. Reranker может только переcсортировать уже найденные документы. Если правильного нет в топ-50 — reranker не поможет.
  • «Чем больше кандидатов в reranking, тем лучше». До предела. 30–50 — sweet spot. 100+ — лишнее время без значительного улучшения.
  • «Reranker — это ещё одна embedding-модель». Нет. Это другая архитектура (cross-encoder). Не используется для индексации, только для пары (query, doc).
  • «Reranking сильно дорогой». Cohere Rerank $1/1M токенов — копейки. BGE-Reranker open-source бесплатный (только GPU compute).
  • «Reranking не нужен с GPT-4». Нужен. Даже LLM-уровня GPT-4 лучше отвечает на 5 точно отобранных документов, чем на 5 «околорелевантных».

Связанные термины

  • Retrieval — первая фаза, на результаты которой накладывается reranking.
  • Hybrid Search — обычный «первый шаг» перед reranking.
  • Cross-encoder — архитектура reranker-модели.
  • Bi-encoder — архитектура retrieval-модели.
  • RAG — главный сценарий применения reranking.
  • Cohere Rerank — главный managed-провайдер.
  • BGE-Reranker — главный open-source вариант.

Частые вопросы

Какой reranker выбрать? Managed: Cohere Rerank v3 (default лучший). Open-source: BGE-Reranker-v2-m3 (multilingual, бесплатно), Jina Reranker v2.

Сколько кандидатов передавать в reranker? Обычно 20–50. Меньше — теряете возможность улучшения. Больше — много лишнего времени без выигрыша. 30 — sweet spot для большинства RAG.

Reranking работает с длинными документами? Cross-encoder ограничен своим context window (обычно 512–2048 токенов). Длинные документы рекомендуется заранее chunked'ить (что и так делается в RAG).

Можно ли использовать LLM как reranker? Можно, паттерн «LLM-as-Judge». Но дорого и медленно. Специализированные reranker'ы быстрее и дешевле для той же задачи.

Reranking помогает на маленьких базах? Если база < 100 документов — обычно нет. Retrieval уже точный. Польза начинается на тысячах документов с тонкой смысловой разницей.

Reranker для русского языка? BGE-Reranker-v2-m3 (мультиязычный), Cohere Rerank multilingual, Jina Reranker v2. Русский качество — близко к английскому.

Реранкер и реранкинг — это одно и то же? Почти. Реранкинг (по-русски иногда «переранжирование поиска») — это сам процесс повторной сортировки кандидатов. Реранкер — модель, которая его выполняет: cross-encoder вроде Cohere Rerank или BGE-Reranker. То есть реранкинг — действие, реранкер — инструмент.

Главное

Reranking — это второй шаг RAG, который переоценивает топ-30-50 кандидатов от первичного retrieval с помощью более точной cross-encoder модели. Главное преимущество над bi-encoder: модель видит запрос и документ вместе, проходит attention между ними, ловит тонкие нюансы. Стоимость — латенси растёт с 100мс до 500–1000мс на запрос, но качество ответов RAG поднимается на 15–30%. К 2026-му это обязательный шаг production-RAG. Главные модели: Cohere Rerank (managed), BGE-Reranker (open-source). Стандартная архитектура: Hybrid Search → Reranking → LLM. Reranker не заменяет хороший retrieval — он улучшает результаты, но не может вернуть документ, не попавший в топ-50.