diff --git a/graphiti_core/driver/kuzu_driver.py b/graphiti_core/driver/kuzu_driver.py index 8a04a4ac..2f287bb5 100644 --- a/graphiti_core/driver/kuzu_driver.py +++ b/graphiti_core/driver/kuzu_driver.py @@ -140,6 +140,12 @@ class KuzuDriver(GraphDriver): def delete_all_indexes(self, database_: str): pass + async def build_indices_and_constraints(self, delete_existing: bool = False): + # Kuzu doesn't support dynamic index creation like Neo4j or FalkorDB + # Schema and indices are created during setup_schema() + # This method is required by the abstract base class but is a no-op for Kuzu + pass + def setup_schema(self): conn = kuzu.Connection(self.db) conn.execute(SCHEMA_QUERIES) diff --git a/graphiti_core/driver/neptune_driver.py b/graphiti_core/driver/neptune_driver.py index d43d20a1..dc77d8f8 100644 --- a/graphiti_core/driver/neptune_driver.py +++ b/graphiti_core/driver/neptune_driver.py @@ -243,6 +243,12 @@ class NeptuneDriver(GraphDriver): if client.indices.exists(index=index_name): client.indices.delete(index=index_name) + async def build_indices_and_constraints(self, delete_existing: bool = False): + # Neptune uses OpenSearch (AOSS) for indexing + if delete_existing: + await self.delete_aoss_indices() + await self.create_aoss_indices() + def run_aoss_query(self, name: str, query_text: str, limit: int = 10) -> dict[str, Any]: for index in aoss_indices: if name.lower() == index['index_name']: diff --git a/tests/test_graphiti_mock.py b/tests/test_graphiti_mock.py index f2ba89ec..62a8ffd3 100644 --- a/tests/test_graphiti_mock.py +++ b/tests/test_graphiti_mock.py @@ -918,8 +918,8 @@ async def test_get_communities_by_nodes(graph_driver, mock_embedder): async def test_edge_fulltext_search( graph_driver, mock_embedder, mock_llm_client, mock_cross_encoder_client ): - if graph_driver.provider == GraphProvider.FALKORDB: - pytest.skip('Skipping as tests fail on Falkordb') + if graph_driver.provider in [GraphProvider.FALKORDB, GraphProvider.KUZU]: + pytest.skip('Skipping as fulltext indexing not supported for FalkorDB and Kuzu') graphiti = Graphiti( graph_driver=graph_driver, @@ -1307,8 +1307,8 @@ async def test_edge_bfs_search(graph_driver, mock_embedder): async def test_node_fulltext_search( graph_driver, mock_embedder, mock_llm_client, mock_cross_encoder_client ): - if graph_driver.provider == GraphProvider.FALKORDB: - pytest.skip('Skipping as tests fail on Falkordb') + if graph_driver.provider in [GraphProvider.FALKORDB, GraphProvider.KUZU]: + pytest.skip('Skipping as fulltext indexing not supported for FalkorDB and Kuzu') graphiti = Graphiti( graph_driver=graph_driver, @@ -1516,8 +1516,8 @@ async def test_node_bfs_search(graph_driver, mock_embedder): async def test_episode_fulltext_search( graph_driver, mock_embedder, mock_llm_client, mock_cross_encoder_client ): - if graph_driver.provider == GraphProvider.FALKORDB: - pytest.skip('Skipping as tests fail on Falkordb') + if graph_driver.provider in [GraphProvider.FALKORDB, GraphProvider.KUZU]: + pytest.skip('Skipping as fulltext indexing not supported for FalkorDB and Kuzu') graphiti = Graphiti( graph_driver=graph_driver, @@ -1567,8 +1567,8 @@ async def test_episode_fulltext_search( async def test_community_fulltext_search( graph_driver, mock_embedder, mock_llm_client, mock_cross_encoder_client ): - if graph_driver.provider == GraphProvider.FALKORDB: - pytest.skip('Skipping as tests fail on Falkordb') + if graph_driver.provider in [GraphProvider.FALKORDB, GraphProvider.KUZU]: + pytest.skip('Skipping as fulltext indexing not supported for FalkorDB and Kuzu') graphiti = Graphiti( graph_driver=graph_driver,