> · 8 мин

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

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

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

Каждый, кто строил AI-агента, сталкивался с одной и той же проблемой: агент забывает всё между сессиями. Ты объяснил ему контекст проекта, показал предпочтения, рассказал про архитектуру — а через час он снова спрашивает «а какой у вас фреймворк?». RAG? Он ищет по семантике и понятия не имеет, что «прошлой весной» — это конкретный период времени. Knowledge graph? Он хранит связи, но не умеет делать выводы из накопленного опыта.

Hindsight от Vectorize.io подходит к проблеме иначе: вместо одной стратегии поиска — четыре параллельных, вместо плоского хранилища — иерархия фактов, наблюдений и ментальных моделей, и вместо пассивного recall — активный reflect, где агент сам формирует убеждения на основе накопленных данных.

TL;DR: Hindsight — open-source (MIT) система памяти для AI-агентов. Три операции: Retain (сохранить), Recall (вспомнить), Reflect (осмыслить). Четыре параллельных стратегии поиска. SOTA на LongMemEval: 89% с open-source моделью на 120B. Docker за 60 секунд. 4 000+ звёзд на GitHub.

Зачем нужна специализированная память

Простой пример. Агент за три месяца работы с пользователем накопил сотни фактов: «Алиса работает в Google», «Google находится в Mountain View», «Алиса переехала в Сан-Франциско в прошлом мае». Простой RAG на вопрос «где живёт Алиса?» может выдать «Mountain View» — потому что семантически Google и местоположение связаны сильнее, чем факт о переезде, который записан другими словами.

Hindsight решает это через четыре параллельных стратегии поиска (авторы называют подход TEMPR):

  • Semantic — классический поиск по смыслу через эмбеддинги
  • Keyword (BM25) — точное совпадение имён, терминов, идентификаторов
  • Graph — связи между сущностями: «Алиса → работает → Google → находится → Mountain View»
  • Temporal — временные запросы: «прошлой весной», «после января 2026»

Результаты четырёх стратегий объединяются через reciprocal rank fusion и перетасовываются cross-encoder reranker'ом. На выходе — не просто «ближайшие по косинусу документы», а контекст, в котором учтены время, связи между сущностями и точные совпадения.

Три операции: Retain, Recall, Reflect

Вся архитектура Hindsight строится вокруг трёх действий.

Retain — запомнить

Принимает текст, прогоняет его через LLM для извлечения фактов. Из сырого текста «Мы вчера обсуждали миграцию на PostgreSQL 17, Петя сказал, что deadline — пятница» вытаскиваются атомарные факты: кто, что, когда, с какой уверенностью. Каждый факт индексируется по всем четырём стратегиям.

После записи фактов запускается фоновая консолидация наблюдений: система сопоставляет новые факты с уже существующими и формирует обобщения. Если за неделю накопилось 15 фактов про проблемы с деплоем — Hindsight создаст observation «деплой нестабилен, основные причины: X, Y, Z» с ссылками на исходные факты.

from hindsight_client import Hindsight

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

# Сохраняем факт
client.retain(
    bank_id="project-memory",
    content="Алиса провела код-ревью PR #342. Нашла race condition в обработчике WebSocket-подключений. Fix займёт ~2 дня."
)

Recall — вспомнить

Ищет по четырём стратегиям параллельно, возвращает релевантные факты в пределах заданного token budget.

results = client.recall(
    bank_id="project-memory",
    query="Какие проблемы нашла Алиса на прошлой неделе?"
)
# Вернёт факт о race condition + все связанные наблюдения

Reflect — осмыслить

Самая интересная часть. Reflect не просто ищет — он рассуждает над накопленной памятью. Можно задать вопрос, и Hindsight соберёт релевантные факты, наблюдения и ментальные модели, а затем сгенерирует ответ с учётом всего контекста.

response = client.reflect(
    bank_id="project-memory",
    query="Какие риски у текущего спринта?"
)
# Hindsight соберёт факты о deadline'ах, найденных багах,
# загруженности команды — и сформулирует анализ рисков

Reflect можно настроить через mission (роль агента), directives (жёсткие правила) и disposition (мягкие черты характера: скептицизм, эмпатия, буквальность — каждый на шкале от 1 до 5). Mission и disposition влияют только на reflect, не на recall — поиск остаётся объективным.

Иерархия памяти

Hindsight хранит данные не в одном плоском слое, а в четырёх уровнях, которые при recall приоритизируются сверху вниз:

  • Mental Models — созданные пользователем сводки для частых запросов (высший приоритет)
  • Observations — автоматически консолидированные знания, выведенные из множества фактов
  • World Facts — объективные факты из внешних источников
  • Experience Facts — собственные действия и взаимодействия агента (низший приоритет)

Это значит, что если ты вручную создал ментальную модель «Наш стек: FastAPI + PostgreSQL + Redis», она будет возвращаться раньше, чем десятки отдельных фактов, из которых можно было бы то же самое вывести.

Архитектура Hindsight

Бенчмарки: что стоит за цифрами

Vectorize.io заявляет SOTA на LongMemEval — бенчмарке для оценки долгосрочной памяти чат-ассистентов, принятом на ICLR 2025. Бенчмарк тестирует пять способностей: извлечение информации, мультисессионные рассуждения, темпоральные рассуждения, обновление знаний и отказ от ответа при нехватке данных.

Результаты по заявлению Vectorize.io:

  • OSS-20B модель: 83.6% (против 39% у full-context baseline с той же моделью — это +44.6 пунктов)
  • OSS-120B модель: 89.0%
  • Gemini 3: 91.4%

Для сравнения, конкуренты на том же бенчмарке:

  • Supermemory + GPT-4o: 81.6%
  • Supermemory + GPT-5: 84.6%
  • EverMemOS (независимое исследование, январь 2026): 83.0%

Результаты Hindsight верифицированы независимыми исследователями из Virginia Tech (Sanghani Center) и The Washington Post — это важно, потому что большинство конкурентов показывают только собственные замеры. Но стоит отметить: верификация касается воспроизводимости результатов, а не того, что подход объективно лучше в реальных сценариях. Бенчмарк — это бенчмарк.

Подводные камни

Каждый retain — это вызов LLM. Hindsight прогоняет входящий текст через модель для извлечения фактов. Плюс после записи запускается фоновая консолидация наблюдений — ещё один вызов LLM. Если ты работаешь с OpenAI API, это деньги за каждую операцию записи. С локальными моделями через Ollama — это значительное время инференса на каждый retain. Prompt caching пока не реализован, что делает расходы выше, чем могли бы быть.

Удаление документов оставляет мусор. Issue #572: при удалении документа из memory bank связанные observation-ноды остаются в графе как «мёртвые» узлы. Это не критично для работы, но постепенно загрязняет граф — и может влиять на качество recall при большом объёме данных.

Docker не стартует под WSL. Issue #116 открыт с 7 января 2026 и до сих пор не решён. Если ты разрабатываешь на Windows с WSL — придётся повозиться с workaround'ами или использовать нативный Linux/macOS.

4 000 звёзд — это не 40 000. Проект свежий и активно развивается, но community ещё маленькое. 8 открытых issues и 282 форка — это немного. Если наткнёшься на edge case, ответ на GitHub Discussions можешь ждать дольше, чем хотелось бы.

Альтернативы

  • Mem0 — managed-сервис с knowledge graph и заявленным 80% сокращением промпт-токенов через сжатие истории. Быстрее всего в продакшен: не нужно поднимать инфраструктуру. Но: closed-source ядро, графовая БД работает только на Pro+ тарифах, и ты привязан к их cloud.

  • Zep — биtempoральные knowledge graphs, которые отслеживают и когда факт был записан, и когда он был валиден. Лучший выбор, если нужно рассуждать о том, как сущности и связи менялись со временем. Сложнее в настройке, чем Hindsight, зато мощнее в enterprise-сценариях с несколькими источниками данных.

  • Supermemory — семантическая память с темпоральной прослойкой. Фокус на персональных AI-ассистентах, а не на продакшен-инфраструктуре для агентов. Closed-source, self-hosting только через enterprise agreement.

Ключевое отличие Hindsight — MIT-лицензия. Можно форкнуть, задеплоить на своей инфре и никому ничего не платить. Из перечисленных альтернатив только Zep имеет open-source версию, но с ограниченным функционалом.

Вердикт

Если строишь AI-агента, который должен помнить контекст между сессиями — Hindsight стоит попробовать прямо сейчас. MIT-лицензия, Docker за минуту, Python/TypeScript/Go SDK, MCP-сервер из коробки — порог входа минимальный. Результаты на LongMemEval убедительные и независимо верифицированы.

Не стоит, если у тебя простой чат-бот с короткими сессиями — overhead от LLM-вызовов на каждый retain не окупится. И если ты на Windows с WSL — подожди, пока починят Docker-совместимость.

Главный риск — стоимость. Каждая запись в память = вызов LLM. При тысячах retain'ов в день на GPT-4o это ощутимо. Ollama с локальной моделью решает проблему денег, но добавляет латентность. Следи за issue #367 — когда добавят prompt caching, расходы должны упасть.

Как попробовать

  1. Запусти Docker-контейнер — нужен только API-ключ OpenAI (или любого другого провайдера):
export OPENAI_API_KEY=sk-xxx
docker run --rm -it --pull always -p 8888:8888 -p 9999:9999 \
  -e HINDSIGHT_API_LLM_API_KEY=$OPENAI_API_KEY \
  -v $HOME/.hindsight-docker:/home/hindsight/.pg0 \
  ghcr.io/vectorize-io/hindsight:latest
  1. Открой UI на localhost:9999 — там можно визуально исследовать граф памяти.

  2. Установи Python-клиент и попробуй три операции:

pip install hindsight-client -U
  1. Подключи к своему агенту как MCP-сервер — Hindsight из коробки работает как MCP tool для Claude Code, OpenClaw и других агентов.

  2. Без API-ключа? Используй Ollama — Hindsight поддерживает локальные модели через HINDSIGHT_API_LLM_PROVIDER=ollama.

$ ls ./related/

Похожие статьи

subscribe.sh

$ cat /dev/blog/updates

> Свежие заметки о программировании,

> DevOps и AI — прямо в мессенджер

./subscribe