контекстное окно модели

Контекстное окно модели (context window, context length) — максимальное количество токенов, которые языковая модель может обработать одновременно в рамках одного запроса. Это ограничение определяет, сколько текста модель «видит» при генерации ответа: как вопрос пользователя, так и вся история диалога, системный промпт и вспомогательный контекст должны уместиться в этом окне.

Почему контекстное окно ограничено

Механизм само-внимания в трансформере требует вычисления матрицы внимания размером N×N, где N — длина последовательности. Сложность O(N²) означает: удвоение контекста = четырёхкратный рост вычислений и памяти. KV-кеш хранит векторы Key и Value для каждого токена в контексте — его размер линеен по N, но при больших N занимает значительную долю VRAM.

Эволюция размера контекстного окна

GPT-2 (2019) — 1024 токена. GPT-3 — 4096. GPT-4 — 8k / 128k. Claude 3 — 200k токенов. Gemini 1.5 Pro — 1 млн, с экспериментальной поддержкой до 2 млн. LLaMA 2 — 4096; LLaMA 3.1 — 128k. Прогресс огромный, но увеличение контекста само по себе не решает проблему «потери в середине».

Проблема «Lost in the Middle»

Исследования показывают: LLM лучше используют информацию из начала и конца контекста, игнорируя середину при длинных контекстах. При 100k-токенном контексте ключевые данные в середине документа с высокой вероятностью будут проигнорированы. Это означает, что длинный контекст — не панацея, и структура расположения информации имеет значение.

Позиционные кодировки и длинный контекст

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

  • RoPE (Rotary Position Embedding) — позиционные кодировки через вращение векторов. Масштабируется через RoPE scaling (YaRN, NTK-aware) для работы с контекстами, превышающими обучающие.
  • ALiBi (Attention with Linear Biases) — штраф за расстояние добавляется к логитам внимания. Экстраполирует без дополнительного обучения.
  • LongRoPE, LongLoRA — методы расширения контекста через fine-tuning с модифицированными кодировками.

Техники работы с длинным контекстом

RAG вместо длинного контекста

Для большинства задач эффективнее хранить информацию во внешней базе и извлекать релевантные фрагменты. Это обходит квадратичную сложность и проблему Lost in the Middle.

Sliding window attention

Каждый токен «видит» только ближайшие k токенов вместо всех. Mistral 7B использует этот подход с rolling buffer KV-cache. Сложность снижается до O(N·k).

Chunk-based обработка

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

Практические последствия для пользователей

Стоимость API: инференс с длинным контекстом стоит дороже — каждый токен в контексте увеличивает объём вычислений. Latency: TTFT растёт с длиной контекста. Конфиденциальность: весь контекст (включая историю диалога и системный промпт) передаётся провайдеру. Практические рекомендации: помещайте критически важную информацию в начало или конец промпта, используйте RAG для больших документов, очищайте историю диалога при смене темы.

Будущее контекстных окон

State Space Models (Mamba) обрабатывают произвольно длинные последовательности с линейной сложностью, но пока уступают трансформерам в качестве. Гибридные архитектуры (Jamba, Zamba) сочетают SSM и трансформерные блоки. Специализированные механизмы памяти (MemGPT, архивная память агентов) эмулируют неограниченный контекст через управление информацией вне основного окна.

Частые вопросы

  • Сколько токенов в одной странице текста?

    Примерно 500–700 токенов для английского текста (стандартная страница A4 с нормальным шрифтом). Для русского — 700–1000 токенов той же страницы из-за менее эффективной токенизации. Контекст 128k токенов вмещает около 180–250 страниц английского текста или книгу среднего объёма.

  • Зачем нужен длинный контекст, если есть RAG?

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

  • Что происходит, если запрос превышает контекстное окно?

    Поведение зависит от API: большинство провайдеров вернут ошибку (context length exceeded). Некоторые реализации автоматически обрезают старые части диалога. Приложения обязаны сами управлять длиной контекста: суммаризировать историю, удалять неактуальные сообщения, разбивать длинные документы на части.

Не хватает деталей?

Напишите, что уточнить по теме «контекстное окно модели» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).

Поделиться