Объяснение явления смены контекста: почему длинные входные данные снижают точность больших языковых моделей.
Узнайте, как встраивание информации о положении элементов и функция softmax приводят к снижению точности при обработке длинных запросов, и какие привычки помогают сохранять эффективность контекста.
Если ввести длинный запрос в любую из моделей нового поколения, протестированных в 2025 году, качество ответа снижается, даже если информация, на которую вы спрашиваете, прямо указана в тексте. Исследование Chroma 2025 года, охватившее 18 таких моделей, показало, что точность при обработке фактов, находящихся в середине вводимого текста, снижается более чем на 30%. Причина этого не связана с каким-то нечетким понятием «временем внимания»; она заключается в способе, которым трансформеры кодируют положение токенов в тексте.
Люди называют это явление «порчей контекста», и оно отличается от ситуации, когда достигнут лимит контекста. Эксперимент Стэнфордского университета 2023 года показывает причину этого. Если предоставить модели 20 извлеченных документов, что соответствует примерно 4 000 токенам, это совсем немного по сравнению с современными лимитами. Если релевантный факт находится в первом месте, модель правильно его определяет в 70–75% случаев. Если переместить тот же факт в середину, точность снижается до 55–60%. Информация по-прежнему присутствует и остается верной; модель просто придает ей меньший вес.
Откуда берется ухудшение качества
Большинство трансформаторов текущего состояния используют Rotary Position Embeddings (RoPE) для обозначения порядка токенов. У RoPE наблюдается известное долгосрочное снижение эффективности: чем дальше друг от друга находятся два токена, тем ниже становится потолок для уровня внимания к одному из них (теоретически), независимо от их реального значения. Функция Softmax усугубляет ситуацию: она направляет внимание на токены, уже имеющие высокий балл, что способствует уделению основного внимания началу и концу контекста, что приводит к форме в виде буквы U, которую исследователи называют «потеря в середине».
Форму этого снижения можно увидеть в небольшом скрипте. Он построен исключительно на основе структуры частот RoPE, а не на весах какой-либо реальной модели, поэтому следует рассматривать его как иллюстрацию. Единственная библиотека, которая ему нужна, — это numpy:
import numpy as np
А вот функция, которая показывает, как сужается предел сходства по мере увеличения расстояния:
def rope_similarity_decay(distances, dim=64, base=10000):
freqs = 1.0 / (base ** (np.arange(0, dim, 2) / dim))
decays = []
for d in distances:
bound = np.mean(np.cos(freqs * d))
decays.append(bound)
return np.array(decays)
Если применять это к всё более большим расстояниям между токенами, получается следующее:
Token distance | Relative similarity bound
1 | 0.9662
10 | 0.6579
50 | 0.4898
100 | 0.5586
500 | 0.2006
1000 | 0.2789
5000 | -0.1309
10000 | 0.0494
50000 | -0.0898
Токены, находящиеся на расстоянии от 1 до 10 позиций друг от друга, сохраняют значение ограничения около 1,0. При разнице в несколько тысяч токенов это значение снижается до нуля, а в некоторых точках даже опускается ниже нуля; поэтому геометрия между сильно удалёнными токенами больше не позволяет с уверенностью утверждать, что «эти два связаны». Следует отметить, что это снижение также не происходит плавно — имеется спадающая кривая с реальными колебаниями внутри неё. Всё это не является критерием для оценки конкретной модели, но объясняет, почему проблема имеет структурный характер и не исчезает просто при обучении более крупной модели.
Большее окно не решает проблему
Исследователи теперь разделяют заявленное окно контекста и максимальное эффективное окно контекста (MECW) — длину, при которой производительность модели остается стабильной. Согласно исследованиям 2025 года, посвящённым этой проблеме, при сложных задачах эффективный лимит может быть на 99% ниже значения, указанного в технических характеристиках. Окно объёмом в миллион токенов означает, что модель не даст сбоев до достижения этого количества токенов; однако это ничего не говорит о том, использует ли она их все эффективно.
Почему агенты для программирования сталкиваются с наибольшими трудностями
Для агентов, занимающихся кодированием, проблема ухудшения контекста выделяется как основной способ сбоя; это скорее проблема «мусорного входа», чем недостаток возможностей. В ходе длительной задачи агент ищет решение, исследует варианты и возвращается назад, и каждый тупик оставляет «шум» в истории диалога. Этот шум ухудшает качество последующих действий, хотя та же модель смогла бы решить задачу без проблем, если бы имела чистый контекст. Таким образом, длительная сессия может провалиться, даже если у агента не закончились токены: инструкции из первого шага всё ещё присутствуют в разговоре на пятидесятом шаге, но внимание модели может уже не охватывать их.
Что помогает
RAG и длинные окна не являются взаимозаменяемыми. Метод извлечения информации эффективен благодаря возможности сокращения большого объема данных до релевантной части, поскольку попытка включить всё сразу приводит к вышеупомянутому ухудшению качества из-за позиционных факторов. Что касается решений после извлечения информации, все рекомендации сводятся к одному: сохраняйте рабочий контекст небольшим и чистым, а не большим и полным.
- Подводите итоги или удаляйте устаревшую историю разговоров.
- Размещайте то, от чего зависит решение, ближе к началу или концу запроса, но никогда не в середине.
- Помните, что утверждения «это подходит» и «модель использует это» — это две разные вещи.
Краткие ответы
Что такое ухудшение качества контекста? Снижение качества вывода по мере увеличения длины входных данных, даже когда окно не заполнено полностью и необходимая информация присутствует.
Почему средняя часть худшая? RoPE по замыслу ослабляет связь между удаленными токенами, а функция softmax затем сосредотачивает внимание на позициях, уже имеющих высокие оценки, что обычно бывает первыми и последними позициями.
Решит ли проблему более большой лимит? Нет. Реальный объем контекста часто значительно меньше заявленного, особенно при выполнении сложных многоэтапных задач.
Это просто не хватает места? Нет. Точность существенно снижается уже при нескольких тысячах токенов, что значительно меньше сотен тысяч токенов, которые способны обрабатывать современные модели.
Одно ограничение у приведенного выше кода: это упрощенная модель частот. Фактическое поведение зависит от обученных весов внимания, добавляемых к этой геометрической основе, поэтому основа объясняет лишь часть эффекта, а не всё.