Browse Source

Add ability to clear local embeddings

vishnukvmd 1 năm trước cách đây
mục cha
commit
c35ee381d3

+ 1 - 0
lib/generated/intl/messages_en.dart

@@ -396,6 +396,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "claimed": MessageLookupByLibrary.simpleMessage("Claimed"),
         "claimedStorageSoFar": m7,
         "clearCaches": MessageLookupByLibrary.simpleMessage("Clear caches"),
+        "clearIndexes": MessageLookupByLibrary.simpleMessage("Clear indexes"),
         "click": MessageLookupByLibrary.simpleMessage("• Click"),
         "clickOnTheOverflowMenu": MessageLookupByLibrary.simpleMessage(
             "• Click on the overflow menu"),

+ 10 - 0
lib/generated/l10n.dart

@@ -2906,6 +2906,16 @@ class S {
     );
   }
 
+  /// `Clear indexes`
+  String get clearIndexes {
+    return Intl.message(
+      'Clear indexes',
+      name: 'clearIndexes',
+      desc: '',
+      args: [],
+    );
+  }
+
   /// `Select folders for backup`
   String get selectFoldersForBackup {
     return Intl.message(

+ 1 - 0
lib/l10n/intl_en.arb

@@ -412,6 +412,7 @@
   "status": "Status",
   "indexedItems": "Indexed items",
   "pendingItems": "Pending items",
+  "clearIndexes": "Clear indexes",
   "selectFoldersForBackup": "Select folders for backup",
   "selectedFoldersWillBeEncryptedAndBackedUp": "Selected folders will be encrypted and backed up",
   "unselectAll": "Unselect all",

+ 13 - 0
lib/services/semantic_search/semantic_search_service.dart

@@ -107,6 +107,19 @@ class SemanticSearchService {
     );
   }
 
+  Future<void> clearIndexes() async {
+    await ObjectBox.instance
+        .getEmbeddingBox()
+        .query(
+          Embedding_.model.equals(
+            _mlFramework.getFrameworkName() + "-" + kModelName,
+          ),
+        )
+        .build()
+        .removeAsync();
+    _logger.info("Indexes cleared for ${_mlFramework.getFrameworkName()}");
+  }
+
   void _setupCachedEmbeddings() {
     ObjectBox.instance
         .getEmbeddingBox()

+ 23 - 1
lib/ui/settings/machine_learning_settings_page.dart

@@ -112,7 +112,29 @@ class _MachineLearningSettingsPageState
           height: 12,
         ),
         hasEnabled
-            ? const MagicSearchIndexStatsWidget()
+            ? Column(
+                children: [
+                  const MagicSearchIndexStatsWidget(),
+                  const SizedBox(
+                    height: 12,
+                  ),
+                  MenuItemWidget(
+                    leadingIcon: Icons.delete_sweep_outlined,
+                    captionedTextWidget: CaptionedTextWidget(
+                      title: S.of(context).clearIndexes,
+                    ),
+                    menuItemColor: getEnteColorScheme(context).fillFaint,
+                    singleBorderRadius: 8,
+                    alwaysShowSuccessState: true,
+                    onTap: () async {
+                      await SemanticSearchService.instance.clearIndexes();
+                      if (mounted) {
+                        setState(() => {});
+                      }
+                    },
+                  ),
+                ],
+              )
             : const SizedBox.shrink(),
       ],
     );