Hindsight — память для AI-агентов, которая учится, а не просто запоминает
📂 Исходный код на GitHubСистема памяти для AI-агентов от Vectorize.io. Вместо простого вспоминания истории диалогов агенты учатся со временем: воспоминания организованы по образцу человеческой памяти (факты о мире, собственный опыт, ментальные модели). Три операции — retain, recall, reflect. State-of-the-art на LongMemEval, независимое воспроизведение результатов Virginia Tech и Washington Post. Python- и Node.js-клиенты, Docker, встроенный режим без сервера. MIT.
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 коммитов), который закрывает одну из главных болей агентных систем: превращение разрозненных диалогов в накопленный опыт. Если ваш агент должен не просто отвечать, а становиться со временем полезнее — стоит начать с этого репозитория.