fix: cleanup orphaned entities after episode deletion #1130
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes an issue where orphaned Entity nodes were not cleaned up when deleting episodes via remove_episode().
Due to LLM non-determinism, Graphiti can sometimes create Entity nodes without corresponding MENTIONS relationships. These entities were invisible to the existing cleanup logic and accumulated indefinitely in the database.
Type of Change
Objective
Fix an issue where Entity nodes without MENTIONS relationships are not cleaned up when an episode is deleted.
Due to LLM non-determinism or partial ingestion failures, entities can be created without corresponding MENTIONS edges. The existing remove_episode() logic only considers entities reachable via MENTIONS, causing these orphaned entities to persist indefinitely and bloat the database.
This PR adds a post-deletion cleanup step that removes all Entity nodes in the same group_id that have zero MENTIONS relationships after an episode is deleted.
Testing
Breaking Changes
No breaking changes. Behavior is strictly additive and limited to cleanup during episode deletion
Checklist
make lintpasses)Related Issues
Closes #1083