Hindsight — память для AI-агентов, которая учится, а не просто запоминает

· 3 мин чтения
memory ai-agents python rag open-source
📂 Исходный код на GitHub

Система памяти для AI-агентов от Vectorize.io. Вместо простого вспоминания истории диалогов агенты учатся со временем: воспоминания организованы по образцу человеческой памяти (факты о мире, собственный опыт, ментальные модели). Три операции — retain, recall, reflect. State-of-the-art на LongMemEval, независимое воспроизведение результатов Virginia Tech и Washington Post. Python- и Node.js-клиенты, Docker, встроенный режим без сервера. MIT.

Hindsight — память для AI-агентов, которая учится, а не просто запоминает

Hindsight от Vectorize.io — открытая система памяти для AI-агентов, которая делает ставку не на вспоминание истории диалогов, а на обучение со временем. Большинство agent-memory решений по сути переизобретают RAG: складывают реплики в векторное хранилище и достают их по похожести. Hindsight идёт дальше — организует воспоминания по образцу человеческой памяти и позволяет агенту делать выводы из накопленного опыта. Проект набрал около 20 тысяч звёзд, распространяется под лицензией MIT и используется в продакшене компаниями из Fortune 500.

Что такое Hindsight

Авторы формулируют принцип коротко: агенты должны учиться, а не просто помнить. Система устраняет типичные недостатки альтернатив — чистого RAG и графов знаний — и показывает state-of-the-art результаты на задачах долгосрочной памяти.

Отдельного внимания заслуживает проверяемость заявлений. Результаты Hindsight на бенчмарке LongMemEval были независимо воспроизведены исследователями из Sanghani Center (Virginia Tech) и журналом The Washington Post — остальные участники сравнительной таблицы отчитываются о себе сами. У проекта есть и научная статья: arxiv.org/abs/2512.12818.

Архитектура памяти

Вместо плоского векторного поиска или графа знаний Hindsight использует биомиметические структуры данных, разбитые на три типа памяти:

  • World — факты о мире («плита нагревается»);
  • Experiences — собственный опыт агента («я тронул плиту, и было очень больно»);
  • Mental Models — выученное понимание мира, сформированное в результате размышлений над сырыми воспоминаниями и опытом.

Воспоминания хранятся в banks — банках памяти. При добавлении новой информации она попадает в один из двух путей: факты о мире либо опыт. Внутри данные представляются как комбинация сущностей, связей и временных рядов с разреженными и плотными векторными представлениями — это groundwork для точного последующего извлечения.

Три операции

Взаимодействие с системой сводится к трём методам: retain, recall и reflect.

Retain — запомнить

Операция принимает информацию, которую нужно сохранить. Под капотом LLM извлекает ключевые факты, временные данные, сущности и связи, после чего нормализация превращает их в канонические сущности, временные ряды и поисковые индексы с метаданными.

from hindsight_client import Hindsight

client = Hindsight(base_url="http://localhost:8888")

# Simple
client.retain(
    bank_id="my-bank",
    content="Alice works at Google as a software engineer"
)

# With context and timestamp
client.retain(
    bank_id="my-bank",
    content="Alice got promoted to senior engineer",
    context="career update",
    timestamp="2025-06-15T10:00:00Z"
)

Recall — вспомнить

Поиск по памяти любого типа. Параллельно выполняются четыре стратегии извлечения:

Стратегия Что делает
Semantic векторное сходство
Keyword точное совпадение по BM25
Graph связи между сущностями, временные и причинные цепочки
Temporal фильтрация по диапазону времени

Результаты стратегий объединяются, сортируются по релевантности через reciprocal rank fusion и переранжируются cross-encoder моделью. Итоговый вывод обрезается под лимит токенов.

# Simple
client.recall(bank_id="my-bank", query="What does Alice do?")

# Temporal
client.recall(bank_id="my-bank", query="What happened in June?")

Reflect — осмыслить

Самая интересная операция: глубокий анализ существующих воспоминаний, в ходе которого агент находит новые связи и строит более полное понимание своего мира. Примеры из документации:

  • AI Project Manager размышляет, какие риски проекта нужно устранить;
  • Sales Agent анализирует, почему одни outreach-сообщения получают ответы, а другие нет;
  • Support Agent ищет вопросы клиентов, не покрытые документацией продукта.
client.reflect(bank_id="my-bank", query="What should I know about Alice?")

Быстрый старт

Простейший способ подключить память к существующему агенту — LLM Wrapper: две строки кода подменяют ваш LLM-клиент обёрткой Hindsight, после чего воспоминания сохраняются и извлекаются автоматически при каждом вызове модели.

Сервер поднимается одной Docker-командой:

export OPENAI_API_KEY=sk-xxx

docker run -it --pull always --name hindsight --restart unless-stopped -p 8888:8888 -p 9999:9999 \
  -e HINDSIGHT_API_LLM_API_KEY=$OPENAI_API_KEY \
  -v hindsight-data:/home/hindsight/.pg0 \
  ghcr.io/vectorize-io/hindsight:latest

API доступен на http://localhost:8888, UI — на http://localhost:9999. Провайдер меняется переменной HINDSIGHT_API_LLM_PROVIDER: поддерживаются openai, anthropic, gemini, groq, ollama, lmstudio, minimax и atlas. Для enterprise-развёртываний с полной функциональностью поддерживается Oracle AI Database и внешний PostgreSQL.

Клиенты:

pip install hindsight-client -U
# or
npm install @vectorize-io/hindsight-client

Node.js-пример:

const { HindsightClient } = require('@vectorize-io/hindsight-client');

const main = async () => {
  const client = new HindsightClient({ baseUrl: 'http://localhost:8888' });

  await client.retain('my-bank', 'Alice loves hiking in Yosemite');

  const results = await client.recall('my-bank', 'What does Alice like?');
  console.log(results);
}

main();

Для Python есть встроенный режим без отдельного сервера — pip install hindsight-all поднимает HindsightServer прямо в процессе:

import os
from hindsight import HindsightServer, HindsightClient

with HindsightServer(
    llm_provider="openai",
    llm_model="gpt-5-mini",
    llm_api_key=os.environ["OPENAI_API_KEY"]
) as server:
    client = HindsightClient(base_url=server.url)
    client.retain(bank_id="my-bank", content="Alice works at Google")
    results = client.recall(bank_id="my-bank", query="Where does Alice work?")

На Intel-маках вместо hindsight-all ставится облегчённый hindsight-all-slim.

Сценарии использования

Hindsight рассчитан и на диалоговых агентов, и на автономные, но идеальный вариант — гибрид: «AI-сотрудники», которые выполняют открытые задачи, меняют поведение на основе обратной связи пользователя и постепенно учатся автоматизировать сложную работу. Для простых n8n-воркфлоу система может оказаться избыточной.

Разберём типовой кейс — персонализация чат-бота с изоляцией данных по пользователям. Новые входные сообщения и вызовы инструментов попадают в Hindsight через retain, обогащаясь кастомными метаданными. Метаданные — удобный способ ограничить воспоминания конкретным пользователем: при извлечении сырые воспоминания и ментальные модели фильтруются по ним, и один пользователь никогда не увидит память другого.

Платформы и экосистема

Платформа Docker Bare Metal (pip) Embedded DB (pg0)
Linux (x86_64, ARM64)
macOS (Apple Silicon)
macOS (Intel) ⚠️
Windows (x86_64)

Приятная деталь для работы с кодинг-агентами: документацию Hindsight можно установить как скилл — npx skills add https://github.com/vectorize-io/hindsight --skill hindsight-docs — и получать доступ к докам прямо из Claude Code, Cursor или другого AI-ассистента.

Документация — на hindsight.vectorize.io, там же cookbook с рецептами и описание REST API. Есть Slack-сообщество и managed-версия Hindsight Cloud.

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

Источник: https://github.com/vectorize-io/hindsight