Память AI-агентов: краткосрочная и долгосрочная на практике
Агенты забывают всё, что не поместилось в контекстное окно. Разбираем, чем отличается краткосрочная память от долгосрочной, как её строят через RAG и векторные базы и сколько это стоит.

Когда вы задаёте ChatGPT вопрос, а через десять сообщений он теряет нить разговора — это не баг, а прямое следствие того, как устроена память языковых моделей. Модель сама по себе не помнит ничего: каждый запрос она обрабатывает заново, а всё, что нужно «помнить», приходится каждый раз заново класть ей в контекстное окно. У AI-агентов, которые выполняют многошаговые задачи и работают часами, проблема стоит острее: без внешней памяти агент забывает результат первого шага к третьему. Разберём, из чего складывается память агента, чем краткосрочная отличается от долгосрочной и во что это обходится по токенам и деньгам.
Почему у модели нет памяти по умолчанию
Трансформерная модель — это функция без состояния. Она получает на вход последовательность токенов и предсказывает следующий. Между двумя вызовами она не хранит ничего: если вы не передали историю переписки в запросе, для модели её не существует.
Иллюзию памяти в чат-интерфейсах создаёт обёртка вокруг модели. Каждый раз, когда вы пишете новое сообщение, приложение склеивает всю предыдущую переписку и отправляет её целиком. Это и есть краткосрочная память — и у неё жёсткий потолок.
Контекстное окно* — это максимальное количество токенов, которое модель может обработать за один вызов, включая и ваш запрос, и её ответ. У GPT-4o оно составляет 128 тысяч токенов, у Claude — до 200 тысяч, у Gemini 1.5 Pro Google заявляет до 1–2 млн токенов. Когда переписка перестаёт помещаться в это окно, старые сообщения приходится либо обрезать, либо сжимать.
Краткосрочная память: контекстное окно и его пределы
Краткосрочная память живёт ровно один сеанс работы агента. Технически это набор токенов, которые уходят в модель при каждом вызове: системный промпт, история диалога, результаты вызванных инструментов, промежуточные рассуждения агента.
У неё три ограничения, о которые спотыкаются на практике:
- Размер. Даже миллион токенов заканчивается, если агент читает большие документы или ведёт долгий диалог с логами инструментов.
- Стоимость. Вы платите за каждый токен на входе. Чем больше истории тащите в каждый запрос, тем дороже обходится сеанс — и цена растёт линейно с длиной переписки.
- Деградация внимания. Модели хуже находят информацию в середине длинного контекста — эффект, описанный в работе «Lost in the Middle» (Liu et al., 2023). Забить окно под завязку не значит, что модель всё оттуда достанет.
Длинное контекстное окно решает не проблему памяти, а проблему одного разговора. Как только сеанс закончился, всё, что туда попало, исчезает — если вы не сохранили это отдельно.
Как экономят контекст
Чтобы не упереться в потолок и не переплачивать, используют несколько приёмов:
- Обрезка. Оставляют последние N сообщений, старое отбрасывают. Просто, но агент забывает начало.
- Суммаризация. Периодически сжимают старую переписку в короткое резюме отдельным вызовом модели. Дешевле по токенам, но резюме теряет детали.
- Выборочная подгрузка. Держат в окне только то, что относится к текущему шагу, а остальное подтягивают из внешнего хранилища по запросу.
Долгосрочная память: то, что переживает сеанс
Долгосрочная память — это внешнее хранилище, из которого агент достаёт нужное между сеансами и подкладывает в контекст. Модель по-прежнему ничего не помнит сама, но приложение умеет находить релевантный кусок и добавлять его к запросу.
Самый распространённый механизм — RAG**. Тексты заранее разбивают на фрагменты, превращают в векторы (эмбеддинги) и складывают в векторную базу. Когда приходит запрос, его тоже переводят в вектор и ищут по базе ближайшие по смыслу фрагменты. Найденное добавляют в контекстное окно как справку. Так агент «вспоминает» факт из документа, который в окно целиком не влез бы.
Долгосрочную память делят на несколько типов по назначению:
- Эпизодическая — что происходило в прошлых сеансах: какие задачи агент решал, какие ошибки допускал.
- Семантическая — факты и знания: содержимое документов, база продуктов, профиль пользователя.
- Процедурная — как выполнять действия: сохранённые инструкции, успешные цепочки шагов.
Краткосрочная и долгосрочная: чем различаются
| Параметр | Краткосрочная | Долгосрочная |
|---|---|---|
| Где хранится | В контекстном окне запроса | Во внешней базе (векторной, обычной БД, файлах) |
| Время жизни | Один сеанс | Между сеансами, пока не удалят |
| Объём | Ограничен окном (128k–2M токенов) | Практически неограничен |
| Скорость доступа | Мгновенно, всё уже в запросе | Нужен поиск и подгрузка перед вызовом |
| Стоимость | Токены на каждый вызов | Хранение + поиск + токены на подгруженное |
| Риск | Переполнение, деградация внимания | Поиск достанет нерелевантное или пропустит нужное |
Как это выглядит в готовых продуктах
Разработчику необязательно собирать память с нуля. Готовые решения закрывают типовые сценарии:
- ChatGPT Memory от OpenAI — функция, где ассистент запоминает факты о пользователе между чатами и подкладывает их в новые диалоги. Доступна в платных и части бесплатных тарифов, управление памятью — в настройках.
- Фреймворки LangChain и LlamaIndex дают готовые модули памяти и обвязку для RAG: суммаризацию истории, векторные хранилища, буферы сообщений.
- Векторные базы — Pinecone, Weaviate, Chroma, pgvector. Хранят эмбеддинги и делают поиск по смыслу. У части есть бесплатный уровень, платные тарифы зависят от объёма и числа запросов — сверяйте актуальные цены на сайтах сервисов, они меняются часто.
Кому это пригодится, а кому нет
Долгосрочная память оправдана, если:
- Вы строите ассистента поддержки, который должен помнить историю обращений клиента и содержимое базы знаний из тысяч документов.
- Агент работает над долгой задачей часами и должен возвращаться к результатам прошлых шагов.
- Нужна персонализация: помнить предпочтения пользователя между визитами.
Можно обойтись только контекстным окном, если:
- Задача умещается в один короткий сеанс — разовый анализ текста, генерация ответа на письмо.
- Документов немного и они целиком влезают в окно: тогда RAG добавит сложность и точки отказа без выигрыша.
- Вы прототипируете и цена ошибки поиска выше, чем цена лишних токенов.
Главная ловушка новичков — тянуть RAG туда, где хватило бы длинного окна. Поиск по векторной базе иногда возвращает нерелевантные фрагменты или пропускает нужный, и отладить это сложнее, чем просто передать документ целиком.
* Контекстное окно — максимальный объём текста в токенах, который модель обрабатывает за один вызов. Токен — это примерно 3–4 символа русского текста, точное соотношение зависит от модели.
** RAG (Retrieval-Augmented Generation) — подход, при котором перед ответом система ищет релевантные фрагменты во внешнем хранилище и добавляет их в запрос, чтобы модель отвечала с опорой на конкретные данные, а не только на то, что «знает» изначально.
Prompt-инженер: Идеальные запросы для Midjourney, ChatGPT и других моделей.
Спросить за 15 ₽Источники: Liu et al. «Lost in the Middle: How Language Models Use Long Contexts» (arXiv), OpenAI — Memory and new controls for ChatGPT
Частые вопросы
Чем токен отличается от слова?
Если у модели окно на миллион токенов, зачем вообще RAG?
Запоминает ли ChatGPT мои данные между чатами сам по себе?
Что дешевле — длинный контекст или векторная база?
Может ли долгосрочная память ошибаться?
Нужна ли долгосрочная память простому чат-боту на сайте?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.