From f95331c8f530f35d26101231c71d4ec791f2cd22 Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Fri, 5 Jul 2024 13:12:51 +0530 Subject: [PATCH] [mob][photos] Minor changes --- .../semantic_search_service.dart | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/mobile/lib/services/machine_learning/semantic_search/semantic_search_service.dart b/mobile/lib/services/machine_learning/semantic_search/semantic_search_service.dart index e8f8e636ef..1cc99073c2 100644 --- a/mobile/lib/services/machine_learning/semantic_search/semantic_search_service.dart +++ b/mobile/lib/services/machine_learning/semantic_search/semantic_search_service.dart @@ -42,7 +42,7 @@ class SemanticSearchService { bool _hasInitialized = false; bool _textModelIsLoaded = false; bool _isSyncing = false; - List _cachedEmbeddings = []; + List _cachedImageEmbeddings = []; Future<(String, List)>? _searchScreenRequest; String? _latestPendingQuery; @@ -59,10 +59,10 @@ class SemanticSearchService { _hasInitialized = true; await EmbeddingStore.instance.init(); await EmbeddingsDB.instance.init(); - await _loadEmbeddings(); + await _loadImageEmbeddings(); Bus.instance.on().listen((event) { _embeddingLoaderDebouncer.run(() async { - await _loadEmbeddings(); + await _loadImageEmbeddings(); }); }); @@ -85,7 +85,9 @@ class SemanticSearchService { } bool isMagicSearchEnabledAndReady() { - return LocalSettings.instance.hasEnabledMagicSearch() && _textModelIsLoaded; + return LocalSettings.instance.hasEnabledMagicSearch() && + _textModelIsLoaded && + _cachedImageEmbeddings.isNotEmpty; } // searchScreenQuery should only be used for the user initiate query on the search screen. @@ -119,7 +121,7 @@ class SemanticSearchService { Future getIndexStatus() async { final indexableFileIDs = await getIndexableFileIDs(); return IndexStatus( - min(_cachedEmbeddings.length, indexableFileIDs.length), + min(_cachedImageEmbeddings.length, indexableFileIDs.length), (await _getFileIDsToBeIndexed()).length, ); } @@ -129,16 +131,17 @@ class SemanticSearchService { _logger.info("Indexes cleared"); } - Future _loadEmbeddings() async { + Future _loadImageEmbeddings() async { _logger.info("Pulling cached embeddings"); final startTime = DateTime.now(); - _cachedEmbeddings = await EmbeddingsDB.instance.getAll(); + _cachedImageEmbeddings = await EmbeddingsDB.instance.getAll(); final endTime = DateTime.now(); _logger.info( - "Loading ${_cachedEmbeddings.length} took: ${(endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch)}ms", + "Loading ${_cachedImageEmbeddings.length} took: ${(endTime.millisecondsSinceEpoch - startTime.millisecondsSinceEpoch)}ms", ); Bus.instance.fire(EmbeddingCacheUpdatedEvent()); - _logger.info("Cached embeddings: " + _cachedEmbeddings.length.toString()); + _logger + .info("Cached embeddings: " + _cachedImageEmbeddings.length.toString()); } Future> _getFileIDsToBeIndexed() async { @@ -303,7 +306,7 @@ class SemanticSearchService { final List queryResults = await _computer.compute( computeBulkSimilarities, param: { - "imageEmbeddings": _cachedEmbeddings, + "imageEmbeddings": _cachedImageEmbeddings, "textEmbedding": textEmbedding, "minimumSimilarity": minimumSimilarity, },