[nevr]
· 9 мин чтения

Bi-temporal knowledge graph: почему факты не удаляют, а инвалидируют

«Рынок оценивается в $1B» — записали в январе. «Рынок — $500M» — обнаружили в марте. Что делать со старым фактом? Удалить? Перезаписать? Оба варианта уничтожают самое ценное — историю вашего понимания.

Проблема: знание как overwrite

Notion, Google Docs, Miro — везде одна механика. Новая запись заменяет старую. “Конкурент стоит $8” → узнали что $10 → стёрли старое.

Через полгода анализируете, почему ценовая стратегия не сработала. Не помните, что конкурент стоил $8 когда вы принимали решение. Контекст потерян.

Два измерения времени

Bi-temporal модель разделяет время на два:

  • valid_at — когда факт стал истиной в реальном мире. “Miro стоит $10” → valid_at = 1 марта
  • invalid_at — когда перестал быть истиной. Старый факт “$8” получает invalid_at = 1 марта. Не удалён — помечен
  • created_at — когда я узнал. Мог узнать 15 марта, хотя изменение 1 марта

Разница между valid_at и created_at = задержка осведомлённости. Сама по себе ценный сигнал.

Пример: конкурент Miro

Январь. Вы пишете: “Miro стоит $8/мес”. Система создаёт ребро has_pricing с valid_at = январь.

Март. “Miro поднял до $10”. Происходит:

  1. Находит существующее ребро has_pricing
  2. Semantic comparison: $8 ≠ $10, тот же атрибут → противоречие
  3. LLM подтверждает: замена, не дополнение
  4. Старое ребро → invalid_at = март
  5. Новое ребро: $10, valid_at = март

Оба факта в базе. Теперь можно спросить:

  • “Что изменилось за 3 месяца?” → цепочка инвалидаций
  • “Какой была картина когда мы решали про цену?” → граф на дату
  • “Какие предположения оказались неверными?” → все инвалидированные факты

Contradiction Detection

Автоматический конвейер при каждом новом факте:

  1. Semantic similarity — embedding нового факта vs существующие. Порог отсекает нерелевантное
  2. LLM arbitration — дополнение, уточнение или противоречие?
  3. Temporal resolution — старый → invalid_at, новый → valid_at, связь contradicts
  4. User notification — “Обнаружено противоречие. Ранее: $1B. Сейчас: $500M.”

Temporal Evolution Artifact

Когда накапливается достаточно инвалидаций — новый тип артефакта:

В феврале вы считали рынок растёт на 30%. В марте — 12%. В апреле — стагнация B2B. Цепочка: Факт #12 (фев) → инвалидирован #47 (мар) → уточнён #63 (апр)

Реконструкция когнитивного пути. Где ошибались, как быстро корректировали.

Decay: забывание как функция

Каждый узел имеет confidence (0-100). Ежемесячно decay: confidence снижается для неподтверждённых фактов. Повторное упоминание = reinforce. Ниже порога = архив.

Имитация естественного забывания. Знание без подкрепления теряет релевантность.

Источник вдохновения: Zep/Graphiti

Архитектура вдохновлена Graphiti — 3-layer temporal memory для LLM-агентов. Я адаптировал для product research и добавил decay + promotion (автоматическое повышение с проекта на org-level при появлении в 2+ проектах).

Заключение

Знание эволюционирует. База знаний должна эволюционировать вместе. Удалять старые факты — стирать память. Инвалидировать — помнить, что было, понимать, что изменилось.

Продуктовое мышление — не про правильные ответы. Про эволюцию вопросов.


Bi-temporal граф в действии — AICPO или напишите nevr@aicpo.com