Контекстное окно

Контекстное окно — максимальный объём текста в токенах, который языковая модель способна «удерживать в памяти» при генерации одного ответа. Всё, что не влезает в окно, модель не видит. Это ключевое техническое ограничение при проектировании длинных диалогов и RAG-систем.

Что такое токен

Токен — базовая единица, которой оперирует LLM. Один токен примерно соответствует 4 символам латиницы или 2–3 символам кириллицы. Слово «чат-бот» — это 2–3 токена. Одна страница A4 плотного текста — около 600–700 токенов. Контекстное окно измеряется в токенах и включает и входящий текст (промпт + история диалога), и генерируемый ответ.

Лимиты контекстного окна у разных моделей

GPT-4o — 128 000 токенов (около 200 страниц A4). Claude 3.5 Sonnet — 200 000 токенов. YandexGPT Pro — 32 000 токенов. GigaChat Max — 32 000 токенов. Для большинства диалоговых ботов достаточно 8 000–16 000 токенов: это покрывает 30–50 сообщений в одной сессии плюс системный промпт плюс RAG-контекст.

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

Управление памятью диалога

Есть три стратегии: (1) Скользящее окно — передавать только последние N сообщений. Просто, но модель забывает данные, названные в начале. (2) Суммаризация — при приближении к лимиту сжимать старую часть диалога в краткое резюме. Требует дополнительного вызова LLM. (3) Persistent memory — хранить ключевые факты о пользователе в отдельной базе и подгружать их в контекст. Лучший баланс памяти и стоимости.

Связанные термины

  • LLM — модель с конкретным лимитом контекстного окна
  • RAG — как документы вставляются в контекстное окно
  • Промпт-инжиниринг — как системный промпт занимает часть окна
  • Чат-бот — управление историей диалога в рамках окна

Хотите оптимизировать работу бота с памятью диалога? Обсудим задачу.

Связаться с нами