diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index ca090efa22..fdc14c4c77 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -222,10 +222,11 @@ class PersistentConfig(Generic[T]): class AppConfig: - _state: dict[str, PersistentConfig] _redis: Union[redis.Redis, redis.cluster.RedisCluster] = None _redis_key_prefix: str + _state: dict[str, PersistentConfig] + def __init__( self, redis_url: Optional[str] = None, @@ -233,9 +234,8 @@ class AppConfig: redis_cluster: Optional[bool] = False, redis_key_prefix: str = "open-webui", ): - super().__setattr__("_state", {}) - super().__setattr__("_redis_key_prefix", redis_key_prefix) if redis_url: + super().__setattr__("_redis_key_prefix", redis_key_prefix) super().__setattr__( "_redis", get_redis_connection( @@ -246,6 +246,8 @@ class AppConfig: ), ) + super().__setattr__("_state", {}) + def __setattr__(self, key, value): if isinstance(value, PersistentConfig): self._state[key] = value diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index aec8de6846..65da1592e1 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/backend/open_webui/retrieval/utils.py @@ -127,7 +127,13 @@ def query_doc_with_hybrid_search( hybrid_bm25_weight: float, ) -> dict: try: - if not collection_result.documents[0]: + if ( + not collection_result + or not hasattr(collection_result, "documents") + or not collection_result.documents + or len(collection_result.documents) == 0 + or not collection_result.documents[0] + ): log.warning(f"query_doc_with_hybrid_search:no_docs {collection_name}") return {"documents": [], "metadatas": [], "distances": []}