@@ -54,6 +54,12 @@ 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_docs (self , index : str , ids : list [int ]): ...
58+
59+ def list_docs (
60+ self , index : str , offset : int = 0 , limit : int = 100
61+ ) -> list [dict ]: ...
62+
5763
5864class RelationalDatabaseAdapter :
5965 def __init__ (self , client ):
@@ -108,6 +114,12 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:
108114
109115 return [item ["data" ] for item in results ]
110116
117+ def delete_docs (self , index : str , ids : list [int ]): ...
118+
119+ def list_docs (
120+ self , index : str , offset : int = 0 , limit : int = 100
121+ ) -> list [dict ]: ...
122+
111123
112124class VectorDatabaseAdapter :
113125 def __init__ (self , client ):
@@ -152,6 +164,23 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:
152164 top_k = top_k ,
153165 )
154166
167+ def delete_doc (self , index : str , id : str ) -> bool :
168+ self ._validate_index (index )
169+ logger .debug (f"Deleting documents from vector database: index={ index } id={ id } " )
170+ try :
171+ self .client .delete_by_id (collection_name = index , id = id )
172+ return True
173+ except Exception as e :
174+ logger .error (
175+ f"Failed to delete document from vector database: index={ index } id={ id } error={ e } "
176+ )
177+ return False
178+
179+ def list_docs (self , index : str , offset : int = 0 , limit : int = 1000 ) -> list [dict ]:
180+ self ._validate_index (index )
181+ logger .debug (f"Listing documents from vector database: index={ index } " )
182+ return self .client .list_docs (collection_name = index , offset = offset , limit = limit )
183+
155184
156185class VikingDatabaseAdapter :
157186 def __init__ (self , client ):
@@ -212,6 +241,16 @@ def query(self, query: str, index: str, top_k: int) -> list[str]:
212241
213242 return self .client .query (query , collection_name = index , top_k = top_k )
214243
244+ def delete_doc (self , index : str , id : str ) -> bool :
245+ self ._validate_index (index )
246+ logger .debug (f"Deleting documents from vector database: index={ index } id={ id } " )
247+ return self .client .delete_by_id (collection_name = index , id = id )
248+
249+ def list_docs (self , index : str , offset : int , limit : int ) -> list [dict ]:
250+ self ._validate_index (index )
251+ logger .debug (f"Listing documents from vector database: index={ index } " )
252+ return self .client .list_docs (collection_name = index , offset = offset , limit = limit )
253+
215254
216255class VikingMemoryDatabaseAdapter :
217256 def __init__ (self , client ):
@@ -248,6 +287,12 @@ def query(self, query: str, index: str, top_k: int, **kwargs):
248287 result = self .client .query (query , collection_name = index , top_k = top_k , ** kwargs )
249288 return result
250289
290+ def delete_docs (self , index : str , ids : list [int ]):
291+ raise NotImplementedError ("VikingMemoryDatabase does not support delete_docs" )
292+
293+ def list_docs (self , index : str ):
294+ raise NotImplementedError ("VikingMemoryDatabase does not support list_docs" )
295+
251296
252297class LocalDatabaseAdapter :
253298 def __init__ (self , client ):
@@ -261,6 +306,12 @@ def add(self, data: list[str], **kwargs):
261306 def query (self , query : str , ** kwargs ):
262307 return self .client .query (query , ** kwargs )
263308
309+ def delete_doc (self , index : str , id : str ) -> bool :
310+ return self .client .delete_doc (id )
311+
312+ def list_docs (self , index : str , offset : int = 0 , limit : int = 100 ) -> list [dict ]:
313+ return self .client .list_docs (offset = offset , limit = limit )
314+
264315
265316MAPPING = {
266317 "RedisDatabase" : KVDatabaseAdapter ,
0 commit comments