mirror of
https://github.com/open-webui/open-webui
synced 2025-06-12 09:23:05 +00:00
Update knowledge.py
Improve Error Handling ReIndexing Knowledge Database
This commit is contained in:
parent
1349bc47b1
commit
12fd7c8cb9
@ -178,10 +178,26 @@ async def reindex_knowledge_files(request: Request, user=Depends(get_verified_us
|
|||||||
|
|
||||||
log.info(f"Starting reindexing for {len(knowledge_bases)} knowledge bases")
|
log.info(f"Starting reindexing for {len(knowledge_bases)} knowledge bases")
|
||||||
|
|
||||||
for knowledge_base in knowledge_bases:
|
deleted_knowledge_bases = []
|
||||||
try:
|
|
||||||
files = Files.get_files_by_ids(knowledge_base.data.get("file_ids", []))
|
|
||||||
|
|
||||||
|
for knowledge_base in knowledge_bases:
|
||||||
|
# -- Robust error handling for missing or invalid data
|
||||||
|
if not knowledge_base.data or not isinstance(knowledge_base.data, dict):
|
||||||
|
log.warning(
|
||||||
|
f"Knowledge base {knowledge_base.id} has no data or invalid data ({knowledge_base.data!r}). Deleting."
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
Knowledges.delete_knowledge_by_id(id=knowledge_base.id)
|
||||||
|
deleted_knowledge_bases.append(knowledge_base.id)
|
||||||
|
except Exception as e:
|
||||||
|
log.error(
|
||||||
|
f"Failed to delete invalid knowledge base {knowledge_base.id}: {e}"
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
file_ids = knowledge_base.data.get("file_ids", [])
|
||||||
|
files = Files.get_files_by_ids(file_ids)
|
||||||
try:
|
try:
|
||||||
if VECTOR_DB_CLIENT.has_collection(collection_name=knowledge_base.id):
|
if VECTOR_DB_CLIENT.has_collection(collection_name=knowledge_base.id):
|
||||||
VECTOR_DB_CLIENT.delete_collection(
|
VECTOR_DB_CLIENT.delete_collection(
|
||||||
@ -189,10 +205,7 @@ async def reindex_knowledge_files(request: Request, user=Depends(get_verified_us
|
|||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error(f"Error deleting collection {knowledge_base.id}: {str(e)}")
|
log.error(f"Error deleting collection {knowledge_base.id}: {str(e)}")
|
||||||
raise HTTPException(
|
continue # Skip, don't raise
|
||||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
||||||
detail=f"Error deleting vector DB collection",
|
|
||||||
)
|
|
||||||
|
|
||||||
failed_files = []
|
failed_files = []
|
||||||
for file in files:
|
for file in files:
|
||||||
@ -213,10 +226,8 @@ async def reindex_knowledge_files(request: Request, user=Depends(get_verified_us
|
|||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.error(f"Error processing knowledge base {knowledge_base.id}: {str(e)}")
|
log.error(f"Error processing knowledge base {knowledge_base.id}: {str(e)}")
|
||||||
raise HTTPException(
|
# Don't raise, just continue
|
||||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
continue
|
||||||
detail=f"Error processing knowledge base",
|
|
||||||
)
|
|
||||||
|
|
||||||
if failed_files:
|
if failed_files:
|
||||||
log.warning(
|
log.warning(
|
||||||
@ -225,7 +236,9 @@ async def reindex_knowledge_files(request: Request, user=Depends(get_verified_us
|
|||||||
for failed in failed_files:
|
for failed in failed_files:
|
||||||
log.warning(f"File ID: {failed['file_id']}, Error: {failed['error']}")
|
log.warning(f"File ID: {failed['file_id']}, Error: {failed['error']}")
|
||||||
|
|
||||||
log.info("Reindexing completed successfully")
|
log.info(
|
||||||
|
f"Reindexing completed. Deleted {len(deleted_knowledge_bases)} invalid knowledge bases: {deleted_knowledge_bases}"
|
||||||
|
)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user