Reranking
reranking — повторная сортировка кандидатов более точной моделью
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:
- Первая фаза (retrieval): hybrid search достаёт топ-50.
- Вторая фаза (reranking): cross-encoder модель читает каждую пару (query, document) целиком, выдаёт точный score близости.
- Топ-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.