Битемпоральный граф знаний

Память, которая помнит когда.

У каждого факта двое часов: когда факт был верен и когда Brain о нём узнал. Спроси, что верно сейчас, — или посмотри, что граф знал в марте. Конфликты не перезаписываются молча — они получают оценку. Forget — это удаление, а не флажок «скрыто». REST или MCP, у себя или в облаке.

AGPL-3.0NestJS · SurrealDB · BGE-M3под eval-гейтами в CI
Битемпоральная шкалаasOf=now
valid timet →
transaction timet →
По умолчанию запрос отвечает «сейчас». Передай asOf — и тот же запрос вернёт то, что Brain знал на тот момент. Ничего не дорисовывается задним числом.
[01]Bitemporal · живое демо

Посмотри, что Brain знал — а не что верно сейчас.

Acme перешла со starter на growth 10 марта, но Brain записал это только 12-го. Подвигай оба ползунка: история не переписывается, а воспроизводится.

valid time — когда было правдойJun 22
JanFebMarAprMayJun
смена тарифа
transaction time — когда Brain узналJun 22
JanFebMarAprMayJun
Brain записал
GET /v1/entities/acme?asOf=Jun 22&asOfTxn=Jun 22
Brain отвечает
plan
growth

Оба времени на «сейчас»: смена произошла, и Brain о ней знает. Актуальный ответ — growth.

сценарий · смена тарифа acme · starter → growth
[02]Движок поиска

Семь стадий — и только первые две про векторы.

Единица поиска — типизированный факт на графе знаний, а не текстовый чанк. Vector + BM25 — лишь входные двери: они превращают свободный текст в кандидатов-фактов. Всё дальше — нативно графовое: роутер по онтологии, бакеты по сущностям, обходы рёбер, PPR, rerank. Каждая стадия — флаг со своими метриками по тенанту.

запрос и scope тенанта
  1. S01Входные двери: vector + BM25
  2. S02HyPE alt-embeddings
  3. S03Predicate + type router
  4. S04Edge expansion
  5. S05Tier-aware PPR
  6. S06Cross-encoder rerank
  7. S07Listwise LLM rerank
ранжированные факты с разбивкой score по этапам
Каждую стадию можно включить и измерить отдельно; CI-eval показывает recall по каждому этапу. Запросы с именованными якорями входят в граф напрямую, минуя двери — graph_retrieve и multi-hop планировщик стартуют от сущностей.
[03]Дальше эмбеддингов

Чего не скажет vector store.

Эмбеддинги находят похожий текст. Слою памяти этого мало.

Обычный vector store
INITE Brain
Куски текста, ранжированные по косинусу
Типизированные SPO-факты на графе
Только то, что похоже на правду прямо сейчас
Двое часов — запрос сейчас или на любой момент в прошлом
Новый эмбеддинг молча затирает старый
Конфликты оцениваются; близкие по score помечаются COMPETING
Удалил строку и надеешься, что её нет
Forget каскадом удаляет факты, рёбра и эмбеддинги — остаётся только HMAC-tombstone
Связей между записями нет вообще
Типизированные рёбра и multi-hop планировщик по ним
PII лежит в том же индексе, что и всё остальное
PII закрыта на уровне БД, по scope вызывающего
[04]Остальной стек

Не просто ретривер.

Всё, что между ingest и ответом, которому можно верить.

Ingest

Разрешение конфликтов

Два ingest на один факт идут через лестницу скоринга — confidence × source-trust × recency × authority. Близкие по score случаи помечаются COMPETING, а не перезаписываются молча.

Trust

Доверие к источникам

Факт — это заявление, а не истина. Каждый источник зарабатывает agreement rate, отдельно по доменам; заявленная authority и подтверждения из независимых документов влияют на ранжирование. Всё видно через GET /v1/sources.

Граф

Резолюция идентичности

Слияния между вертикалями схлопывают дубликаты в одну сущность через рёбра identity_of; переатрибуция идёт по mergedInto. Ночной проход Dreams сам предлагает слияния почти-дублей.

Retrieval

Multi-hop

Планировщик-LLM режет вопрос на несколько заякоренных под-запросов — до четырёх. Опорные факты тянутся дальше, чтобы считать joint-F1 в стиле HotpotQA.

Synthesis

Честные ответы

/v1/synthesize гоняет corrective-RAG в режимах strict / lenient / off и проверяет правдивость каждого утверждения. Pass-rate под гейтом 1.0.

Платформа

Domain Packs

Версионируемые плагины онтологии: типизированные предикаты, тюнинг экстракции, seed-документы, MCP-инструменты. Манифесты с подписью ed25519, глобальный реестр с verified-издателями — и маркетплейс с featured и платными паками.

Документы

Пайплайн документов

Source → Indexer → Candidates → Brain. Экстракция предлагает, решает один резолвер. Сохранённые документы переиндексируются, когда приходит новый пак; внешние индексеры подключаются по pull-API.

MCP

Инструменты паков

Установленные паки расширяют MCP-поверхность: декларативные query-инструменты по своим предикатам и HMAC-подписанные прокси на эндпоинты издателя. Только с явного согласия оператора; чужой код в процессе не выполняется.

Доступ

ABAC-политики

Именованные policy-наборы на API-ключ: allow / deny по REST- и MCP-действиям, построчные фильтры чтения по PII-классу, порогам доверия и провенансу. Режим report-only делает раскатку безопасной.

Safety

Барьер для PII

PII закрыта на уровне БД через PERMISSIONS и scope вызывающего. Каждый предикат заранее объявляет свой PII-класс.

Lifecycle

GDPR-forget

Forget — синхронное жёсткое удаление: факты, рёбра, эмбеддинги исчезают. Остаётся только HMAC-tombstone — доказательство, что это произошло.

Tenancy

Изоляция на тенанта

У каждой компании своя база (co_<id>). Один REMOVE DATABASE забывает целого тенанта. Между тенантами ничего не протекает.

[05]Self-host или хостинг

Два способа запустить. Один граф.

Open source

Self-host

Склонируй репозиторий, подними SurrealDB, пропиши свои ключи. AGPL-3.0 — каждую строчку можно прочитать, форкнуть и прислать обратно.

  • Docker Compose — SurrealDB и сервис за минуты
  • Ничего не уходит из твоей сети
  • BGE-M3 считает эмбеддинги локально — без обращений к OpenAI
  • Админ-панель и набор eval-тестов — всё в репозитории
$ docker compose up -d
Managed

brain.inite.ai

Та же сборка, только без возни с серверами. Хостинг-эндпоинт передеплоивается на каждый push в main.

  • Ни серверов, ни базы, за которыми надо следить
  • Изоляция на тенанта, scoped API-ключи
  • Health и Prometheus-метрики из коробки
  • Тот же REST + MCP, что в self-host
https://brain.inite.ai
[06]Результаты eval

Насколько хорошо он на самом деле ищет.

У Brain есть собственный eval-сьют. Это свежие оценки на бенчмарках retrieval и memory-lifecycle — измеренные, а не заявленные.

recall@1
0.962
95% CI 0.94–0.98гейт ≥ 0.6
recall@3
0.989
95% CI 0.97–1.00гейт ≥ 0.8
MRR
0.976
95% CI 0.96–0.99гейт ≥ 0.5
NDCG@10
0.973
95% CI 0.96–0.99гейт ≥ 0.7
recall@1 по вертикалям
cross
..990n=192
rent
..939n=33
shop
..833n=12
estate
..800n=10
events
..778n=9
health
1.000n=6
корректность · всё под гейтом 1.0
faithfulness1.000
identity-F11.000
memory-lifecycle1.000
PII-gating1.000

Из eval-отчёта, n=262 (multi-vertical сьют + wikidata). На temporal-запросах recall@1 1.000 (n=21), на current — 0.959 (n=241). Каждый push прогоняет заново; ниже гейта сборка падает.

[07]Быстрый старт

Три способа поговорить с Brain.

Выбери тот, что подходит под твой стек.

# Ingest a fact
curl -X POST https://brain.inite.ai/v1/ingest/fact \
  -H "Authorization: Bearer $BRAIN_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "entityRef": { "vertical": "rent", "id": "cust_42" },
    "predicate": "complained_about",
    "object": "late maintenance",
    "validFrom": "2026-05-05T10:00:00Z",
    "source": { "vertical": "rent", "messageId": "msg_1" }
  }'

# Search
curl -X POST https://brain.inite.ai/v1/search \
  -H "Authorization: Bearer $BRAIN_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "maintenance issues", "limit": 5 }'
[08]Model Context Protocol

Один блок конфига. Вся поверхность инструментов. Любой клиент.

MCP-URL на тенанта, scope-aware. Вставь в Claude Desktop, Cursor, Goose или n8n — агент получает 28 встроенных инструментов, а установленные Domain Packs могут добавить свои.

claude_desktop_config.json
{
  "mcpServers": {
    "brain": {
      "url": "https://brain.inite.ai/mcp/<companyId>",
      "transport": "http",
      "headers": { "Authorization": "Bearer <api-key>" }
    }
  }
}
28 scope-aware инструментов · избранное
search_knowledge
synthesize
get_entity_profile
detect_contradiction
record_fact
retract_fact

Один URL, один заголовок, ноль glue-кода — всё, что говорит на MCP.

Гайд по настройке MCP
[09]Скиллы агента

Скиллы, которые учат агента работать с Brain.

Шесть Anthropic-скиллов — search, recall, битемпоральные запросы, записи, разбор конфликтов и пошаговая настройка. Один curl ставит их в ~/.claude/skills.

shell · ~/.claude/skills/
$ curl -fsSL https://brain.inite.ai/install.sh | sh
[10]Open source

Разрабатывается открыто, лицензия AGPL-3.0.

Читай код, поднимай своё, присылай PR. Всё, что крутит brain.inite.ai, лежит в репозитории.

AGPL-3.0Сетевой copyleft: self-host — свободно, но правки, которые ты отдаёшь по сети, остаются открытыми.
Собрано на
NestJS 11TypeScriptSurrealDB 3.xBGE-M3 · 1024dOpenAICohere RerankOpenTelemetryDockerNode 22

Поставь звезду

Следи за релизами, заводи issues, присылай патчи. Роадмап открытый.

Star на GitHub