3,583 papers
arXiv:2511.07555 58 10 нояб. 2025 г. FREE

Pairwise Reranking Optimization: ускорение попарного сравнения документов в 166 раз

КЛЮЧЕВАЯ СУТЬ
Pairwise Reranking Prompting (PRP) — метод, при котором LLM сравнивает документы попарно, чтобы найти самый релевантный запросу. Вместо того чтобы оценивать каждый документ отдельно или ранжировать весь список сразу, модель отвечает на простой вопрос: «A или B — что лучше подходит?» Это работает точнее других подходов, но занимало 61 секунду на запрос — непригодно для реального времени.
Адаптировать под запрос

TL;DR

Pairwise Reranking Prompting (PRP) — метод, при котором LLM сравнивает документы попарно, чтобы найти самый релевантный запросу. Вместо того чтобы оценивать каждый документ отдельно или ранжировать весь список сразу, модель отвечает на простой вопрос: «A или B — что лучше подходит?» Это работает точнее других подходов, но занимало 61 секунду на запрос — непригодно для реального времени.

LLM хорошо справляется со сравнением, но плохо масштабируется. Попарное сравнение 25 документов требует сотни вызовов модели. Каждый вызов генерирует несколько токенов, модель загружена в высокой точности, а для борьбы с позиционным смещением (модель предпочитает первый вариант) приходится делать сравнение в обе стороны.

Исследователи применили шесть оптимизаций: меньшая модель, ограничение Top-K, сниженная точность, однонаправленный порядок, генерация одного токена, и продуманный промпт. Результат — 0.37 секунды на запрос при минимальной потере качества.


🔬

Схема метода

ОПТИМИЗАЦИЯ 1: Модель → FLAN-T5-XL вместо UL2 (×2.7 быстрее)
ОПТИМИЗАЦИЯ 2: Top-K → 5 вместо 25 документов (×6.9 быстрее)
ОПТИМИЗАЦИЯ 3: Точность → bfloat16 вместо float32 (×1.5 быстрее)
ОПТИМИЗАЦИЯ 4: Порядок → менее релевантный документ первым (×2 быстрее)
ОПТИМИЗАЦИЯ 5: Вывод → один токен "A" или "B" (×3 быстрее)
ОПТИМИЗАЦИЯ 6: Промпт → максимально короткий формат
─────────────────────────────────────────────────────────────
ИТОГО: 61.36 сек → 0.37 сек (×166)

🚀

Пример применения

Задача: Ты строишь внутренний поиск по базе знаний компании. Retriever выдаёт 25 документов, но пользователю нужен один точный ответ. Как быстро найти самый релевантный?

Промпт для одного сравнения:

Given a query {запрос пользователя}, which of the following two passages is more relevant to the query?
A: {документ_1}
B: {документ_2}
Output A or B:

Результат: Модель выдаёт один символ — "A" или "B". Побеждающий документ переходит на следующий раунд. За ~10 сравнений из 25 документов определяется лучший. С оптимизациями — менее секунды на всё.


🧠

Почему это работает

Слабость LLM: Модели плохо справляются с абсолютной оценкой. Попросить оценить документ от 1 до 10 — получишь нестабильные, некалиброванные числа. Listwise-методы (ранжировать всё сразу) требуют GPT-4 уровня.

Сильная сторона LLM: Модели отлично сравнивают. «Что лучше — A или B?» — простой выбор, где модель демонстрирует стабильные результаты даже на маленьких моделях типа FLAN-T5-XL.

Как метод это использует: Вместо сложной задачи (оценить 25 документов) — серия простых (A vs B). Каждое сравнение — один токен на выходе. Порядок фиксирован (менее релевантный первым), чтобы не тратить время на двустороннюю проверку.

Рычаги управления:

  • Top-K — сколько документов сравнивать. Меньше = быстрее, но можно пропустить релевантный. Начни с 5, увеличивай если качество падает.
  • Формат промпта — "A/B" вместо "Passage A/Passage B" экономит токены и ускоряет.
  • Направление порядка — менее релевантный первым снижает positional bias без удвоения вызовов.

📋

Шаблон промпта

Given a query {запрос}, which of the following two passages is more relevant to the query?
A: {документ_A}
B: {документ_B}
Output A or B:

Плейсхолдеры:

  • {запрос} — вопрос пользователя
  • {документ_A} — первый кандидат (менее релевантный по начальному рейтингу)
  • {документ_B} — второй кандидат

Критически важно: Для работы метода нужен RAG-пайплайн с программным доступом к модели. Это не техника для ручного использования в чате.


⚠️

Ограничения

⚠️ Требует инфраструктуры: Метод работает на уровне backend-систем — нужен доступ к API, GPU, retriever. Обычному пользователю ChatGPT/Claude в чате это не применить.

⚠️ Фиксированный Top-K: Система не адаптирует количество сравниваемых документов под сложность запроса. Простые запросы могли бы обойтись Top-3, сложные требуют больше.

⚠️ Нет domain-specific тюнинга: Тестировали на внутренних бизнес-датасетах Capital One. Для медицины, права, других специфичных доменов результаты могут отличаться.


🔍

Как исследовали

Команда Capital One взяла два проприетарных датасета из реальных бизнес-вертикалей: ~8000 документов в каждом корпусе, ~900 тестовых запросов. Каждый запрос имел один правильный документ (ground truth от экспертов).

Базовый retriever (multi-qa-mpnet-base-cos-v1) выдавал Recall@1 = 42-50%. С pairwise reranking — 56-58%, это +10-16 процентных пунктов. Cross-encoder reranker (bge-reranker-v2-m3) показал 52-54% — хуже попарного.

Интересный вывод: меньшая модель дала лучший результат. FLAN-T5-XL (2.85B параметров) на этой задаче работала не хуже FLAN-UL2 (20B). Для простого выбора «A или B» гигантская модель избыточна.

Quantization (4-bit, 8-bit) попробовали и отвергли — падение качества заметное. А вот bfloat16 вместо float32 дал ускорение без потерь.

Любопытно: model parallelism (распределение модели по GPU) не помог. На маленькой модели выигрыш от параллелизма съедается накладными расходами на коммуникацию между GPU.


📄

Оригинал из исследования

Given a query {query}, which of the following two passages is more relevant to the query?
A: {doc1}
B: {doc2}
Output A or B:

Контекст: Финальная версия промпта после тестирования нескольких вариантов. Выбрана по критерию максимальной точности при ограничении в один токен на выходе.


💡

Адаптации и экстраполяции

💡 Принцип для ручной работы: турнирная сетка вместо общего списка

Если тебе нужно выбрать лучший вариант из многих (названия, заголовки, формулировки), попроси LLM сравнивать попарно, а не ранжировать весь список. Это надёжнее — модель делает простой выбор, не пытаясь удержать в контексте 10-20 вариантов.

У меня есть 8 вариантов названия для статьи. Проведи турнир: сравни попарно (1 vs 2, 3 vs 4...), затем победителей между собой. Для каждой пары напиши только номер победителя.

1. [название]
2. [название]
...

🔧 Техника: фиксированный порядок против позиционного смещения

Если сравниваешь варианты, ставь тот, который тебе кажется слабее, первым. LLM склонна выбирать первый вариант — так ты компенсируешь bias.


🔗

Ресурсы

  • Работа: "LLM Optimization Unlocks Real-Time Pairwise Reranking"
  • Авторы: Jingyu Wu, Aditya Shrivastava, Jing Zhu, Alfy Samuel, Anoop Kumar, Daben Liu — AI Foundations, Capital One
  • Ключевая ссылка: Qin et al. (2024) — оригинальная работа по Pairwise Reranking Prompting (NAACL 2024)

📖 Простыми словами

Суть в том, что обычные поисковики — это тупые калькуляторы. Они считают ключевые слова, но не понимают смысла. LLM в режиме Pairwise Reranking работает иначе: она не ставит оценки, а выступает как судья, который сравнивает два документа и говорит, какой из них лучше. Проблема в том, что такой «суд» дико медленный — в базе Capital One один запрос занимал 61 секунду. Это полный провал для любого живого сервиса. Исследователи нашли способ разогнать этот процесс в 167 раз, сохранив точность на уровне 0.54 по метрике Recall@1.

Это как если бы ты нанял профессора проверять 1000 студенческих работ. Если он будет вчитываться в каждую, он умрет от старости. Но если ты сначала дашь работы лаборанту, чтобы тот выкинул явный мусор и оставил топ-5 кандидатов, а потом попросишь профессора просто быстро тыкать пальцем: "этот лучше того", дело пойдет в разы быстрее. Формально он не читал всё досконально, но результат почти такой же, потому что сравнивать два объекта всегда проще, чем выставлять абсолютный балл по стобалльной шкале.

Чтобы это не тормозило, внедрили пять жестких хаков. Во-первых, взяли модель FLAN-T5-XL на 3 миллиарда параметров вместо монстра на 20 миллиардов — она быстрее в 2.7 раза и, внезапно, даже точнее. Во-вторых, использовали Top-K фильтр: LLM мучает только 5 лучших документов, а не 25, что дает ускорение в 7 раз. В-третьих, включили constrained decoding — заставили модель выдавать ровно один токен, "A" или "B", вместо длинных рассуждений. Это срезало время еще в 3 раза. Плюс убрали лишние проверки и снизили точность весов до bfloat16.

Хотя тестировали это на банковских данных, принцип универсален. Это решение для любого RAG-сервиса, где нужно, чтобы ответ был не просто «каким-то», а максимально точным и быстрым. Если у тебя есть свои GPU и ты устал от того, что поиск выдает релевантную, но бесполезную фигню — этот метод для тебя. SEO для роботов уходит в прошлое, теперь мы оптимизируем контент под «судейство» маленьких, но очень быстрых моделей.

Короче: хватит пытаться заставить огромные модели ранжировать сотни документов — это дорого и медленно. Оптимизируй процесс: маленькая модель, жесткий фильтр Top-5 и ответ в один токен. Ты получишь точность топового уровня при задержке всего в 0.37 секунды. Кто не внедрит это сейчас, так и будет кормить пользователей ответами с задержкой в минуту, пока клиенты уходят к конкурентам.

Сгенерировано: 21.12.2025 16:55 | ArXiv Data Collector

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с