Просмотр исходного кода

fix: Handle AttributeError in hybrid search with reranking (#17046)

- Split attribute existence checks from document content checks
- Added hasattr() check for metadatas attribute
- Prevents AttributeError when collection_result is missing attributes
- Maintains all original validation logic

Fixes #17046
krishna-medapati 3 месяцев назад
Родитель
Сommit
684324ae9e
1 измененных файлов с 9 добавлено и 1 удалено
  1. 9 1
      backend/open_webui/retrieval/utils.py

+ 9 - 1
backend/open_webui/retrieval/utils.py

@@ -160,10 +160,18 @@ def query_doc_with_hybrid_search(
     hybrid_bm25_weight: float,
 ) -> dict:
     try:
+        # First check if collection_result has the required attributes
         if (
             not collection_result
             or not hasattr(collection_result, "documents")
-            or not collection_result.documents
+            or not hasattr(collection_result, "metadatas")
+        ):
+            log.warning(f"query_doc_with_hybrid_search:no_docs {collection_name}")
+            return {"documents": [], "metadatas": [], "distances": []}
+        
+        # Now safely check the documents content after confirming attributes exist
+        if (
+            not collection_result.documents
             or len(collection_result.documents) == 0
             or not collection_result.documents[0]
         ):