Ты час разговариваешь с ChatGPT. Даёшь контекст, объясняешь задачу, уточняешь детали. А потом модель вдруг начинает противоречить тому, что говорила раньше. Забывает имя персонажа которое ты указал в самом начале. Спрашивает то, о чём вы уже договорились.
Первая реакция — что-то сломалось. Но это не баг. Это фундаментальное ограничение архитектуры, у которого есть название и объяснение.
Модель не помнит — она читает
Главное заблуждение про языковые модели — что у них есть память. Что где-то внутри хранится история ваших разговоров, и модель к ней обращается.
Это не так.
Каждый раз когда ты отправляешь сообщение, модель получает один большой кусок текста — весь диалог с самого начала до твоей последней фразы. Она читает его целиком, с нуля, как будто видит впервые. Никакой памяти между запросами нет. Есть только этот текст.
Контекстное окно — это максимальный размер такого куска. Всё что влезло — модель видит. Всё что не влезло — для неё не существует. Совсем.
Хорошая аналогия: представь человека с очень избирательной амнезией. Он блестяще анализирует любой текст который ты кладёшь перед ним на стол. Но стол ограничен по размеру. Как только новые листы начинают вытеснять старые — старые падают на пол и человек их больше не видит. И не знает что они вообще были.
Токены: как измеряется контекст
Размер контекстного окна измеряется не в словах и не в символах — в токенах. Токен это примерно четыре символа в английском тексте, чуть больше в русском. Одно обычное слово — один-два токена. Редкое слово или имя собственное — может быть три и больше.
На практике это выглядит так. Одна страница текста — примерно 500 токенов. Средний роман — около 100 тысяч токенов. Один типичный запрос с небольшим контекстом — несколько сотен токенов.
Теперь цифры по моделям. Ранние версии GPT-3 работали с окном в 4 тысячи токенов — примерно восемь страниц текста. GPT-4 расширил это до 8-32 тысяч в зависимости от версии. Claude работает с окнами до 200 тысяч токенов. Gemini заявляет миллион.
Кажется что миллион токенов решает проблему навсегда. Но это не совсем так — и вот почему.
Потеря в середине: модель видит но не замечает
Вот где начинается самое интересное. Исследователи обнаружили эффект который назвали «lost in the middle» — потеря в середине.
Даже когда весь диалог технически влезает в контекстное окно — модель обрабатывает его неравномерно. Информация из начала и конца запроса воспроизводится значительно лучше чем из середины. Середина размывается.
Почему так происходит — вопрос к механизму внимания. Модель вычисляет насколько каждый токен важен для текущего предсказания. Токены из начала и конца получают больше внимания — возможно потому что начало задаёт общий контекст задачи, а конец — самый свежий запрос. Середина оказывается в слепой зоне.
Практическое следствие: если ты дал важную инструкцию в середине длинного диалога — не рассчитывай что модель её хорошо помнит. Даже если формально она в окне. Клади важное в начало или повторяй перед финальным запросом.
Что происходит когда контекст заканчивается
Разные модели ведут себя по-разному когда диалог вырастает за пределы окна.
Самый распространённый сценарий — тихое обрезание. Модель просто перестаёт видеть самые старые сообщения. Никакого предупреждения. Ты думаешь что она помнит контекст из начала разговора — она его уже не видит. Это источник большинства ситуаций «модель внезапно забыла».
Второй вариант — деградация качества. Модель формально видит весь контекст но начинает путаться, противоречить себе, давать менее точные ответы. Это признак что окно переполнено или близко к пределу.
Третий — честное сообщение об ошибке. Редко, но бывает: модель прямо говорит что контекст слишком длинный. Это самый честный вариант, хотя и самый редкий.
Как работать с контекстом грамотно
Понимание проблемы сразу даёт несколько практических решений.
Важное — в начало или в конец. Если есть ключевые инструкции или ограничения — размести их либо в самом начале системного промпта, либо повторяй перед финальным запросом. Середина — слепая зона.
Начинай новый чат при смене темы. Длинный диалог по одной теме а потом резкий поворот — плохая идея. Контекст будет тянуть модель к старой теме. Новая задача — новый чат.
Резюмируй длинные диалоги сам. Если разговор затягивается — попроси модель сделать краткое резюме договорённостей, скопируй его и начни новый чат с этим резюме в начале. Это эффективнее чем тянуть бесконечный диалог.
Не доверяй деталям из середины. Если ты упомянул что-то важное двадцать сообщений назад — повтори. Не потому что модель глупая, а потому что архитектура.
Проще всего почувствовать это на практике — провести длинный диалог и посмотреть в какой момент модель начинает терять нить.
В этом бесплатном Telegram-боте собраны топовые ИИ-модели бесплатно — можно переключаться между ними и сравнивать как разные модели справляются с длинным контекстом. Интересно посмотреть где у каждой начинается деградация.
Куда движется индустрия
Большие контекстные окна — очевидный путь. Gemini с миллионом токенов это впечатляет. Но исследования показывают: качество работы с длинным контекстом падает задолго до его формального предела. Миллион токенов в окне не означает что модель одинаково хорошо работает с информацией из любой точки этого миллиона.
Альтернативный подход — RAG, retrieval augmented generation. Вместо того чтобы пихать всё в контекст — хранить информацию во внешней базе и подтягивать только нужное прямо перед запросом. Модель получает маленький но точный кусок контекста вместо огромного и размытого. Именно так работают корпоративные ИИ-системы которые умеют «помнить» тысячи документов.
Скорее всего будущее за комбинацией обоих подходов — большое окно плюс умный поиск по внешней памяти.
Итог
Контекстное окно — не память. Это рабочий стол.
Всё что лежит на столе — модель видит и анализирует. Всё что упало со стола — не существует. При этом краям стола модель уделяет больше внимания чем середине.
Понимаешь это — сразу начинаешь использовать модели в разы эффективнее. Кладёшь важное туда где его заметят. Не ждёшь что модель сама вспомнит детали из давнего сообщения. Начинаешь новый чат вовремя.
Инструмент не стал умнее — просто ты научился им пользоваться.
ссылка на оригинал статьи https://habr.com/ru/articles/1046916/