контекстное окно модели
Контекстное окно модели (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 необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).