Почему память важна для агентов
Большие языковые модели по умолчанию stateless — каждый вызов API начинается с чистого листа, и модель забывает ваш последний запрос, как только ответ вернётся. Это удобно для одноразовых вопросов, но ломается, когда вы пытаетесь построить полноценного агента.
Агенты планируют, вызывают инструменты и работают в несколько шагов. Чтобы это было возможно, им нужна память. Память превращает безграничный LLM в систему, способную сохранять контекст, учиться на опыте и действовать со временем.
Что такое память агента
Память — любой механизм, который переносит информацию через этапы рассуждения модели. Часть её хранится внутри окна контекста, часть — во внешних базах данных или в самих весах модели. Каждый тип хранит разный класс информации и рассчитан на разный срок.
Память различается по форме (параметрическая — в весах, непараметрическая — в виде текста) и по времени (короткосрочная и долгосрочная). Ниже представлены семь основных типов памяти, расположенных на этих осях.
Семь типов памяти агента
- 1. Рабочая (In‑Context) память — короткосрочная: всё, что модель видит в текущем окне контекста — системный промпт, последние сообщения, выводы инструментов, шаги рассудка. Это RAM: быстро, но ограниченно.
- 2. Семантическая память — долгосрочная: постоянное хранилище фактов, предпочтений и доменных знаний (например, «пользователь предпочитает Python вместо JavaScript»). Хранится отдельно от момента обучения.
- 3. Эпизодическая память — долгосрочная: журнал конкретных прошлых событий, полных диалогов и запусков задач. Позволяет агенту учиться на прошедших ошибках и успехах (Reflexion, ExpeL).
- 4. Процедурная память — долгосрочная: знания о том, как что‑то делается — навыки, шаблоны использования инструментов, типовые рабочие процессы. Агент повторно использует уже выученную процедуру вместо пересчёта.
- 5. Внешняя/поисковая память — коротко‑ и долгосрочная: данные хранятся вне модели в векторных БД и подбираются в контекст во время инференса через similarity‑search (RAG).
- 6. Параметрическая память — долгосрочная: знания, запечённые в весах модели во время предобучения (язык, общее мировоззрение, базовые паттерны рассуждения). Заморожено после обучения.
- 7. Проективная память — коротко‑ и долгосрочная: способность помнить будущие намерения и запланированные цели. Хранит то, что агент планировал, но ещё не выполнил.
Сравнительная таблица
| Тип памяти | Временной масштаб | Где хранится | Что хранит | Типичная реализация |
|---|---|---|---|---|
| Рабочая / In‑Context | Краткосрочный | Окно контекста | Промпт, сообщения, выводы инструментов | Нативно в LLM |
| Семантическая | Долгосрочный | Внешнее хранилище | Факты, предпочтения, доменные знания | Векторная БД или профильная схема |
| Эпизодическая | Долгосрочный | Внешнее хранилище | Прошлые события, диалоги, результаты задач | Векторная БД + журналы |
| Процедурная | Долгосрочный | Промпт или веса | Навыки, рабочие потоки, правила поведения | Системный промпт или fine‑tune |
| Внешняя / Retrieval | Оба | Векторная БД | Документы, фрагменты истории | RAG‑pipeline |
| Параметрическая | Долгосрочный | Веса модели | Общее знание мира, язык, рассуждения | Предобучение / fine‑tune |
| Проективная | Оба | Хранилище состояния | Будущие намерения, запланированные цели | Очередь задач или планировщик |
Как применять различные типы памяти
Для большинства практических задач достаточно комбинировать три слоя:
- Рабочая память — держит текущий контекст и результаты промежуточных вызовов.
- Семантическая + Эпизодическая — сохраняет пользовательские предпочтения и историю взаимодействий, чтобы агент мог «помнить» о вас между сессиями.
- Процедурная память — хранит готовые шаблоны действий (например, процесс бронирования билета), что экономит токены и ускоряет ответ.
Если требуется доступ к актуальной информации (цены, расписание, новости), подключаем внешнюю/поисковую память через RAG. Для долгосрочных «записей» о мире, которые меняются редко, полагаемся на параметрическую память.
Рекомендации по реализации
- Используйте FAISS или Milvus для векторных поисков (внешняя память).
- Храните семантические профили в простой NoSQL‑БД (MongoDB, DynamoDB) — быстрый доступ по ключу.
- Эпизодическую историю удобно сохранять в виде JSON‑логов в S3/Blob Storage, а затем индексировать в той же векторной БД.
- Процедурные навыки реализуйте как последовательность «tool calls» в системном промпте или в виде небольших функций, вызываемых из кода агента.
- Для проективной памяти заведите отдельную таблицу задач с полем
due_atи интегрируйте её в планировщик (Celery, Airflow).
Заключение
Без продуманного слоя памяти любой LLM‑агент будет вести себя как забывчивый помощник. Выбирая подходящие типы памяти и сочетая их правильно, вы превращаете статичную модель в адаптивную систему, способную учиться, планировать и выполнять задачи в длительной перспективе.





















