
WTF этот размер контекстного окна, и как он нам помогает или вредит?
Обычно при работе с современными моделями LLM (языковые нейросети, типа Чата GPT) я с такой проблемой не сталкивался. А вот поди ж ты, вчера столкнулся, когда мне явно не хватило токенов.
Давайте коротко, не на птичьем, а на человечном, что это такое.
Нейронка может держать в памяти строго ограниченный набор данных контекста, по которым она строит свою выдачу. Этот набор включает в себя как входящие промпты и файлы, так и выдачу. То есть, вы не можете загрузить в него Большую Советскую Энциклопедию, и заставить нейронку давать ответ из нее.
Теперь о том, кто такие токены и как их посчитать.
Нейросеть считает размер контекстного окна (сколько данных она может переварить) не в буквах или словах, а в токенах. Не заморачивайтесь, как это переводится, просто примите как факт, что в среднем на английском языке 1 токен это примерно 3,5 символа (буквы, цифры и знаки препинания, включая пробелы), а на русском около 2,5 символа. Ну да, на русском меньше, так устроена наша грамматика и так с ней взаимодействует нейросеть. То есть, если у нейросети контекстное окно 32к (то есть 32000 токенов), то можно посчитать, что на русском языке весь диалог с нейросетью, включай промпты, загруженные файлы и выдача должны уложиться в примерно 80000 символов. На писательском это ровно 2 авторских листа. Это не много, обычно одна глава книги это 10-20 тысяч символов. Это если в понятных величинах.
Что будет, если превысить этот размер?
Нейросеть просто начнет тупить, терять контекст, соскакивать с темы. Нет, она это может делать и без превышения размера контекста, но тут она будет делать это гарантированно. И на попытки ей указать, мол что за фигня, посмотрит на тебя честными электрическими глазами и сказал что сам дурак. Именно с этим я вчера и столкнулся. Какой же размер контекстного окна имеют современные нейросети? Самая популярная модель от Open AI, 4o имеет размер контекстного окна 128к. Такой же размер у модели o1. Claude 3,5 имеет размер в 200к, а чемпионом является модель от Гугла Gemini, у нее аж миллион токенов! Это реально много.
Но не все так однозначно, как говорится.
Вчера я загружал файл, размером в токенах менее 100к в Чат GPT, и он так и не смог прочитать его более чем на 60%. Зато Mistral, у которого вроде как всего 8К, прочитал столько же. А когда я разбил файл на две части, по кускам он прочитал ВСЕ! Я понял это по запросам, контекста он не потерял. Загадка…
Нафига нам все это надо знать, и как с этим бороться?
Допустим, вам надо проанализировать большие объемы данных, размеры которых явно больше контекстного окна той или иной нейросети. Отчеты, результаты рекламной кампании, книги, учебники, курсовики, да мало ли что. Что делать? Разбиваем файл на куски, на задачи и подзадачи. Делаем анализ и создаем некие выводы, выжимки, саммари, по которым можем работать дальше. Так поступаем с каждым отдельным куском, а потом объединяем их в единый анализ. Это если работаете с большими объемами данных. Но обычно 128 вполне хватает.
Полезно? Лайк, подписка, комментарий, все дела. Спасибо
