Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions veadk/database/database_adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,17 @@ def query(self, query: str, index: str, top_k: int = 0) -> list:
logger.error(f"Failed to search from Redis: index={index} error={e}")
raise e

def delete(self, index: str) -> bool:
logger.debug(f"Deleting key from Redis database: index={index}")
try:
self.client.delete(key=index)
return True
except Exception as e:
logger.error(
f"Failed to delete key from Redis database: index={index} error={e}"
)
return False

def delete_doc(self, index: str, id: str) -> bool:
logger.debug(f"Deleting document from Redis database: index={index} id={id}")
try:
Expand Down Expand Up @@ -135,6 +146,17 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:

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

def delete(self, index: str) -> bool:
logger.debug(f"Deleting table from SQL database: table_name={index}")
try:
self.client.delete(table=index)
return True
except Exception as e:
logger.error(
f"Failed to delete table from SQL database: table_name={index} error={e}"
)
return False

def delete_doc(self, index: str, id: str) -> bool:
logger.debug(f"Deleting document from SQL database: table_name={index} id={id}")
try:
Expand Down Expand Up @@ -201,6 +223,18 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:
top_k=top_k,
)

def delete(self, index: str) -> bool:
self._validate_index(index)
logger.debug(f"Deleting collection from vector database: index={index}")
try:
self.client.delete(collection_name=index)
return True
except Exception as e:
logger.error(
f"Failed to delete collection from vector database: index={index} error={e}"
)
return False

def delete_doc(self, index: str, id: str) -> bool:
self._validate_index(index)
logger.debug(f"Deleting documents from vector database: index={index} id={id}")
Expand Down Expand Up @@ -278,6 +312,11 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:

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

def delete(self, index: str) -> bool:
self._validate_index(index)
logger.debug(f"Deleting collection from Viking database: index={index}")
return self.client.delete(name=index)

def delete_doc(self, index: str, id: str) -> bool:
self._validate_index(index)
logger.debug(f"Deleting documents from vector database: index={index} id={id}")
Expand Down Expand Up @@ -324,6 +363,11 @@ def query(self, query: str, index: str, top_k: int, **kwargs):
result = self.client.query(query, collection_name=index, top_k=top_k, **kwargs)
return result

def delete(self, index: str) -> bool:
self._validate_index(index)
logger.debug(f"Deleting collection from Viking database memory: index={index}")
raise NotImplementedError("VikingMemoryDatabase does not support delete")

def delete_docs(self, index: str, ids: list[int]):
raise NotImplementedError("VikingMemoryDatabase does not support delete_docs")

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

def delete(self, index: str) -> bool:
return self.client.delete()

def delete_doc(self, index: str, id: str) -> bool:
return self.client.delete_doc(id)

Expand Down
1 change: 1 addition & 0 deletions veadk/database/local_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ def query(self, query: str, **kwargs: Any) -> list[str]:

def delete(self, **kwargs: Any):
self.data = {}
return True

def add(self, texts: list[str], **kwargs: Any):
return self.add_texts(texts)
Expand Down
36 changes: 16 additions & 20 deletions veadk/database/viking/viking_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@
search_knowledge_path = "/api/knowledge/collection/search_knowledge"
list_collections_path = "/api/knowledge/collection/list"
get_collections_path = "/api/knowledge/collection/info"
doc_del_path = "/api/knowledge/collection/delete"
doc_add_path = "/api/knowledge/doc/add"
doc_info_path = "/api/knowledge/doc/info"
doc_del_path = "/api/collection/drop"
list_docs_path = "/api/knowledge/point/list"
delete_docs_path = "/api/knowledge/point/delete"

Expand Down Expand Up @@ -255,9 +255,9 @@ def add(
}

def delete(self, **kwargs: Any):
collection_name = kwargs.get("collection_name")
resource_id = kwargs.get("resource_id")
request_param = {"collection_name": collection_name, "resource_id": resource_id}
name = kwargs.get("name")
project = kwargs.get("project", self.config.project)
request_param = {"name": name, "project": project}
doc_del_req = prepare_request(
method="POST", path=doc_del_path, config=self.config, data=request_param
)
Expand All @@ -270,8 +270,8 @@ def delete(self, **kwargs: Any):
result = rsp.json()
if result["code"] != 0:
logger.error(f"Error in add_doc: {result['message']}")
return {"error": result["message"]}
return {}
return False
return True

def query(self, query: str, **kwargs: Any) -> list[str]:
"""
Expand Down Expand Up @@ -413,19 +413,17 @@ def list_docs(
"limit": limit,
}

create_collection_req = prepare_request(
list_doc_req = prepare_request(
method="POST",
path=list_docs_path,
config=self.config,
data=request_params,
)
resp = requests.request(
method=create_collection_req.method,
url="https://{}{}".format(
g_knowledge_base_domain, create_collection_req.path
),
headers=create_collection_req.headers,
data=create_collection_req.body,
method=list_doc_req.method,
url="https://{}{}".format(g_knowledge_base_domain, list_doc_req.path),
headers=list_doc_req.headers,
data=list_doc_req.body,
)

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

create_collection_req = prepare_request(
delete_by_id_req = prepare_request(
method="POST",
path=delete_docs_path,
config=self.config,
data=request_params,
)
resp = requests.request(
method=create_collection_req.method,
url="https://{}{}".format(
g_knowledge_base_domain, create_collection_req.path
),
headers=create_collection_req.headers,
data=create_collection_req.body,
method=delete_by_id_req.method,
url="https://{}{}".format(g_knowledge_base_domain, delete_by_id_req.path),
headers=delete_by_id_req.headers,
data=delete_by_id_req.body,
)

result = resp.json()
Expand Down
4 changes: 4 additions & 0 deletions veadk/knowledgebase/knowledgebase.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@ def search(self, query: str, app_name: str, top_k: int | None = None) -> list[st
logger.warning(f"No documents found in knowledgebase. Query: {query}")
return result

def delete(self, app_name: str) -> bool:
index = build_knowledgebase_index(app_name)
return self.adapter.delete(index=index)

def delete_doc(self, app_name: str, id: str) -> bool:
index = build_knowledgebase_index(app_name)
return self.adapter.delete_doc(index=index, id=id)
Expand Down