@@ -90,11 +90,10 @@ def precheck_index_naming(self):
9090 def model_post_init (self , __context : Any ) -> None :
9191 self .precheck_index_naming ()
9292 # check whether collection exist, if not, create it
93- if not self ._collection_exist () :
94- logger .info (
95- f"VikingDB knowledgebase collection { self .index } does not exist, creating it ..."
93+ if not self .collection_status ()[ "existed" ] :
94+ logger .warning (
95+ f"VikingDB knowledgebase collection { self .index } does not exist, please create it first ..."
9696 )
97- self ._create_collection ()
9897
9998 @override
10099 def add_from_directory (self , directory : str , ** kwargs ) -> bool :
@@ -175,7 +174,7 @@ def add_from_text(self, text: str | list[str], **kwargs) -> bool:
175174 def search (self , query : str , top_k : int = 5 ) -> list :
176175 return self ._search_knowledge (query = query , top_k = top_k )
177176
178- def delete_collection (self ):
177+ def delete_collection (self ) -> bool :
179178 DELETE_COLLECTION_PATH = "/api/knowledge/collection/delete"
180179
181180 response = self ._do_request (
@@ -188,21 +187,25 @@ def delete_collection(self):
188187 )
189188
190189 if response .get ("code" ) != 0 :
191- raise ValueError (f"Error during collection deletion: { response } " )
190+ logger .error (f"Error during collection deletion: { response } " )
191+ return False
192+ return True
192193
193- def delete_doc_by_id (self , doc_id : str ):
194+ def delete_doc_by_id (self , id : str ) -> bool :
194195 DELETE_DOC_PATH = "/api/knowledge/doc/delete"
195196 response = self ._do_request (
196197 body = {
197198 "collection_name" : self .index ,
198199 "project" : self .volcengine_project ,
200+ "doc_id" : id ,
199201 },
200202 path = DELETE_DOC_PATH ,
201203 method = "POST" ,
202204 )
203205
204206 if response .get ("code" ) != 0 :
205- raise ValueError (f"Error during document deletion: { response } " )
207+ return False
208+ return True
206209
207210 def list_docs (self , offset : int = 0 , limit : int = - 1 ):
208211 """List documents in collection.
@@ -272,30 +275,21 @@ def collection_status(self):
272275 path = COLLECTION_INFO_PATH ,
273276 method = "POST" ,
274277 )
275- return response
276-
277- def _collection_exist (self ) -> bool :
278- """List docs in collection, error code 0 means collection exist, error code 1000005 means collection not exist"""
279- LIST_DOC_PATH = "/api/knowledge/doc/list"
280-
281- response = self ._do_request (
282- body = {
283- "collection_name" : self .index ,
284- },
285- path = LIST_DOC_PATH ,
286- method = "POST" ,
287- )
288-
289- if response .get ("code" ) == 0 :
290- return True
291- elif response .get ("code" ) == 1000005 :
292- return False
278+ if response ["code" ] == 0 :
279+ status = response ["data" ]["pipeline_list" ][0 ]["index_list" ][0 ]["status" ]
280+ return {
281+ "existed" : True ,
282+ "status" : status ,
283+ }
284+ elif response ["code" ] == 1000005 :
285+ return {
286+ "existed" : False ,
287+ "status" : None ,
288+ }
293289 else :
294- raise ValueError (
295- f"Error during collection existence check: { response .get ('code' )} "
296- )
290+ raise ValueError (f"Error during collection status: { response } " )
297291
298- def _create_collection (self ) -> None :
292+ def create_collection (self ) -> None :
299293 CREATE_COLLECTION_PATH = "/api/knowledge/collection/create"
300294
301295 response = self ._do_request (
0 commit comments