Контекстное окно — предельное число токенов, которые модель может обработать за один запрос. Формулировка «сколько модель помнит» здесь неточна и вводит в заблуждение: это не память, а размер стола, на который перед каждым ответом заново выкладывают все бумаги. После ответа стол убирают.
#Что лежит на этом столе
В окно входит не только ваш вопрос. Порядок примерно такой:
- Системный промпт — инструкция о характере и правилах, от полусотни до нескольких тысяч токенов.
- Подмешанная память и найденные документы — у ассистента с поиском по архиву это часто самая крупная доля.
- История диалога — все предыдущие реплики, ваши и модели, целиком, заново при каждом обращении.
- Ваш новый вопрос.
- Место под ответ — генерируемые токены занимают то же окно.
Последний пункт объясняет неочевидный симптом: вы задаёте вопрос, помещаетесь в лимит, а модель обрывает ответ на полуслове. Места хватило на вход, но не осталось на выход. У локальных движков это регулируется отдельным параметром длины генерации, у облачных — полем max_tokens.
| Составляющая | Растёт от чего | Чем ограничить |
|---|---|---|
| Системный промпт | ваших правок | держать короче, вынести редкое в навык |
| Память и документы | размера архива | ограничить число подмешиваемых фрагментов |
| История диалога | длины разговора | суммаризация, новый чат под новую тему |
| Ответ | задачи | явный лимит длины |
Вывод из таблицы: из четырёх строк вы почти всегда управляете двумя средними, и именно там прячется переполнение. Диалог на сорок реплик расходует окно не потому, что модель что-то накопила, а потому, что все сорок реплик отправляются заново.
#Где путают
Заблуждение первое: контекст — это память ассистента. Нет. Окно очищается после каждого запроса, а ощущение памяти создаётся тем, что клиент заново отправляет всю историю. Настоящая память — это отдельное хранилище с поиском, из которого нужные куски подкладываются в окно перед ответом. Если такого хранилища нет, всё, что вышло за пределы окна, потеряно окончательно.
Заблуждение второе: заявленное окно и рабочее окно — одно и то же. Модель с окном в миллион токенов физически принимает миллион, но качество работы с серединой такого объёма падает; отдельно разобрано в тексте про реальный и заявленный контекст.
Заблуждение третье: если модель поддерживает 128k, значит, у вас 128k. Локальный движок поднимает окно на значение из настроек, а не на максимум модели: в Ollama это num_ctx, в llama.cpp — -c. Значение по умолчанию обычно заметно меньше паспортного, и увеличение окна съедает видеопамять под KV-кэш. У облачных провайдеров работает встречное ограничение — их собственные лимиты на запрос, сведённые в обзоре лимитов контекста у провайдеров.
#Частые вопросы
#Что происходит, когда контекст переполняется?
Зависит от клиента. Одни обрезают самые старые сообщения и продолжают молча, другие возвращают ошибку, третьи сворачивают начало диалога в краткий пересказ. Худший вариант — первый: модель перестаёт помнить начало разговора, а вы об этом не узнаёте.
#Стоит ли выставлять максимальное окно, раз модель его поддерживает?
Только если это нужно задаче. Окно оплачивается видеопамятью под KV-кэш и временем обработки промпта: удвоение контекста удорожает не пропорционально, а сильнее. Практические пороги — в разборе контекста и VRAM под KV-кэш.
#Считается ли ответ модели в контекст следующего вопроса?
Да. Ответ становится частью истории и отправляется обратно вместе со следующей репликой. Поэтому длинные развёрнутые ответы расходуют окно вдвойне: сначала при генерации, затем при каждом последующем обращении.
#Миллион токенов контекста решает проблему памяти?
Не решает — меняет её характер. Что даёт и чего не даёт сверхдлинное окно, подробно разобрано в статье про контекстное окно на миллион токенов. Коротко: длинное окно дорого по времени и деньгам и не заменяет поиск по архиву.
Из чего состоит единица измерения окна — в справке про токен. Остальные термины — в глоссарии терминов ИИ.