Умный, но беспамятный
Представьте собеседника с феноменальной эрудицией: он без запинки оперирует тысячами фактов, легко разбирается в сложных темах и отвечает развёрнуто и точно. Но есть одна странность — он совершенно не способен ничего запомнить.
Каждый новый диалог для него начинается с нуля. Вы задаёте вводные, что-то уточняете, задаёте вопросы — и получаете ответ. Но стоит задать следующий вопрос, как собеседник напрочь забывает всё, о чём шла речь. Чтобы отвечать хоть сколько-нибудь связно, ему приходится каждый раз перечитывать весь диалог с самого начала.
Архитектура без памяти
Звучит странно? Возможно. Однако именно так устроено большинство современных LLM. Постоянной памяти — ни сессионной, ни долгосрочной — у них нет. Каждый раз перед формированием ответа модель заново обрабатывает весь накопленный контекст: от первой реплики до последней.
Это не баг и не недоработка, а особенность архитектуры. Модель получает на вход весь текущий контекст и на его основе генерирует следующий ответ. Когда контекст обрывается — обрываются и «воспоминания».
Чем компенсируют разработчики
Осознавая это ограничение, разработчики добавляют поверх базовых моделей различные обвязки и ухищрения: суммаризацию диалога, векторные базы знаний (RAG — retrieval-augmented generation, метод подгрузки релевантных данных по запросу), механизмы сжатия истории переписки. Всё это создаёт для рядового пользователя иллюзию непрерывной памяти, однако заметно усложняет логику приложения.
Контекстное окно
Чтобы лучше понять, что происходит под капотом, стоит познакомиться с ключевым понятием — контекстным окном. Именно оно определяет, сколько текста модель способна удержать одновременно и насколько далеко в историю диалога она заглядывает, формируя каждый следующий ответ. Давайте разберём эту механику подробнее.