Почему длинные контексты снижают точность LLM и как это исправить
Habr AI · оригинал
Материал подготовлен автоматизированной редакционной системой. Факты можно сверить по указанному первоисточнику.

Исследование показывает, что увеличение контекстного окна до 2 млн токенов не решает проблему потери деталей в середине документа. Использование локальной модели-фильтра позволяет повысить точность ответов с 34% до 68% и сократить расходы на 8 раз.
Ценность: Статья предлагает практическое решение распространенной проблемы в разработке AI-систем: деградации качества ответов при работе с большими объемами данных. Описанный подход позволяет оптимизировать затраты и повысить надежность систем, основанных на RAG.
Расширение контекстного окна языковых моделей до сотен тысяч или миллионов токенов часто воспринимается как окончательное решение проблемы работы с большими документами. Однако, как отмечает независимый эксперт Андрей Бирюков, в реальности возникает эффект деградации внимания: модель хорошо усваивает начало и конец текста, но теряет детали в середине. Это приводит к тому, что даже при наличии огромного контекста ответы на специфические вопросы могут быть менее точными, чем у моделей с ограниченным окном, если информация находится в «слепой зоне» внимания.
Для проверки этого явления был проведен эксперимент на датасете из 500 страниц технической документации. При использовании стратегии Full-Context (подача всего текста в GPT-4o) точность ответов составила лишь 34%, при этом время ожидания первого токена достигало 14 секунд. Модель также демонстрировала галлюцинации, комбинируя данные из разных частей документа. Альтернативный подход — Naive RAG с векторным поиском топ-5 чанков — показал точность 42% и скорость ответа 1.1 секунды, но страдал от потери контекста между фрагментами.
Автор рассматривает и другие популярные методы, такие как RAPTOR (рекурсивная суммаризация) и Self-Refine (итеративное уточнение). RAPTOR эффективен для общих обзоров, но разрушает точность фактов из-за усреднения. Self-Refine требует множества запросов к дорогой модели, что делает его экономически нецелесообразным при больших объемах трафика. Увеличение размера чанков также не решает проблему, так как модель начинает терять детали внутри каждого отдельного фрагмента.
Предложенное решение — архитектура «Семантического привратника». В ней роль дешевого фильтра выполняет локальная модель Mistral-7B-Instruct в 4-битной квантизации. Алгоритм работает следующим образом: сначала выполняется грубый векторный поиск, извлекающий 50 потенциально релевантных чанков. Затем каждый чанк прогоняется через Mistral-7B с задачей оценки релевантности (от 0 до 1) и извлечения трех ключевых фактов в формате JSON.
Далее применяется буфер динамического приоритета: чанки с оценкой ниже 0.6 отбрасываются, а оставшиеся сортируются по убыванию важности. Из топ-10 формируется сжатый контекст из извлеченных фактов (около 2000 токенов), который помещается в начало промпта для основной LLM. Самый релевантный чанк дублируется целиком в конец промпта. Такая структура позволяет обойти проблему «забывания середины», так как ключевая информация оказывается в зонах высокой концентрации внимания модели — в начале и в конце.
Для инференса Mistral-7B используется фреймворк vLLM, обеспечивающий высокую скорость и низкое потребление памяти. В результате тестирования на 1000 запросов из реальной техподдержки новый пайплайн показал точность 68%, что вдвое выше показателя Full-Context. Время обработки составило 2.4 секунды на этапе фильтрации, но общая стоимость запроса снизилась с $180 до $22 благодаря сокращению объема данных, передаваемых дорогой модели. Экономия в 8 раз делает этот подход привлекательным для масштабных производственных систем.