From 52c590878ab550d7e22b2bb3c4922e5c74aa5803 Mon Sep 17 00:00:00 2001 From: Preston Rasmussen <109292228+prasmussen15@users.noreply.github.com> Date: Fri, 15 Nov 2024 14:32:11 -0500 Subject: [PATCH] Update edge search (#216) * update edge fulltext search * bump version --- graphiti_core/search/search.py | 2 +- graphiti_core/search/search_utils.py | 18 +++--------------- pyproject.toml | 2 +- 3 files changed, 5 insertions(+), 17 deletions(-) diff --git a/graphiti_core/search/search.py b/graphiti_core/search/search.py index 857f5053..6d065e85 100644 --- a/graphiti_core/search/search.py +++ b/graphiti_core/search/search.py @@ -143,7 +143,7 @@ async def edge_search( search_results: list[list[EntityEdge]] = list( await asyncio.gather( *[ - edge_fulltext_search(driver, query, None, None, group_ids, 2 * limit), + edge_fulltext_search(driver, query, group_ids, 2 * limit), edge_similarity_search( driver, query_vector, None, None, group_ids, 2 * limit, config.sim_min_score ), diff --git a/graphiti_core/search/search_utils.py b/graphiti_core/search/search_utils.py index fb8bb0c8..32eef8bf 100644 --- a/graphiti_core/search/search_utils.py +++ b/graphiti_core/search/search_utils.py @@ -135,8 +135,6 @@ async def get_communities_by_nodes( async def edge_fulltext_search( driver: AsyncDriver, query: str, - source_node_uuid: str | None, - target_node_uuid: str | None, group_ids: list[str] | None = None, limit=RELEVANT_SCHEMA_LIMIT, ) -> list[EntityEdge]: @@ -147,10 +145,8 @@ async def edge_fulltext_search( cypher_query = Query(""" CALL db.index.fulltext.queryRelationships("edge_name_and_fact", $query, {limit: $limit}) - YIELD relationship AS rel, score - MATCH (n:Entity)-[r {uuid: rel.uuid}]->(m:Entity) - WHERE ($source_uuid IS NULL OR n.uuid IN [$source_uuid, $target_uuid]) - AND ($target_uuid IS NULL OR m.uuid IN [$source_uuid, $target_uuid]) + YIELD relationship AS r, score + WITH r, score, startNode(r) AS n, endNode(r) AS m RETURN r.uuid AS uuid, r.group_id AS group_id, @@ -170,8 +166,6 @@ async def edge_fulltext_search( records, _, _ = await driver.execute_query( cypher_query, query=fuzzy_query, - source_uuid=source_node_uuid, - target_uuid=target_node_uuid, group_ids=group_ids, limit=limit, database_=DEFAULT_DATABASE, @@ -600,13 +594,7 @@ async def get_relevant_edges( ) for edge in edges if edge.fact_embedding is not None - ], - *[ - edge_fulltext_search( - driver, edge.fact, source_node_uuid, target_node_uuid, [edge.group_id], limit - ) - for edge in edges - ], + ] ) for result in results: diff --git a/pyproject.toml b/pyproject.toml index 784b19b3..d65c42b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "graphiti-core" -version = "0.4.0" +version = "0.4.1" description = "A temporal graph building library" authors = [ "Paul Paliychuk ",