GEO

Потеря в середине (Lost in the Middle)

"Потеря в середине" - это эмпирическое наблюдение, задокументированное Liu и соавторами в статье Stanford/Samaya AI 2023 года, согласно которому LLM работают лучше всего, когда ключевая информация находится в самом начале или самом конце длинного контекста, и заметно хуже, когда та же информация располагается в середине. Даже модели с окнами на 100 тыс.+ токенов по-прежнему демонстрируют эту U-образную кривую внимания.

"Потеря в середине" - это эмпирическое наблюдение, задокументированное Liu и соавторами в статье Stanford/Samaya AI 2023 года, согласно которому LLM работают лучше всего, когда ключевая информация находится в самом начале или самом конце длинного контекста, и заметно хуже, когда та же информация располагается в середине. Даже модели с окнами на 100 тыс.+ токенов по-прежнему демонстрируют эту U-образную кривую внимания.

Почему это важно

"Большое контекстное окно" - это не то же самое, что "читает всё одинаково". Модель с контекстом на 200 тыс. технически может проглотить целую книгу, но практическая точность на вопросе, ответ на который находится на странице 300 из 500-страничного PDF, гораздо ниже, чем у того же вопроса с ответом на странице 5 или странице 495. Для разработчиков это имеет конкретные последствия: то, как вы упорядочиваете контекст внутри промпта, кардинально меняет качество ответа, зачастую сильнее, чем то, сколько контекста вы предоставляете. Большинство продакшн-сбоев RAG, вызванных тем, что "модель проигнорировала извлечённый фрагмент", на самом деле являются замаскированными сбоями потери в середине.

Исходное наблюдение

В статье Liu и соавторов 2023 года "Lost in the Middle: How Language Models Use Long Contexts" тестировались GPT-3.5, GPT-4, Claude и несколько открытых моделей на задаче ответов на вопросы по множеству документов. Для каждого вопроса релевантный документ перемещался на позиции 1, 5, 10, 15, 20 из 20 документов в общей сложности. Результаты:

  • Точность была наивысшей, когда релевантный документ стоял первым (в начале контекста).
  • Точность была почти такой же высокой, когда он стоял последним (в конце).
  • Точность падала на 20-30 пунктов, когда релевантный документ располагался на средних позициях.

Форма напоминает букву U: сильно на обоих концах, слабо в середине. Последующие работы показали, что этот паттерн сохраняется в моделях Claude, Gemini и Llama даже по мере роста их контекстных окон.

Почему это происходит

Несколько гипотез, вероятно, все они отчасти верны:

Распределение обучающих данных: Обучающие данные склонны размещать важную информацию в началах (заголовки, тематические предложения) и концах (выводы, краткие итоги). Модель усваивает эти позиционные приоритеты.

Затухание внимания: Эффективный диапазон самовнимания деградирует на очень длинных последовательностях даже с такими техниками, как RoPE или ALiBi - удалённые средние токены получают меньшую массу внимания, чем близлежащие концы.

Ограничения позиционного кодирования: Модели с расширенным контекстом наследуют позиционные кодировки, настроенные на более короткие последовательности, поэтому средние позиции относительно недообучены.

Смещение к недавнему: Модели придают больший вес недавним токенам, что усиливает сильный конец, но не помогает середине.

Как проектировать с учётом этого

1. Размещайте самый важный контекст в начале или конце: Для RAG помещайте верхний по рейтингу извлечённый фрагмент в самое начало или самый конец блока контекста.

2. Переранжирование после извлечения: Используйте переранжировщик, чтобы отсортировать извлечённые фрагменты по релевантности, а затем поместите верхний на край.

3. Переупорядочивайте по релевантности, а не по порядку извлечения: Векторный поиск часто возвращает результаты в порядке расстояния; переупорядочьте так, чтобы наиболее релевантные оказались на позициях с высоким вниманием.

4. Суммируйте середину: Вместо того чтобы сбрасывать сырой средний контекст, суммируйте его и поместите резюме в начало. Сжатая середина сохраняется лучше, чем сырая.

5. Сокращайте контекст: U-кривая ухудшается с ростом длины. Меньшее число более релевантных фрагментов превосходит множество второстепенных.

6. Повторяйте критичные факты: Размещение одного и того же ключевого факта одновременно в начале и в конце эксплуатирует U-кривую, а не борется с ней.

7. Инструкция к задаче на обоих концах: Некоторым промптам помогает повторение вопроса в начале и в конце контекста, помещая доказательства между ними как в сэндвиче.

Актуально ли это всё ещё в 2026 году?

Более новые модели с длинным контекстом (Gemini 1.5 / 2.0, Claude 3.5+/4.x, GPT-4 Turbo и серия o) значительно улучшили извлечение из середины контекста. Тесты "иголка в стоге сена" на Gemini 2.0 показывают почти идеальное извлечение по всему окну. Но в реальных многофактовых задачах со сложными рассуждениями U-образная форма по-прежнему проявляется, просто менее драматично. Практический совет мало изменился: более короткий, хорошо упорядоченный контекст по-прежнему превосходит длинный, случайно упорядоченный контекст.

Распространённые ошибки

Предположение, что больше контекста = лучше ответы: Верно лишь до определённого момента; затем включается деградация середины.

Сброс извлечённых фрагментов в порядке векторного поиска: Векторное расстояние не равно позиционной важности.

Пропуск переранжирования: Извлечение + переранжирование эффективнее, чем более длинный контекст с наивным извлечением.

Отсутствие тестирования с иголками в реалистичных позициях: Игрушечные тесты "иголка в стоге сена" часто размещают иголку в равномерно случайных позициях, что скрывает U-кривую. Тестируйте на реалистичных сценариях использования.

Вера в маркетинг: "Контекст на 1 млн токенов" не означает, что модель обрабатывает все 1 млн токенов одинаково.

Источники: