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)
