- BrainTools - https://www.braintools.ru -

Что такое контекстное окно и почему модели забывают

Ты час разговариваешь с ChatGPT. Даёшь контекст, объясняешь задачу, уточняешь детали. А потом модель вдруг начинает противоречить тому, что говорила раньше. Забывает [1] имя персонажа которое ты указал в самом начале. Спрашивает то, о чём вы уже договорились.

Первая реакция [2] – что-то сломалось. Но это не баг. Это фундаментальное ограничение архитектуры, у которого есть название и объяснение.

Модель не помнит – она читает

Главное заблуждение про языковые модели – что у них есть память [3]. Что где-то внутри хранится история ваших разговоров, и модель к ней обращается.

Это не так.

Каждый раз когда ты отправляешь сообщение, модель получает один большой кусок текста – весь диалог с самого начала до твоей последней фразы. Она читает его целиком, с нуля, как будто видит впервые. Никакой памяти между запросами нет. Есть только этот текст.

Контекстное окно – это максимальный размер такого куска. Всё что влезло – модель видит. Всё что не влезло – для неё не существует. Совсем.

Хорошая аналогия: представь человека с очень избирательной амнезией. Он блестяще анализирует любой текст который ты кладёшь перед ним на стол. Но стол ограничен по размеру. Как только новые листы начинают вытеснять старые – старые падают на пол и человек их больше не видит. И не знает что они вообще были.

Токены: как измеряется контекст

Размер контекстного окна измеряется не в словах и не в символах – в токенах. Токен это примерно четыре символа в английском тексте, чуть больше в русском. Одно обычное слово – один-два токена. Редкое слово или имя собственное – может быть три и больше.

На практике это выглядит так. Одна страница текста – примерно 500 токенов. Средний роман – около 100 тысяч токенов. Один типичный запрос с небольшим контекстом – несколько сотен токенов.

Теперь цифры по моделям. Ранние версии GPT-3 работали с окном в 4 тысячи токенов – примерно восемь страниц текста. GPT-4 расширил это до 8-32 тысяч в зависимости от версии. Claude работает с окнами до 200 тысяч токенов. Gemini заявляет миллион.

Кажется что миллион токенов решает проблему навсегда. Но это не совсем так – и вот почему.

Потеря в середине: модель видит но не замечает

Вот где начинается самое интересное. Исследователи обнаружили эффект который назвали «lost in the middle» – потеря в середине.

Даже когда весь диалог технически влезает в контекстное окно – модель обрабатывает его неравномерно. Информация из начала и конца запроса воспроизводится значительно лучше чем из середины. Середина размывается.

Почему так происходит – вопрос к механизму внимания [4]. Модель вычисляет насколько каждый токен важен для текущего предсказания. Токены из начала и конца получают больше внимания – возможно потому что начало задаёт общий контекст задачи, а конец – самый свежий запрос. Середина оказывается в слепой зоне.

Практическое следствие: если ты дал важную инструкцию в середине длинного диалога – не рассчитывай что модель её хорошо помнит. Даже если формально она в окне. Клади важное в начало или повторяй перед финальным запросом.

Что происходит когда контекст заканчивается

Разные модели ведут себя по-разному когда диалог вырастает за пределы окна.

Самый распространённый сценарий – тихое обрезание. Модель просто перестаёт видеть самые старые сообщения. Никакого предупреждения. Ты думаешь что она помнит контекст из начала разговора – она его уже не видит. Это источник большинства ситуаций «модель внезапно забыла».

Второй вариант – деградация качества. Модель формально видит весь контекст но начинает путаться, противоречить себе, давать менее точные ответы. Это признак что окно переполнено или близко к пределу.

Третий – честное сообщение об ошибке [5]. Редко, но бывает: модель прямо говорит что контекст слишком длинный. Это самый честный вариант, хотя и самый редкий.

Как работать с контекстом грамотно

Понимание проблемы сразу даёт несколько практических решений.

Важное – в начало или в конец. Если есть ключевые инструкции или ограничения – размести их либо в самом начале системного промпта, либо повторяй перед финальным запросом. Середина – слепая зона.

Начинай новый чат при смене темы. Длинный диалог по одной теме а потом резкий поворот – плохая идея. Контекст будет тянуть модель к старой теме. Новая задача – новый чат.

Резюмируй длинные диалоги сам. Если разговор затягивается – попроси модель сделать краткое резюме договорённостей, скопируй его и начни новый чат с этим резюме в начале. Это эффективнее чем тянуть бесконечный диалог.

Не доверяй деталям из середины. Если ты упомянул что-то важное двадцать сообщений назад – повтори. Не потому что модель глупая, а потому что архитектура.

Проще всего почувствовать это на практике – провести длинный диалог и посмотреть в какой момент модель начинает терять нить.

В этом бесплатном Telegram-боте [6] собраны топовые ИИ-модели бесплатно – можно переключаться между ними и сравнивать как разные модели справляются с длинным контекстом. Интересно посмотреть где у каждой начинается деградация.

Куда движется индустрия

Большие контекстные окна – очевидный путь. Gemini с миллионом токенов это впечатляет. Но исследования показывают: качество работы с длинным контекстом падает задолго до его формального предела. Миллион токенов в окне не означает что модель одинаково хорошо работает с информацией из любой точки этого миллиона.

Альтернативный подход – RAG, retrieval augmented generation. Вместо того чтобы пихать всё в контекст – хранить информацию во внешней базе и подтягивать только нужное прямо перед запросом. Модель получает маленький но точный кусок контекста вместо огромного и размытого. Именно так работают корпоративные ИИ-системы которые умеют «помнить» тысячи документов.

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

Итог

Контекстное окно – не память. Это рабочий стол.

Всё что лежит на столе – модель видит и анализирует. Всё что упало со стола – не существует. При этом краям стола модель уделяет больше внимания чем середине.

Понимаешь это – сразу начинаешь использовать модели в разы эффективнее. Кладёшь важное туда где его заметят. Не ждёшь что модель сама вспомнит детали из давнего сообщения. Начинаешь новый чат вовремя.

Инструмент не стал умнее – просто ты научился им пользоваться.

Автор: Lordneo

Источник [7]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/31652

URLs in this post:

[1] Забывает: http://www.braintools.ru/article/333

[2] реакция: http://www.braintools.ru/article/1549

[3] память: http://www.braintools.ru/article/4140

[4] внимания: http://www.braintools.ru/article/7595

[5] ошибке: http://www.braintools.ru/article/4192

[6] этом бесплатном Telegram-боте: https://t.me/ChatGPTAIAssistantBot

[7] Источник: https://habr.com/ru/articles/1046916/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1046916

www.BrainTools.ru

Rambler's Top100