Журнал · Rit.work

Cache2LoRA убирает длинный документ из контекста ответа

Cache2LoRA создаёт отдельное LoRA-обновление для каждого вопроса и ускоряет генерацию по длинным документам, но требует подготовительного прохода перед ответом.

Rit.work
Студия разработки
20 октября 2026 г.3 мин чтения

Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.

Языковую модель научили отвечать по длинному документу, не держа его текст в контексте во время генерации. В нерецензированном препринте Virginia Tech и Stanford все числа получили сами авторы: Cache2LoRA почти сравнялся с полным контекстом по качеству. Подход может ускорить сервисы, где много запросов обращаются к одним и тем же большим документам, но переносит часть затрат в подготовку памяти для каждого вопроса.

Почему записать документ в веса недостаточно

Методы класса context-to-LoRA превращают документ в низкоранговое обновление весов (LoRA). Модель применяет это небольшое обновление при ответе и не просматривает исходный текст на каждом шаге генерации.

Проблема прежних методов в том, что они записывают документ до появления вопроса. Им приходится заранее решать, какие сведения сохранить, хотя неизвестно, что понадобится пользователю. Когда в тексте есть несколько похожих фактов, нужный факт конкурирует с остальными.

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

Отдельный тест выявил вторую проблему. Даже сохранив правильный факт, прежний метод слабо реагировал на требование дать короткий ответ или объяснение. Запомнить содержание и выразить его в нужной форме оказалось двумя разными задачами.

Эксперименты с фиксированным размером обновления показали, что узкое место связано не только с объёмом памяти. Когда в генератор передавали состояния, лучше выделявшие нужный фрагмент, качество росло без увеличения LoRA. Поэтому Cache2LoRA использует вопрос уже во время записи.

Как вопрос превращает кэш документа в LoRA

Сначала фиксированная базовая модель один раз читает документ и сохраняет кэш состояний внимания. Для каждого нового вопроса отдельный кодировщик обрабатывает только сам вопрос и небольшой набор обучаемых токенов памяти, но может обращаться к сохранённому кэшу документа.

Полученные состояния превращаются в отдельное LoRA-обновление для этого вопроса. Модель ответа видит инструкцию и вопрос, а сведения из документа получает через изменённые веса. Исходный текст и служебные токены памяти в контекст генерации не входят.

Такое разделение позволяет повторно использовать дорогой проход по документу. Однако готовое LoRA-обновление привязано к конкретному вопросу: другой вопрос требует новой подготовки, хотя повторно читать весь документ кодировщику не приходится.

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

На 17 задачах Cache2LoRA получил макро-F1 0,663 против 0,671 у модели с полным документом в контексте. Макро-F1 здесь усредняет совпадение токенов ответа, давая каждой задаче одинаковый вес. Основное сравнение проводили на Qwen3-4B, дополнительные проверки — на Mistral и Gemma.

При одинаковом размере памяти Cache2LoRA превзошёл проверенные методы отбора состояний внимания по F1 и точному совпадению ответа. Некоторые из этих методов сохраняли больше слов из эталона, но хуже соблюдали требуемую форму — поэтому одной полноты для сравнения оказалось недостаточно.

Где кэш меняет архитектуру сервиса

На документе длиной 32K токенов, ответе в 256 токенов и пакете из 16 запросов скорость генерации оказалась в 5,9 раза выше, чем при полном контексте. Выигрыш появляется потому, что во время каждого шага ответа модель не пересчитывает внимание по всему документу.

Лучший сценарий для такой схемы — стабильный большой источник, к которому приходит много независимых запросов: база регламентов, техническая документация или набор материалов для аналитического сервиса. Документ можно прочитать заранее, хранить его кэш и строить компактную память под каждый вопрос.

Для единственного запроса к новому документу преимущество менее очевидно. Перед первым токеном Cache2LoRA всё равно формирует обновление, а стоимость этой подготовки растёт вместе с длиной источника. Замеры использовали кэш на GPU и не включали задержку переноса с CPU, поэтому инфраструктура хранения влияет на итоговую задержку.

Проверки охватывали индивидуальные вопросы к фиксированным документам. Многоходовые диалоги, обновление источника во время работы и объединение независимо созданной памяти из нескольких документов потребуют отдельной политики: сервису придётся решать, когда перестраивать кэш и LoRA.

Поэтому работа не предлагает прямую замену обычному поиску по документам. Она показывает другой компромисс: один раз сохранить вычислительное представление источника, перед каждым ответом собрать память под вопрос, а затем генерировать без длинного текста. Командам с повторными запросами к крупным неизменным документам имеет смысл заложить такой вариант в нагрузочное сравнение наряду с полным контекстом и отбором фрагментов.

Источники

Пауза в чтении

Похоже на вашу задачу?

Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.

Rit.work

Студия разработки

Собираем мобильные приложения и помогаем командам получать от AI реальную пользу. Основатель и команда, работаем удалённо — с клиентами в России и за рубежом.

← Ко всем материалам
Понравилось? Обсудим вашу задачу