Запись архива

R2Adapter: как адаптировать RAG под гибридные запросы без переобучения модели

Исследователи представили R2Adapter — лёгкий адаптер для гибридного RAG, который объединяет разреженный и плотный поиск без дообучения базовой LLM. Разбираем архитектуру, тесты на пяти бенчмарках и практические ограничения метода.

Архитектура R2Adapter — гибридный RAG с адаптером без переобучения модели
Архитектура R2Adapter — гибридный RAG с адаптером без переобучения модели
Arlington State College Library, students studying (10010394).jpg | by University of Texas at Arlington Photograph Collection | wikimedia_commons | CC BY 4.0

Гибридный RAG (Retrieval-Augmented Generation) — одна из тех задач, которые на бумаге выглядят просто, а на практике упираются в совместимость методов поиска. Разреженный поиск (BM25) хорошо находит точные совпадения терминов, плотный поиск (Dense Retrieval) лучше работает с семантической близостью, но объединить их без потери скорости или качества сложно. Обычное решение — дообучать модель под конкретную комбинацию — дорого, негибко и требует отдельного пайплайна для каждого набора данных.

В июне 2026 года группа исследователей опубликовала препринт с описанием R2Adapter — лёгкого адаптера, который встраивается поверх существующей LLM и учится комбинировать сигналы от разреженного и плотного ретривера без изменения весов самой модели. Результаты на пяти бенчмарках показывают прирост до 12% по точности ретрива против стандартных гибридных подходов, при этом адаптер добавляет всего 0.5% к числу параметров базовой модели.

Проблема: почему гибридный RAG до сих пор не стал стандартом

В продакшен-системах RAG выбор между BM25 и Dense Retrieval — это всегда компромисс. BM25 дёшев, прозрачен и хорошо работает на доменно-специфичных терминах, но пропускает семантические вариации. Плотный ретривер (например, Contriever или E5) лучше понимает перефразировки и контекст, но требует GPU для инференса, чувствителен к доменному сдвигу и может терять редкие термины.

Гибридные подходы обычно используют линейную комбинацию скорингов — взвешенную сумму BM25 и плотной релевантности. Но вес приходится подбирать вручную под каждый датасет, а линейное объединение не учитывает, что разные запросы требуют разного баланса. Для фактографического вопроса «какой год основания OpenAI» BM25 достаточно, а для запроса «объясни разницу между attention и transformer» плотный поиск даст лучший контекст.

R2Adapter решает именно эту задачу: адаптер учится динамически выбирать и комбинировать сигналы от разных ретриверов в зависимости от запроса, не требуя переобучения LLM.

Архитектура R2Adapter: лёгкое переранжирование с attention

R2Adapter — это небольшой transformer-слой, который встраивается между ретривером и LLM. Он принимает на вход:

  • Топ-K результатов от разреженного ретривера (BM25) с их скорами
  • Топ-K результатов от плотного ретривера (например, Contriever-MS MARCO) с эмбеддингами и скорами
  • Вектор запроса (query embedding)

На выходе адаптер выдаёт переранжированный список документов с новыми весами, которые учитывают как текстовое совпадение, так и семантическую близость, и специфику запроса.

Ключевое архитектурное решение — кросс-аттеншн между кандидатами от разных ретриверов. Вместо того чтобы просто усреднять скоры, адаптер учится определять, какой источник более надёжен для данного запроса. Если запрос содержит редкий технический термин, адаптер повышает вес BM25. Если запрос — общий вопрос с синонимами, адаптер отдаёт предпочтение плотным эмбеддингам.

Размер адаптера — 4 слоя, 256 скрытых единиц, 8 голов внимания. Общее число параметров — около 8M, что составляет примерно 0.5% от 7B-модели. Обучение занимает около 4 часов на одном A100 для датасета из 100K запросов.

Результаты тестов: пять бенчмарков и сравнение с baseline

Исследователи протестировали R2Adapter на пяти стандартных бенчмарках RAG:

  • NQ (Natural Questions) — фактографические вопросы по Wikipedia
  • TriviaQA — вопросы из викторин
  • HotpotQA — многоходовые вопросы, требующие объединения нескольких документов
  • FEVER — проверка фактов с поиском подтверждений/опровержений
  • MuSiQue — многоходовые вопросы с композицией фактов

Метрика — Recall@5 (доля запросов, где правильный документ попал в топ-5 результатов).

Бенчмарк BM25 Dense (Contriever) Гибрид (линейный) R2Adapter
NQ 3 1 2 84.7
TriviaQA 9 5 8 81.3
HotpotQA 2 8 1 69.5
FEVER 1 3 4 82.0
MuSiQue 7 2 0 62.8

Прирост относительно лучшего линейного гибридного подхода — от 4.5 до 5.8 процентных пункта. На многоходовых запросах (HotpotQA, MuSiQue) разница особенно заметна: линейная комбинация плохо справляется с запросами, где нужен разный тип поиска для разных частей вопроса.

Как это работает на практике: пример запроса

Возьмём запрос из HotpotQA: «Какой университет окончила основательница компании, выпустившей GPT-3?»

BM25 найдёт документы, где есть слова «университет», «основательница», «GPT-3». Плотный ретривер найдёт документы про OpenAI и его основателей. Линейная комбинация даст средний результат.

R2Adapter проходит два шага:

Анализирует структуру запроса: первая часть требует точного совпадения («какой университет»), вторая — семантического поиска («основательница компании, выпустившей GPT-3»).
2. Назначает разный вес для разных частей: BM25 получает больший вес на первой части, плотный ретривер — на второй.

На выходе — документ, который содержит и название университета, и контекст об основателях OpenAI, а не просто набор терминов.

Ограничения и нерешённые вопросы

У метода есть несколько практических ограничений, которые авторы честно указывают:

  • Зависимость от качества ретриверов: адаптер не исправляет ошибки базовых ретриверов. Если ни один ретривер не нашёл релевантный документ в топ-K, адаптер не сможет его восстановить.
  • Размер K: тесты проводились с K=20. При меньшем K (например, 5) прирост снижается до 2-3 процентных пунктов, так как у адаптера меньше кандидатов для переранжирования.
  • Доменный сдвиг: адаптер обучался на MS MARCO и Wikipedia. На специализированных доменах (медицина, юриспруденция) без дообучения качество падает на 8-10%.
  • Задержка: добавление адаптера увеличивает время инференса на 15-20 мс на запрос на A100. Для CPU-инференса задержка может быть заметнее.

Сценарии применения и альтернативы

R2Adapter имеет смысл, когда:

  • У вас уже есть работающий RAG-пайплайн с BM25 и Dense Retrieval, и вы хотите улучшить точность без переобучения LLM
  • Запросы имеют разную природу — от фактографических до семантических
  • Вы готовы пожертвовать 15-20 мс задержки ради 5-6% прироста Recall

Альтернативы, которые стоит рассмотреть:

  • ColBERT-v2 — ранжирование с поздней интеркацией, даёт сопоставимые результаты, но требует больше памяти
  • Cohere Rerank — коммерческий API, проще в интеграции, но дороже и закрытый
  • Переобучение LLM с LoRA — более гибко, но требует данных и вычислительных ресурсов

R2Adapter не заменяет эти подходы, а предлагает промежуточный вариант: лёгкий, быстрый и без переобучения базовой модели.

Что проверить перед внедрением

Перед тем как добавлять R2Adapter в продакшен, стоит провести три теста:

A/B-тест на ваших данных: возьмите 1000 типичных запросов из логов, прогоните через текущий RAG и через R2Adapter. Сравните Recall@5 и качество ответов LLM.
2. Тест на задержку: замерьте время инференса на вашем железе. Если вы используете CPU или старые GPU, дополнительные 20 мс на запрос могут быть критичны.
3. Тест на доменный сдвиг: если ваш домен далёк от Wikipedia (например, техническая документация или медицинские статьи), адаптер может потребовать дообучения на 10-20K доменных запросов.

Исходный код R2Adapter опубликован на GitHub, а веса предобученной версии — на Hugging Face. Это позволяет начать эксперименты без написания всего пайплайна с нуля.

Источники