Как научить ИИ-агентов учиться на своих ошибках с помощью Hindsight

13 May, 2026

Знаете, что меня больше всего раздражает в современных чат-ботах и агентах? Их катастрофическая «забывчивость». Вы можете битый час объяснять модели контекст своего проекта, предпочтения в коде или специфику бизнес-процессов, но стоит начаться новому диалогу (или просто вырасти контекстному окну), как всё превращается в тыкву. В лучшем случае у нас есть RAG, который подтягивает куски текста по ключевым словам, но это не память. Это просто быстрый поиск по документам.

На днях я наткнулся на проект Hindsight, который пытается решить эту проблему принципиально иначе. Разработчики заявляют, что создали систему памяти, которая имитирует человеческий процесс обучения.

Hindsight Banner

Почему обычный RAG больше не справляется

Когда мы строим агентов, мы обычно полагаемся на связку LLM + векторная база данных. Проблема в том, что векторный поиск (semantic search) умеет находить похожие фрагменты, но не умеет делать выводы из накопленного опыта. Если агент трижды ошибся в написании одного и того же алгоритма, обычный RAG просто подсунет ему три примера ошибки.

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

Реклама
  1. Мир (World): Голые факты. «Земля круглая», «Питон использует отступы».
  2. Опыт (Experiences): Личные столкновения агента с реальностью. «Я попробовал этот метод, и API вернул 403».
  3. Ментальные модели (Mental Models): Самый сок. Это выводы, которые система делает, анализируя факты и свой опыт. Например: «Этот пользователь не любит длинные объяснения, лучше сразу давать код».

Как это устроено внутри

Архитектура проекта довольно любопытная. Она уходит от чисто векторного поиска в сторону гибридной структуры.

Overview

Когда вы передаете данные в систему через операцию retain, Hindsight не просто делает эмбеддинг. Под капотом LLM вытаскивает сущности, временные метки и причинно-следственные связи. Всё это превращается в граф, дополненный индексами BM25 (для точных совпадений) и векторными индексами (для смысла).

При поиске (recall) запускаются сразу четыре стратегии:

  • Семантика (векторы)
  • Ключевые слова (BM25)
  • Графы (связи сущностей)
  • Темпоральный поиск (фильтрация по времени)

Результаты объединяются через Reciprocal Rank Fusion (RRF). Это звучит сложно, но на практике дает агенту возможность вспомнить не «что-то похожее», а «то самое событие, которое произошло в прошлый вторник».

Попробуем в деле

Развернуть всё это добро можно через Docker. Это, пожалуй, самый быстрый способ пощупать API и встроенную админку (да, у проекта есть свой UI на порту 9999).

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

Кстати, если вы не хотите возиться с сервером, у них есть embedded-версия для Python. Это удобно для локальных скриптов или тестов:

from hindsight import HindsightServer, HindsightClient

with HindsightServer(llm_provider="openai", llm_model="gpt-4o") as server:
    client = HindsightClient(base_url=server.url)
    client.retain(bank_id="dev-notes", content="В этом проекте мы используем ruff вместо flake8")
    
    # Теперь агент «знает» это правило
    answer = client.recall(bank_id="dev-notes", query="Какой линтер выбрать?")

Migration Code

Самая крутая фишка в плане интеграции — LLM Wrapper. Вы просто оборачиваете свой привычный клиент (OpenAI или Anthropic) в обертку от Hindsight, и память начинает работать автоматически. Вам даже не нужно явно вызывать retain или recall в коде бизнес-логики.

Что такое операция Reflect

Это то, чего мне не хватало в других библиотеках. Функция reflect заставляет агента «задуматься» над имеющимися данными.

Представьте AI-менеджера проектов. Вместо того чтобы просто выдать список задач из базы, вы вызываете reflect, и агент анализирует: «Так, за последние две недели разработчик Вася завалил три задачи по фронтенду, но закрыл пять по бэкенду. Наверное, стоит пересмотреть его нагрузку». Это не поиск по документам, это аналитика на основе накопленной памяти.

Продакшн-кейсы, которые описывают авторы, включают персонализацию чат-ботов для Enterprise. Например, когда нужно четко разделять память между тысячами пользователей, используя метаданные для фильтрации.

Per-User Memories

Стоит ли переходить на это сейчас

Проект выглядит очень бодро. У него понятный API, есть поддержка Python и Node.js, а результаты бенчмарка LongMemEval (если верить графикам из README) обходят конкурентов.

Benchmark

Но есть нюансы. Система довольно тяжеловесная — под капотом PostgreSQL, векторные расширения и необходимость в мощной LLM для процесса «размышления». Если у вас простой бот-викторина, Hindsight будет явным оверкиллом.

Но если вы строите автономного агента, который должен работать неделями и не превращаться в «золотую рыбку» через три дня — это, пожалуй, самое интересное решение на горизонте. Определенно стоит закинуть в закладки или покрутить в выходные.

Для тех, кто пользуется Claude Code или Cursor, ребята даже выкатили скилл с документацией: npx skills add https://github.com/vectorize-io/hindsight

Помогает не лазить в браузер лишний раз во время написания кода.