don't save duplicate edges (#927)
* don't save duplicate edges * remove build duplicate edges
This commit is contained in:
parent
c794f8881b
commit
d6d4bbdeb7
5 changed files with 4 additions and 41 deletions
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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[
|
||||
|
|
|
|||
|
|
@ -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
2
uv.lock
generated
|
|
@ -783,7 +783,7 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "graphiti-core"
|
||||
version = "0.21.0rc5"
|
||||
version = "0.21.0rc6"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "diskcache" },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue