From 684324ae9eca79cb44dec54ec82ebb83135536b1 Mon Sep 17 00:00:00 2001 From: krishna-medapati Date: Fri, 7 Nov 2025 23:08:59 +0530 Subject: [PATCH] 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 --- backend/open_webui/retrieval/utils.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index da570330b3..bc89373174 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/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] ):