Типы памяти: краткосрочная и долгосрочная

Память делает агента «помнящим». Разбираем два её вида и почему долгосрочная память приводит нас к векторным базам и RAG.

Краткосрочная память — история текущего диалога, помещающаяся в контекстное окно модели. Долгосрочная память — внешнее хранилище фактов, откуда нужное достают по запросу.

Зачем агенту память

Без памяти каждый шаг агента «слеп»: модель не помнит, что уже сделала и узнала, и обречена повторяться. Память хранит ход решения и накопленные знания, чтобы агент действовал связно.

Краткосрочная память

Это вся история текущей сессии: вопрос, мысли, действия, наблюдения. Она целиком отдаётся модели на каждом шаге (как список history из раздела 3). Главное ограничение — контекстное окно: модель видит лишь ограниченное число токенов. Когда история разрастается, в окно влезает не всё.

Способы уложиться в окно:

  • Обрезка (truncation) — держать только последние N сообщений.
  • Суммаризация — сжать старую часть диалога в краткое резюме.
  • Вынос в долгосрочную память — старое сохранить вовне и доставать по необходимости.

Долгосрочная память

Долгосрочная память живёт вне контекста модели — в базе. Туда складывают факты, документы, прошлые диалоги. Когда они нужны, агент ищет релевантное и подкладывает в контекст. Чаще всего хранилище — векторная база: тексты превращают в эмбеддинги (числовые векторы), а поиск идёт по близости векторов, а не по точному совпадению слов.

Это и есть мост к RAG

Связка «векторная база + поиск релевантного + подстановка в контекст» — это RAG (Retrieval-Augmented Generation). Для агента долгосрочная память реализуется ровно так же: перед шагом достать из базы то, что относится к делу. Здесь курс про агентов смыкается с курсом про RAG.

КраткосрочнаяДолгосрочная
Где живётв контексте моделиво внешней базе
Объёмограничен окномпрактически неограничен
Доступмодель видит всё сразупо поисковому запросу
Технологиясписок сообщенийвекторная база (эмбеддинги)

Поиск по «смыслу» на пальцах

Идею векторного поиска покажем грубо: представим документы наборами слов и будем искать самый похожий по числу общих слов (в настоящей базе вместо этого — близость эмбеддингов).

docs = {
    "d1": "агент использует инструменты и цикл",
    "d2": "векторная база хранит эмбеддинги",
    "d3": "react чередует мысль действие наблюдение",
}

def retrieve(query, docs):
    q = set(query.lower().split())
    # «похожесть» = число общих слов (упрощённая замена векторной близости)
    scored = [(name, len(q & set(text.split()))) for name, text in docs.items()]
    scored.sort(key=lambda x: x[1], reverse=True)
    return scored[0]

best, score = retrieve("что хранит векторная база", docs)
print("Нашли документ:", best, "| общих слов:", score)
print("Текст:", docs[best])

Вывод:

Нашли документ: d2 | общих слов: 3
Текст: векторная база хранит эмбеддинги

Принцип тот же, что в долгосрочной памяти агента: по запросу находим релевантный кусок и подкладываем его в контекст. Разница лишь в том, что настоящая база меряет близость по эмбеддингам и работает на миллионах документов.

Итог

  • Краткосрочная память — история в окне модели; её приходится обрезать или суммаризировать.
  • Долгосрочная память — внешнее хранилище (обычно векторная база), откуда достают релевантное по запросу.
  • Долгосрочная память агента — это, по сути, RAG: поиск нужного и подстановка в контекст.
Проверьте себя
1. Где живёт краткосрочная память агента?
AВ отдельной базе данных
BВ контекстном окне модели (история текущего диалога)
CВ векторном хранилище
DВ файлах на диске
2. Чем чаще всего реализуют долгосрочную память агента?
AТекстовым файлом со всей историей
BВекторной базой: тексты хранят как эмбеддинги и ищут по близости векторов
CУвеличением контекстного окна
DПовторной отправкой всего диалога модели
3. Почему долгосрочную память агента называют мостом к RAG?
ARAG — это другое название контекстного окна
BИ там, и там: ищем релевантное во внешней базе и подкладываем в контекст модели
CRAG заменяет инструменты
DДолгосрочная память не связана с RAG
Поддержать проект