Архитектура для Graphiti, позволяющая более эффективно работать с источниками.
Graphiti обеспечивает возможность задавать кастомные сущности и связи между ними. Что позволяет адаптировать каждый граф под конкретную бизнес-модель.
Наткнулся на интересную архитектуру графа, который предоставляет:
1. Объяснимые ответы. Если получаем факт, то с указанием источника.
2. Контроль версий фактов и отслеживание их изменений.
3. Приоритет на самые свежие и при этом авторитетные сведения.
То есть, фактически, позволяет более качественно реализовать базовые идеи Graphiti.
Какие создаём сущности:
1. Episode. Стандартная сущность Graphiti. Туда летит всё, что происходит в системе.
2. Event. Конкретное событие внутри эпизода. В полях указываем его время, а также участников.
3. Fact. Ключ факта. В котором задаём идентификатор смысла. То есть отвечаем на вопрос «о чём факт?».
4. FactVersion. Версия факта. Поля: штамп времени (когда стал известен факт), значение для ключа, уверенность в достоверности факта (от 0 до 1), а также ttl факта (как скоро устареет).
5. Source/Evidence. Источники, поддерживающие версию. У источника есть поле weight, обозначающее степень авторитетности.
Связи между сущностями:
1. (Episode)-[:CONTAINS]->(Event)
2. (Event)-[:REFERENCES]->(Fact)
3. (Fact)-[:HAS_VERSION]->(FactVersion)
4. (Fact)-[:LATEST]->(FactVersion)
5. (FactVersion)-[:SUPPORTED_BY]->(Source)
Такая структура позволяет достаточно точно оценить каждый факт в системе.
Используем уже описанные выше параметры и их сочетания:
1. confidence – насколько сама модель, при записи факта, была уверена в его достоверности.
2. Добавляем функцию «затухания» факта со временем. В ней используем timestamp версии факта.
3. weight источника. Выбираем более авторитетный. Или только источники с авторитетностью выше определённого порога.
4. Время жизни факта. Если на момент «сейчас» факт, даже latest, уже устарел, то его не учитываем.
В итоге получаем достаточно качественную и универсальную архитектуру темпорального графа, который можно применять для широкого круга задач.

Добавить комментарий