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,
|
update_community,
|
||||||
)
|
)
|
||||||
from graphiti_core.utils.maintenance.edge_operations import (
|
from graphiti_core.utils.maintenance.edge_operations import (
|
||||||
build_duplicate_of_edges,
|
|
||||||
build_episodic_edges,
|
build_episodic_edges,
|
||||||
extract_edges,
|
extract_edges,
|
||||||
resolve_extracted_edge,
|
resolve_extracted_edge,
|
||||||
|
|
@ -503,7 +502,7 @@ class Graphiti:
|
||||||
)
|
)
|
||||||
|
|
||||||
# Extract edges and resolve nodes
|
# 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(
|
resolve_extracted_nodes(
|
||||||
self.clients,
|
self.clients,
|
||||||
extracted_nodes,
|
extracted_nodes,
|
||||||
|
|
@ -540,9 +539,7 @@ class Graphiti:
|
||||||
max_coroutines=self.max_coroutines,
|
max_coroutines=self.max_coroutines,
|
||||||
)
|
)
|
||||||
|
|
||||||
duplicate_of_edges = build_duplicate_of_edges(episode, now, node_duplicates)
|
entity_edges = resolved_edges + invalidated_edges
|
||||||
|
|
||||||
entity_edges = resolved_edges + invalidated_edges + duplicate_of_edges
|
|
||||||
|
|
||||||
episodic_edges = build_episodic_edges(nodes, episode.uuid, now)
|
episodic_edges = build_episodic_edges(nodes, episode.uuid, now)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,32 +65,6 @@ def build_episodic_edges(
|
||||||
return 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(
|
def build_community_edges(
|
||||||
entity_nodes: list[EntityNode],
|
entity_nodes: list[EntityNode],
|
||||||
community_node: CommunityNode,
|
community_node: CommunityNode,
|
||||||
|
|
|
||||||
|
|
@ -282,14 +282,6 @@ async def resolve_extracted_nodes(
|
||||||
resolved_nodes.append(resolved_node)
|
resolved_nodes.append(resolved_node)
|
||||||
uuid_map[extracted_node.uuid] = resolved_node.uuid
|
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]}')
|
logger.debug(f'Resolved nodes: {[(n.name, n.uuid) for n in resolved_nodes]}')
|
||||||
|
|
||||||
new_node_duplicates: list[
|
new_node_duplicates: list[
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[project]
|
[project]
|
||||||
name = "graphiti-core"
|
name = "graphiti-core"
|
||||||
description = "A temporal graph building library"
|
description = "A temporal graph building library"
|
||||||
version = "0.21.0pre5"
|
version = "0.21.0pre6"
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Paul Paliychuk", email = "paul@getzep.com" },
|
{ name = "Paul Paliychuk", email = "paul@getzep.com" },
|
||||||
{ name = "Preston Rasmussen", email = "preston@getzep.com" },
|
{ name = "Preston Rasmussen", email = "preston@getzep.com" },
|
||||||
|
|
|
||||||
2
uv.lock
generated
2
uv.lock
generated
|
|
@ -783,7 +783,7 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "graphiti-core"
|
name = "graphiti-core"
|
||||||
version = "0.21.0rc5"
|
version = "0.21.0rc6"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "diskcache" },
|
{ name = "diskcache" },
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue