Update edge search (#216)

* update edge fulltext search

* bump version
This commit is contained in:
Preston Rasmussen 2024-11-15 14:32:11 -05:00 committed by GitHub
parent 281fe072cb
commit 52c590878a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 5 additions and 17 deletions

View file

@ -143,7 +143,7 @@ async def edge_search(
search_results: list[list[EntityEdge]] = list( search_results: list[list[EntityEdge]] = list(
await asyncio.gather( 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( edge_similarity_search(
driver, query_vector, None, None, group_ids, 2 * limit, config.sim_min_score driver, query_vector, None, None, group_ids, 2 * limit, config.sim_min_score
), ),

View file

@ -135,8 +135,6 @@ async def get_communities_by_nodes(
async def edge_fulltext_search( async def edge_fulltext_search(
driver: AsyncDriver, driver: AsyncDriver,
query: str, query: str,
source_node_uuid: str | None,
target_node_uuid: str | None,
group_ids: list[str] | None = None, group_ids: list[str] | None = None,
limit=RELEVANT_SCHEMA_LIMIT, limit=RELEVANT_SCHEMA_LIMIT,
) -> list[EntityEdge]: ) -> list[EntityEdge]:
@ -147,10 +145,8 @@ async def edge_fulltext_search(
cypher_query = Query(""" cypher_query = Query("""
CALL db.index.fulltext.queryRelationships("edge_name_and_fact", $query, {limit: $limit}) CALL db.index.fulltext.queryRelationships("edge_name_and_fact", $query, {limit: $limit})
YIELD relationship AS rel, score YIELD relationship AS r, score
MATCH (n:Entity)-[r {uuid: rel.uuid}]->(m:Entity) WITH r, score, startNode(r) AS n, endNode(r) AS m
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])
RETURN RETURN
r.uuid AS uuid, r.uuid AS uuid,
r.group_id AS group_id, r.group_id AS group_id,
@ -170,8 +166,6 @@ async def edge_fulltext_search(
records, _, _ = await driver.execute_query( records, _, _ = await driver.execute_query(
cypher_query, cypher_query,
query=fuzzy_query, query=fuzzy_query,
source_uuid=source_node_uuid,
target_uuid=target_node_uuid,
group_ids=group_ids, group_ids=group_ids,
limit=limit, limit=limit,
database_=DEFAULT_DATABASE, database_=DEFAULT_DATABASE,
@ -600,13 +594,7 @@ async def get_relevant_edges(
) )
for edge in edges for edge in edges
if edge.fact_embedding is not None 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: for result in results:

View file

@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "graphiti-core" name = "graphiti-core"
version = "0.4.0" version = "0.4.1"
description = "A temporal graph building library" description = "A temporal graph building library"
authors = [ authors = [
"Paul Paliychuk <paul@getzep.com>", "Paul Paliychuk <paul@getzep.com>",