Glance: одна 9B-модель сама отбирает абзацы для RAG и обходит реранкер

В RAG-системах (модель отвечает, опираясь на найденные документы) обычно работают две нейросети: реранкер сортирует найденные абзацы, генератор пишет ответ. Авторы Glance оставили одну 9-миллиардную модель. К ней добавили маленький адаптер (около 0,1 ГиБ), который выдаёт оценку релевантности каждому абзацу. Модель один раз читает все кандидаты, а потом для каждого абзаца отвечает на короткий вопрос, продолжая от общего кэша. После 39 минут дообучения на MS MARCO метрика nDCG@10 (насколько высоко в топ-10 попали нужные документы) на SciFact составила 0,741 против 0,721 у bge-reranker-v2-m3. • На NFCorpus: 0,345 против 0,326 у bge-reranker-v2-m3. • На 200 кандидатах (43 тыс. токенов) отрыв от cross-encoder достигает 0,058 nDCG@10. • Специализированный реранкер всё равно быстрее: 31–60 мс на запрос против ~420 мс у Glance.

AI-обработка оригинала Hugging Face Daily Papers; редакция Hamidun News
Glance: одна 9B-модель сама отбирает абзацы для RAG и обходит реранкер
Источник: Hugging Face Daily Papers. Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникHugging Face Daily Papers ↗
Главный редактор
На NFCorpus0,345 против 0,326 у bge-reranker-v2-m3.
Ключевой факт #2На 200 кандидатах (43 тыс. токенов) отрыв от cross-encoder достигает 0,058 nDCG@10.
Ключевой факт #3Специализированный реранкер всё равно быстрее: 31–60 мс на запрос против ~420 мс у Glance.

Обычный RAG-конвейер держит в памяти две модели. Сначала реранкер сортирует найденные поиском абзацы, потом генератор читает лучшие и пишет ответ. Исследователи из проекта airun-ai предлагают Glance: генератор сам оценивает абзацы, а отдельный реранкер не нужен. К замороженной 9-миллиардной модели добавили адаптер LoRA (небольшой набор дообученных весов) и «указательную голову» на 256 измерений. Каждая дополнительная такая «навыковая» надстройка занимает примерно 0,1 ГиБ. Пока это ранние результаты: проверяли два поисковых датасета, один датасет вопросов-ответов и одно семейство моделей.

Один прогон вместо двадцати

Классический cross-encoder (например, bge-reranker-v2-m3) кодирует каждую пару «запрос — абзац» отдельно. Если кандидатов 20, получается 20 прогонов. Glance устроен иначе.

  • Модель один раз читает все кандидаты и сохраняет внутренний кэш (prefill).
  • От этого кэша ответвляются короткие пробы, примерно по 30 токенов: «Содержит ли абзац N информацию, отвечающую на запрос?»
  • Пробы не видят друг друга, зато каждая видит все абзацы и может сравнивать их.
  • Указательная голова превращает состояние модели на пробе в оценку релевантности. Текст при этом не генерируется.

Также есть вариант Glance-Activated. В нём адаптер включается только на токенах проб, абзацы кодируются базовыми весами, и ответ продолжается из исходного кэша. В основном режиме выбранные абзацы (около 1,5 тыс. токенов) читаются заново с выключенным адаптером.

Базовая модель, MiMo-V2.6-Distill-Qwen-9B от Xiaomi, гибридная: слои линейного внимания Gated DeltaNet и обычного внимания чередуются 3:1. У линейных слоёв единое последовательное состояние, поэтому кэши отдельных абзацев в произвольном порядке не склеишь. Ответвления решили копировать от конца общего контекста, и это точный метод.

Что показали замеры

Оценивали по nDCG@10: чем выше нужные документы в первой десятке, тем ближе значение к 1. Реранкеры сортировали топ-20 от BM25 (классического текстового поиска).

  • Без обучения на поисковых данных адаптер на SciFact (научные утверждения) дал 0,715 против 0,729 у двадцати раздельных вызовов той же модели. При этом он был в 3,6 раза быстрее. У cross-encoder на SciFact 0,721.
  • На NFCorpus (медицинские тексты) тот же режим дал 0,341 против 0,326 у cross-encoder. Авторы предполагают, что помогает сравнение абзацев между собой.
  • После 39 минут обучения на MS MARCO (4000 запросов, одна видеокарта B200, пик 21 ГиБ) результат вырос до 0,741 на SciFact и 0,345 на NFCorpus. Отрыв от cross-encoder составил 0,020 и 0,019. Значимость на этих датасетах не проверяли, разницу ниже 0,02 авторы называют ориентировочной.

На HotpotQA (вопросы, для ответа на которые нужно собрать факты из двух абзацев) взяли 300 вопросов по 10 абзацев. Cross-encoder чаще находил нужные абзацы: полнота в топ-2 составила 0,863 против 0,762. Но ответы по отбору Glance оказались лучше: F1 0,718 против 0,683 у нетренированного адаптера, и этот разрыв статистически незначим. В аннотации для дообученной версии заявлен выигрыш +0,045 F1. Если оставить адаптер включённым и при ответе, F1 вырастает до 0,757, что на 0,032 ниже потолка с двумя эталонными абзацами. Ответы становятся короче (2,5 слова против 3,1), что лучше подходит под формат HotpotQA.

Где метод упирается в потолок

Главное преимущество проявляется на длинных списках кандидатов. Дообученный адаптер улучшается до 200 кандидатов (43,4 тыс. токенов): nDCG@10 равен 0,717 против 0,659 у cross-encoder на тех же 100 запросах SciFact. На 100 кандидатах разрыв 0,060, а время составляет 1,05 с на запрос. Необученный адаптер на больших размерах деградирует, а на 65 тыс. токенов качество падает до 0,505.

Цена такая:

  • Память растёт быстрее, чем длина контекста: от 15 до 56 ГиБ, потому что каждая проба копирует кэш внимания.
  • 200 кандидатов не помещаются в один вызов, их обрабатывают порциями, и это занимает 15,8 с на запрос.
  • Объединение нескольких запросов в одном вызове не ускоряет работу: пропускная способность падает с 2,87 до 1,57 запроса в секунду.
  • Cross-encoder остаётся намного быстрее: 31–60 мс на запрос против примерно 410–420 мс у обученного Glance на B200.

Авторы предлагают общий блочный кэш без копий, который сделает память линейной и позволит перейти к контекстам порядка 128 тысяч токенов.

Кому это пригодится

Главный выигрыш Glance даёт в памяти. Если на сервере уже стоит большая модель для ответов, второй реранкер можно не держать, а переключать адаптеры по запросу. Выходы при этом совпадают с теми, что выдаёт каждая модель, загруженная отдельно. Для систем, где важнее задержка в десятки миллисекунд, специализированный cross-encoder остаётся выгоднее. Если же нужно ранжировать сотни кандидатов или выбирать контекст, который генератор действительно использует, подход стоит попробовать. Адаптеры и код лежат на Hugging Face в репозитории airun-ai/GlanceRAG-MiMo-9B-Reranker.

Сюжет

Вопросы и ответы по материалу

Что известно по теме: один прогон вместо двадцати?

Классический cross-encoder (например, bge-reranker-v2-m3) кодирует каждую пару «запрос — абзац» отдельно. Если кандидатов 20, получается 20 прогонов. Glance устроен иначе. Модель один раз читает все кандидаты и сохраняет внутренний кэш (prefill). От этого кэша ответвляются короткие пробы, примерно по 30 токенов: «Содержит ли абзац N информацию, отвечающую на запрос?» Пробы не видят друг друга, зато каждая видит все абзацы и может сравнивать их. Указательная голова превращает состояние модели на пробе в оценку релевантности. Текст при этом не генерируется. Также есть вариант

Что известно по теме: что показали замеры?

Оценивали по nDCG@10: чем выше нужные документы в первой десятке, тем ближе значение к 1. Реранкеры сортировали топ-20 от BM25 (классического текстового поиска). Без обучения на поисковых данных адаптер на SciFact (научные утверждения) дал 0,715 против 0,729 у двадцати раздельных вызовов той же модели. При этом он был в 3,6 раза быстрее. У cross-encoder на SciFact 0,721. На NFCorpus (медицинские тексты) тот же режим дал 0,341 против 0,326 у cross-encoder. Авторы предполагают, что помогает сравнение абзацев между собой. После 39 минут обучения на MS MARCO (4000 запросов, одн

Что известно по теме: где метод упирается в потолок?

Главное преимущество проявляется на длинных списках кандидатов. Дообученный адаптер улучшается до 200 кандидатов (43,4 тыс. токенов): nDCG@10 равен 0,717 против 0,659 у cross-encoder на тех же 100 запросах SciFact. На 100 кандидатах разрыв 0,060, а время составляет 1,05 с на запрос. Необученный адаптер на больших размерах деградирует, а на 65 тыс. токенов качество падает до 0,505. Цена такая: Память растёт быстрее, чем длина контекста: от 15 до 56 ГиБ, потому что каждая проба копирует кэш внимания. 200 кандидатов не помещаются в один вызов, их обрабатывают порциями, и это з

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Практика · Hamidun Academy

Соберите рабочего ИИ-агента или сервис своими руками без ручного кода

В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.

Открыть 72ч бесплатный доступ →Интенсив по Вайб-кодингу
Что вы думаете?
Загружаем комментарии…