Add ability to clear local embeddings

This commit is contained in:
vishnukvmd 2023-12-14 11:30:09 +05:30
parent 1c488e86a5
commit c35ee381d3
5 changed files with 48 additions and 1 deletions

View file

@ -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"),

View file

@ -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(

View file

@ -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",

View file

@ -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()

View file

@ -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(),
],
);