feat: refresh vector cache on complete

This commit is contained in:
SethBurkart123
2025-05-03 20:40:39 +10:00
parent 6ac54eae4b
commit 63a4bd4211
4 changed files with 12 additions and 15 deletions
+1 -1
View File
@@ -78,7 +78,7 @@
"codemirror": "^6.0.1", "codemirror": "^6.0.1",
"color": "^5.0.0", "color": "^5.0.0",
"dompurify": "^3.2.4", "dompurify": "^3.2.4",
"embeddia": "^1.0.4", "embeddia": "^1.1.0",
"embla-carousel-autoplay": "^8.5.2", "embla-carousel-autoplay": "^8.5.2",
"embla-carousel-svelte": "^8.5.2", "embla-carousel-svelte": "^8.5.2",
"events": "^3.3.0", "events": "^3.3.0",
@@ -1,3 +1,4 @@
import { refreshVectorCache } from '../../search/vector/vectorSearch';
import type { HydratedIndexItem } from '../types'; import type { HydratedIndexItem } from '../types';
import vectorWorker from './vectorWorker.ts?inlineWorker'; import vectorWorker from './vectorWorker.ts?inlineWorker';
import type { SearchResult } from 'embeddia'; import type { SearchResult } from 'embeddia';
@@ -66,6 +67,10 @@ export class VectorWorkerManager {
case 'progress': case 'progress':
if (this.progressCallback) { if (this.progressCallback) {
this.progressCallback(data); this.progressCallback(data);
if (data.status === 'complete') {
refreshVectorCache();
}
} }
break; break;
@@ -134,15 +134,12 @@ export async function performSearch(
dynamicIdToItemMap: Map<string, HydratedIndexItem>, dynamicIdToItemMap: Map<string, HydratedIndexItem>,
showRecentFirst: boolean, showRecentFirst: boolean,
): Promise<CombinedResult[]> { ): Promise<CombinedResult[]> {
const startTime = performance.now();
// Get all results first // Get all results first
const commandResults = searchCommands( const commandResults = searchCommands(
commandsFuse, commandsFuse,
query, query,
commandIdToItemMap, commandIdToItemMap,
); );
const commandEndTime = performance.now();
const dynamicResults = searchDynamicItems( const dynamicResults = searchDynamicItems(
dynamicContentFuse, dynamicContentFuse,
query, query,
@@ -150,23 +147,12 @@ export async function performSearch(
10, 10,
showRecentFirst, showRecentFirst,
); );
const fuseEndTime = performance.now();
// Get vector results in parallel // Get vector results in parallel
let vectorResults: VectorSearchResult[] = []; let vectorResults: VectorSearchResult[] = [];
try { try {
vectorResults = await searchVectors(query, 10); vectorResults = await searchVectors(query, 10);
} catch (e) {} } catch (e) {}
const vectorEndTime = performance.now();
console.log("Vector results:", vectorResults);
// Log timings
console.log(`Command search took ${commandEndTime - startTime} milliseconds`);
console.log(
`Dynamic search took ${fuseEndTime - commandEndTime} milliseconds`,
);
console.log(`Vector search took ${vectorEndTime - fuseEndTime} milliseconds`);
// Create a map to store our final results, using ID as key to avoid duplicates // Create a map to store our final results, using ID as key to avoid duplicates
const resultMap = new Map<string, CombinedResult>(); const resultMap = new Map<string, CombinedResult>();
@@ -30,4 +30,10 @@ export async function searchVectors(query: string, topK: number = 10): Promise<V
}); });
return results as VectorSearchResult[]; return results as VectorSearchResult[];
}
export async function refreshVectorCache() {
if (!vectorIndex) await initVectorSearch();
vectorIndex!.clearIndexedDBCache();
vectorIndex!.preloadIndexedDB();
} }