don't save duplicate edges (#927)

* don't save duplicate edges

* remove build duplicate edges
This commit is contained in:
Preston Rasmussen 2025-09-24 17:24:57 -04:00 committed by GitHub
parent c794f8881b
commit d6d4bbdeb7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 4 additions and 41 deletions

View file

@ -79,7 +79,6 @@ from graphiti_core.utils.maintenance.community_operations import (
update_community,
)
from graphiti_core.utils.maintenance.edge_operations import (
build_duplicate_of_edges,
build_episodic_edges,
extract_edges,
resolve_extracted_edge,
@ -503,7 +502,7 @@ class Graphiti:
)
# Extract edges and resolve nodes
(nodes, uuid_map, node_duplicates), extracted_edges = await semaphore_gather(
(nodes, uuid_map, _), extracted_edges = await semaphore_gather(
resolve_extracted_nodes(
self.clients,
extracted_nodes,
@ -540,9 +539,7 @@ class Graphiti:
max_coroutines=self.max_coroutines,
)
duplicate_of_edges = build_duplicate_of_edges(episode, now, node_duplicates)
entity_edges = resolved_edges + invalidated_edges + duplicate_of_edges
entity_edges = resolved_edges + invalidated_edges
episodic_edges = build_episodic_edges(nodes, episode.uuid, now)

View file

@ -65,32 +65,6 @@ def build_episodic_edges(
return episodic_edges
def build_duplicate_of_edges(
episode: EpisodicNode,
created_at: datetime,
duplicate_nodes: list[tuple[EntityNode, EntityNode]],
) -> list[EntityEdge]:
is_duplicate_of_edges: list[EntityEdge] = []
for source_node, target_node in duplicate_nodes:
if source_node.uuid == target_node.uuid:
continue
is_duplicate_of_edges.append(
EntityEdge(
source_node_uuid=source_node.uuid,
target_node_uuid=target_node.uuid,
name='IS_DUPLICATE_OF',
group_id=episode.group_id,
fact=f'{source_node.name} is a duplicate of {target_node.name}',
episodes=[episode.uuid],
created_at=created_at,
valid_at=created_at,
)
)
return is_duplicate_of_edges
def build_community_edges(
entity_nodes: list[EntityNode],
community_node: CommunityNode,

View file

@ -282,14 +282,6 @@ async def resolve_extracted_nodes(
resolved_nodes.append(resolved_node)
uuid_map[extracted_node.uuid] = resolved_node.uuid
duplicates: list[int] = resolution.duplicates
if duplicate_idx not in duplicates and duplicate_idx > -1:
duplicates.append(duplicate_idx)
for idx in duplicates:
existing_node = existing_nodes[idx] if idx < len(existing_nodes) else resolved_node
node_duplicates.append((extracted_node, existing_node))
logger.debug(f'Resolved nodes: {[(n.name, n.uuid) for n in resolved_nodes]}')
new_node_duplicates: list[

View file

@ -1,7 +1,7 @@
[project]
name = "graphiti-core"
description = "A temporal graph building library"
version = "0.21.0pre5"
version = "0.21.0pre6"
authors = [
{ name = "Paul Paliychuk", email = "paul@getzep.com" },
{ name = "Preston Rasmussen", email = "preston@getzep.com" },

2
uv.lock generated
View file

@ -783,7 +783,7 @@ wheels = [
[[package]]
name = "graphiti-core"
version = "0.21.0rc5"
version = "0.21.0rc6"
source = { editable = "." }
dependencies = [
{ name = "diskcache" },