@@ -24,11 +24,10 @@ class Neo4jCommunityGraphDB(Neo4jGraphDB):
2424 def __init__ (self , config : Neo4jGraphDBConfig ):
2525 assert config .auto_create is False
2626 assert config .use_multi_db is False
27- # Call parent init
28- super ().__init__ (config )
29-
3027 # Init vector database
3128 self .vec_db = VecDBFactory .from_config (config .vec_config )
29+ # Call parent init
30+ super ().__init__ (config )
3231
3332 def create_index (
3433 self ,
@@ -239,6 +238,7 @@ def _create_basic_property_indexes(self) -> None:
239238 Create standard B-tree indexes on user_name when use Shared Database
240239 Multi-Tenant Mode
241240 """
241+ # Step 1: Neo4j indexes
242242 try :
243243 with self .driver .session (database = self .db_name ) as session :
244244 session .run ("""
@@ -270,6 +270,25 @@ def _create_basic_property_indexes(self) -> None:
270270 except Exception as e :
271271 logger .warning (f"Failed to create basic property indexes: { e } " )
272272
273+ # Step 2: Qdrant payload indexes
274+ try :
275+ # Qdrant supports `create_payload_index`, which is idempotent
276+ self .vec_db .client .create_payload_index (
277+ collection_name = self .vec_db .config .collection_name ,
278+ field_name = "user_name" ,
279+ field_schema = "keyword" ,
280+ )
281+ logger .debug ("Qdrant payload index on 'user_name' ensured." )
282+
283+ self .vec_db .client .create_payload_index (
284+ collection_name = self .vec_db .config .collection_name ,
285+ field_name = "memory_type" ,
286+ field_schema = "keyword" ,
287+ )
288+ logger .debug ("Qdrant payload index on 'memory_type' ensured." )
289+ except Exception as e :
290+ logger .warning (f"Failed to create Qdrant payload indexes: { e } " )
291+
273292 def _parse_node (self , node_data : dict [str , Any ]) -> dict [str , Any ]:
274293 """Parse Neo4j node and optionally fetch embedding from vector DB."""
275294 node = node_data .copy ()
0 commit comments