瀏覽代碼

fix: slow switch to large graph with local embedding enabled

Tienson Qin 2 月之前
父節點
當前提交
0032c4949b

+ 8 - 8
src/main/frontend/handler.cljs

@@ -168,13 +168,7 @@
                repo (or (state/get-current-repo) (:url (first repos)))
                _ (if (empty? repos)
                    (repo-handler/new-db! config/demo-repo)
-                   (restore-and-setup! repo))
-               webgpu-available? (db-browser/<check-webgpu-available?)]
-         (log/info :webgpu-available? webgpu-available?)
-         (when webgpu-available?
-           (p/do! (db-browser/start-inference-worker!)
-                  (db-browser/<connect-db-worker-and-infer-worker!)
-                  (reset! vector-search-flows/*infer-worker-ready true)))
+                   (restore-and-setup! repo))]
          (set-network-watcher!)
 
          (when (util/electron?)
@@ -184,7 +178,13 @@
        (p/catch (fn [e]
                   (js/console.error "Error while restoring repos: " e)))
        (p/finally (fn []
-                    (state/set-db-restoring! false))))
+                    (state/set-db-restoring! false)
+                    (p/let [webgpu-available? (db-browser/<check-webgpu-available?)]
+                      (log/info :webgpu-available? webgpu-available?)
+                      (when webgpu-available?
+                        (p/do! (db-browser/start-inference-worker!)
+                               (db-browser/<connect-db-worker-and-infer-worker!)
+                               (reset! vector-search-flows/*infer-worker-ready true)))))))
 
    (util/<app-wake-up-from-sleep-loop (atom false))
 

+ 2 - 0
src/main/frontend/handler/db_based/vector_search_background_tasks.cljs

@@ -21,6 +21,8 @@
     (m/?< vector-search-flows/infer-worker-ready-flow)
     (when-let [repo (m/?< flows/current-repo-flow)]
       (try
+        ;; Don't block ui render (ui needs data from db-worker)
+        (m/? (m/sleep 1000))
         (c.m/<? (state/<invoke-db-worker :thread-api/vec-search-init-embedding-model repo))
         (m/?< (c.m/clock (* 30 1000)))
         (c.m/<? (state/<invoke-db-worker :thread-api/vec-search-embedding-graph repo))