Merge pull request #15842 from expruc/fix/handle_remove_files_from_vdb

fix: deleting files from vector DB upon file deletion
This commit is contained in:
Tim Jaeryang Baek 2025-07-19 12:13:03 +04:00 committed by GitHub
commit 2d4675dc1c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -21,6 +21,7 @@ from fastapi import (
from fastapi.responses import FileResponse, StreamingResponse from fastapi.responses import FileResponse, StreamingResponse
from open_webui.constants import ERROR_MESSAGES from open_webui.constants import ERROR_MESSAGES
from open_webui.env import SRC_LOG_LEVELS from open_webui.env import SRC_LOG_LEVELS
from open_webui.retrieval.vector.factory import VECTOR_DB_CLIENT
from open_webui.models.users import Users from open_webui.models.users import Users
from open_webui.models.files import ( from open_webui.models.files import (
@ -286,6 +287,7 @@ async def delete_all_files(user=Depends(get_admin_user)):
if result: if result:
try: try:
Storage.delete_all_files() Storage.delete_all_files()
VECTOR_DB_CLIENT.reset()
except Exception as e: except Exception as e:
log.exception(e) log.exception(e)
log.error("Error deleting files") log.error("Error deleting files")
@ -603,12 +605,12 @@ async def delete_file_by_id(id: str, user=Depends(get_verified_user)):
or user.role == "admin" or user.role == "admin"
or has_access_to_file(id, "write", user) or has_access_to_file(id, "write", user)
): ):
# We should add Chroma cleanup here
result = Files.delete_file_by_id(id) result = Files.delete_file_by_id(id)
if result: if result:
try: try:
Storage.delete_file(file.path) Storage.delete_file(file.path)
VECTOR_DB_CLIENT.delete(collection_name=f"file-{id}")
except Exception as e: except Exception as e:
log.exception(e) log.exception(e)
log.error("Error deleting files") log.error("Error deleting files")