Skip to content

Commit 5f57458

Browse files
authored
feat(database): delete kb method (#148)
* feat: delete kb on viking and vector * fix: fix viking delete
1 parent 26c4755 commit 5f57458

File tree

4 files changed

+68
-20
lines changed

4 files changed

+68
-20
lines changed

veadk/database/database_adapter.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,17 @@ def query(self, query: str, index: str, top_k: int = 0) -> list:
5454
logger.error(f"Failed to search from Redis: index={index} error={e}")
5555
raise e
5656

57+
def delete(self, index: str) -> bool:
58+
logger.debug(f"Deleting key from Redis database: index={index}")
59+
try:
60+
self.client.delete(key=index)
61+
return True
62+
except Exception as e:
63+
logger.error(
64+
f"Failed to delete key from Redis database: index={index} error={e}"
65+
)
66+
return False
67+
5768
def delete_doc(self, index: str, id: str) -> bool:
5869
logger.debug(f"Deleting document from Redis database: index={index} id={id}")
5970
try:
@@ -135,6 +146,17 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:
135146

136147
return [item["data"] for item in results]
137148

149+
def delete(self, index: str) -> bool:
150+
logger.debug(f"Deleting table from SQL database: table_name={index}")
151+
try:
152+
self.client.delete(table=index)
153+
return True
154+
except Exception as e:
155+
logger.error(
156+
f"Failed to delete table from SQL database: table_name={index} error={e}"
157+
)
158+
return False
159+
138160
def delete_doc(self, index: str, id: str) -> bool:
139161
logger.debug(f"Deleting document from SQL database: table_name={index} id={id}")
140162
try:
@@ -201,6 +223,18 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:
201223
top_k=top_k,
202224
)
203225

226+
def delete(self, index: str) -> bool:
227+
self._validate_index(index)
228+
logger.debug(f"Deleting collection from vector database: index={index}")
229+
try:
230+
self.client.delete(collection_name=index)
231+
return True
232+
except Exception as e:
233+
logger.error(
234+
f"Failed to delete collection from vector database: index={index} error={e}"
235+
)
236+
return False
237+
204238
def delete_doc(self, index: str, id: str) -> bool:
205239
self._validate_index(index)
206240
logger.debug(f"Deleting documents from vector database: index={index} id={id}")
@@ -278,6 +312,11 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:
278312

279313
return self.client.query(query, collection_name=index, top_k=top_k)
280314

315+
def delete(self, index: str) -> bool:
316+
self._validate_index(index)
317+
logger.debug(f"Deleting collection from Viking database: index={index}")
318+
return self.client.delete(name=index)
319+
281320
def delete_doc(self, index: str, id: str) -> bool:
282321
self._validate_index(index)
283322
logger.debug(f"Deleting documents from vector database: index={index} id={id}")
@@ -324,6 +363,11 @@ def query(self, query: str, index: str, top_k: int, **kwargs):
324363
result = self.client.query(query, collection_name=index, top_k=top_k, **kwargs)
325364
return result
326365

366+
def delete(self, index: str) -> bool:
367+
self._validate_index(index)
368+
logger.debug(f"Deleting collection from Viking database memory: index={index}")
369+
raise NotImplementedError("VikingMemoryDatabase does not support delete")
370+
327371
def delete_docs(self, index: str, ids: list[int]):
328372
raise NotImplementedError("VikingMemoryDatabase does not support delete_docs")
329373

@@ -343,6 +387,9 @@ def add(self, data: list[str], **kwargs):
343387
def query(self, query: str, **kwargs):
344388
return self.client.query(query, **kwargs)
345389

390+
def delete(self, index: str) -> bool:
391+
return self.client.delete()
392+
346393
def delete_doc(self, index: str, id: str) -> bool:
347394
return self.client.delete_doc(id)
348395

veadk/database/local_database.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def query(self, query: str, **kwargs: Any) -> list[str]:
4141

4242
def delete(self, **kwargs: Any):
4343
self.data = {}
44+
return True
4445

4546
def add(self, texts: list[str], **kwargs: Any):
4647
return self.add_texts(texts)

veadk/database/viking/viking_database.py

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@
3838
search_knowledge_path = "/api/knowledge/collection/search_knowledge"
3939
list_collections_path = "/api/knowledge/collection/list"
4040
get_collections_path = "/api/knowledge/collection/info"
41+
doc_del_path = "/api/knowledge/collection/delete"
4142
doc_add_path = "/api/knowledge/doc/add"
4243
doc_info_path = "/api/knowledge/doc/info"
43-
doc_del_path = "/api/collection/drop"
4444
list_docs_path = "/api/knowledge/point/list"
4545
delete_docs_path = "/api/knowledge/point/delete"
4646

@@ -255,9 +255,9 @@ def add(
255255
}
256256

257257
def delete(self, **kwargs: Any):
258-
collection_name = kwargs.get("collection_name")
259-
resource_id = kwargs.get("resource_id")
260-
request_param = {"collection_name": collection_name, "resource_id": resource_id}
258+
name = kwargs.get("name")
259+
project = kwargs.get("project", self.config.project)
260+
request_param = {"name": name, "project": project}
261261
doc_del_req = prepare_request(
262262
method="POST", path=doc_del_path, config=self.config, data=request_param
263263
)
@@ -270,8 +270,8 @@ def delete(self, **kwargs: Any):
270270
result = rsp.json()
271271
if result["code"] != 0:
272272
logger.error(f"Error in add_doc: {result['message']}")
273-
return {"error": result["message"]}
274-
return {}
273+
return False
274+
return True
275275

276276
def query(self, query: str, **kwargs: Any) -> list[str]:
277277
"""
@@ -413,19 +413,17 @@ def list_docs(
413413
"limit": limit,
414414
}
415415

416-
create_collection_req = prepare_request(
416+
list_doc_req = prepare_request(
417417
method="POST",
418418
path=list_docs_path,
419419
config=self.config,
420420
data=request_params,
421421
)
422422
resp = requests.request(
423-
method=create_collection_req.method,
424-
url="https://{}{}".format(
425-
g_knowledge_base_domain, create_collection_req.path
426-
),
427-
headers=create_collection_req.headers,
428-
data=create_collection_req.body,
423+
method=list_doc_req.method,
424+
url="https://{}{}".format(g_knowledge_base_domain, list_doc_req.path),
425+
headers=list_doc_req.headers,
426+
data=list_doc_req.body,
429427
)
430428

431429
result = resp.json()
@@ -450,19 +448,17 @@ def delete_by_id(self, collection_name: str, id: str) -> bool:
450448
"point_id": id,
451449
}
452450

453-
create_collection_req = prepare_request(
451+
delete_by_id_req = prepare_request(
454452
method="POST",
455453
path=delete_docs_path,
456454
config=self.config,
457455
data=request_params,
458456
)
459457
resp = requests.request(
460-
method=create_collection_req.method,
461-
url="https://{}{}".format(
462-
g_knowledge_base_domain, create_collection_req.path
463-
),
464-
headers=create_collection_req.headers,
465-
data=create_collection_req.body,
458+
method=delete_by_id_req.method,
459+
url="https://{}{}".format(g_knowledge_base_domain, delete_by_id_req.path),
460+
headers=delete_by_id_req.headers,
461+
data=delete_by_id_req.body,
466462
)
467463

468464
result = resp.json()

veadk/knowledgebase/knowledgebase.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ def search(self, query: str, app_name: str, top_k: int | None = None) -> list[st
8181
logger.warning(f"No documents found in knowledgebase. Query: {query}")
8282
return result
8383

84+
def delete(self, app_name: str) -> bool:
85+
index = build_knowledgebase_index(app_name)
86+
return self.adapter.delete(index=index)
87+
8488
def delete_doc(self, app_name: str, id: str) -> bool:
8589
index = build_knowledgebase_index(app_name)
8690
return self.adapter.delete_doc(index=index, id=id)

0 commit comments

Comments
 (0)