Timothy Jaeryang Baek преди 2 седмици
родител
ревизия
6e4a2f18e1
променени са 2 файла, в които са добавени 12 реда и са изтрити 4 реда
  1. 5 3
      backend/open_webui/config.py
  2. 7 1
      backend/open_webui/retrieval/utils.py

+ 5 - 3
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

+ 7 - 1
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": []}