Как покрыть доменную область с помощью Graphiti У данного фреймворка есть три основных сущности: 1

Как покрыть доменную область с помощью Graphiti?

У данного фреймворка есть три основных сущности:

1. Episodes: узлы графа, которые пользователь подаёт извне.

2. Entities: порождаемые узлы, создаваемые LLM при добавлении эпизода.

3. Edges: рёбра между узлами.

Также Graphiti позволяет создавать кастомные Entity и Edge.

При этом количество кастомных сущностей может быть не более 10, а кастомных эпизодов в Graphiti не предусмотрено.

Попробуйте найди область знаний, которую можно покрыть десятком кастомных типов сущностей. Это не так-то просто – я пробовал.

Как быть?

На самом деле, 10 кастомных сущностей/связей – это то количество, которое Graphiti с помощью LLM может создать на базе одного эпизода.

Почему бы не заводить кастомные эпизоды на уровне приложения? А отличаться они будут набором сущностей (Entity&Edges), которые мы передаём в качестве порождаемых при отправке эпизода.

Создаём каталог сущностей, через Pydantic задаём их поля. А потом соотносим их с нужными типами эпизодов.

Таким образом мы решаем следующие проблемы:

1. Покрытие домена детерменированными понятными узлами и связями.

2. Понятное разделение между типами событий, которые отправляет приложение.

3. Анализ информации при извлечении из графа становится проще. Без расплывчатых «Entity», которые могут скрывать в себе всё, что угодно.

Само собой, я не агитирую создавать сущности ради сущностей. Но существуют кейсы, когда их нужно больше десятка. Как быть в таком случае – я описал выше.

p.s.: тут не так давно neo4j обновили интерфейс своего дашборда. И сняли ограничение на 300 узлов в отображаемом графе. Поэтому теперь можно делать скриншоты с 1000+ узлов в интерфейсе. В медиа поста граф, в котором около 20 кастомных Entity.

Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *