diff --git a/application/api/user/routes.py b/application/api/user/routes.py index fdff2e9..b80562b 100644 --- a/application/api/user/routes.py +++ b/application/api/user/routes.py @@ -84,6 +84,19 @@ def api_feedback(): ) return {"status": http.client.responses.get(response.status_code, "ok")} +@user.route("/api/delete_by_ids", methods=["get"]) +def delete_by_ids(): + """Delete by ID. These are the IDs in the vectorstore""" + + ids = request.args.get("path") + if not ids: + return {"status": "error"} + + if settings.VECTOR_STORE == "faiss": + result = vectors_collection.delete_index(ids=ids) + if result: + return {"status": "ok"} + return {"status": "error"} @user.route("/api/delete_old", methods=["get"]) def delete_old(): diff --git a/application/vectorstore/faiss.py b/application/vectorstore/faiss.py index e8960fe..3a0a7b8 100644 --- a/application/vectorstore/faiss.py +++ b/application/vectorstore/faiss.py @@ -27,6 +27,9 @@ class FaissStore(BaseVectorStore): def save_local(self, *args, **kwargs): return self.docsearch.save_local(*args, **kwargs) + def delete_index(self, *args, **kwargs): + return self.docsearch.delete(*args, **kwargs) + def assert_embedding_dimensions(self, embeddings): """ Check that the word embedding dimension of the docsearch index matches @@ -40,5 +43,4 @@ class FaissStore(BaseVectorStore): docsearch_index_dimension = self.docsearch.index.d if word_embedding_dimension != docsearch_index_dimension: raise ValueError(f"word_embedding_dimension ({word_embedding_dimension}) " + - f"!= docsearch_index_word_embedding_dimension ({docsearch_index_dimension})") - + f"!= docsearch_index_word_embedding_dimension ({docsearch_index_dimension})") \ No newline at end of file