Окно контекста: почему модель помнит начало разговора, а потом забывает
Вы долго общаетесь с ботом, и вдруг он «теряет нить» — забывает, что вы обсуждали в начале. Это не баг и не склероз. У каждой модели есть жёсткий лимит на то, сколько текста она держит перед глазами. Он называется окном контекста.
У нейросети нет долгой памяти в человеческом смысле — есть только узкое окно, в которое одновременно влезает ограниченный кусок текста.
Окно контекста — это максимальное количество токенов, которое модель способна держать «перед глазами» за один раз. Всё, что не влезло, для неё перестаёт существовать.
Модель живёт только настоящим
Важно понять одну неинтуитивную вещь: между двумя вашими сообщениями модель ничего не помнит. Она не хранит историю где-то у себя. Каждый раз, когда вы пишете в чат, программа-обёртка склеивает заново всю переписку целиком и подаёт её модели как единый текст. Модель прочитывает это, отвечает — и тут же всё забывает. Иллюзия «памяти» создаётся тем, что историю ей пересылают снова и снова.
А раз весь диалог каждый раз подаётся как один текст, у него есть предел длины. Этот предел и есть окно контекста.
Что считается в окно
В окно помещается не только то, что напечатали вы. Туда входит:
- скрытая системная инструкция («ты вежливый ассистент…»), которую вы не видите;
- вся предыдущая переписка — и ваши реплики, и ответы бота;
- ваше новое сообщение;
- место, зарезервированное под будущий ответ.
Всё это меряется в токенах — тех самых кусочках текста. Когда сумма подбирается к пределу окна, надо что-то выбрасывать. И выбрасывают обычно самое старое — начало разговора. Вот почему бот «забывает», с чего вы начинали: эти токены просто вытолкнули из окна, чтобы влезло новое.
Аналогия с письменным столом
Представьте стол ограниченного размера. Вы раскладываете на нём бумаги — это контекст. Пока места хватает, всё перед глазами. Но стол не резиновый: чтобы положить новый лист, приходится убирать самый дальний старый. Модель работает так же — у неё есть стол фиксированной площади, и более ёмкое окно означает просто стол побольше.
Размеры окон растут
Несколько лет назад типичное окно было в пару тысяч токенов — пара страниц текста. Сегодня встречаются окна в сотни тысяч и даже миллионы токенов: туда влезает целая книга или большой проект кода. Но окно не бывает бесконечным, и за этим стоит суровая причина.
Внимание устроено так, что каждое слово сравнивается с каждым. Удвоили длину текста — и число пар сравнений выросло вчетверо. Расходы памяти и вычислений растут не линейно, а гораздо быстрее. Поэтому гигантские окна дороги, и инженеры идут на специальные ухищрения, чтобы их вообще потянуть.
| Окно (токенов) | Примерно это |
| 4 000 | несколько страниц |
| 128 000 | небольшая книга |
| 1 000 000 | толстый том или крупный репозиторий |
Как с этим жить
Зная про окно, легко избегать разочарований. В долгом диалоге не надейтесь, что бот вечно помнит давние детали — важное повторяйте или собирайте в краткое резюме. Длинный документ, который заведомо не влезает целиком, разбивайте на части. А если в начале сессии вы задали важные правила, не удивляйтесь, что через сотню сообщений они выветрились: их вытеснили из окна.
Запомните: «память» модели — это не сундук с воспоминаниями, а узкое окно, через которое она видит ограниченный кусок текста прямо сейчас. Всё, что не попало в окно, для неё попросту не существует.