@danielsimonjr/memoryjs 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +385 -113
- package/README.md.backup-1768084780988 +266 -0
- package/dist/index.cjs +24156 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +16967 -0
- package/dist/index.d.ts +16963 -11
- package/dist/index.js +23887 -19
- package/dist/index.js.map +1 -1
- package/dist/workers/levenshteinWorker.cjs +102 -0
- package/dist/workers/levenshteinWorker.cjs.map +1 -0
- package/dist/workers/levenshteinWorker.js +57 -91
- package/dist/workers/levenshteinWorker.js.map +1 -1
- package/package.json +75 -69
- package/dist/core/EntityManager.d.ts +0 -268
- package/dist/core/EntityManager.d.ts.map +0 -1
- package/dist/core/EntityManager.js +0 -512
- package/dist/core/EntityManager.js.map +0 -1
- package/dist/core/GraphEventEmitter.d.ts +0 -202
- package/dist/core/GraphEventEmitter.d.ts.map +0 -1
- package/dist/core/GraphEventEmitter.js +0 -347
- package/dist/core/GraphEventEmitter.js.map +0 -1
- package/dist/core/GraphStorage.d.ts +0 -395
- package/dist/core/GraphStorage.d.ts.map +0 -1
- package/dist/core/GraphStorage.js +0 -786
- package/dist/core/GraphStorage.js.map +0 -1
- package/dist/core/GraphTraversal.d.ts +0 -141
- package/dist/core/GraphTraversal.d.ts.map +0 -1
- package/dist/core/GraphTraversal.js +0 -574
- package/dist/core/GraphTraversal.js.map +0 -1
- package/dist/core/HierarchyManager.d.ts +0 -111
- package/dist/core/HierarchyManager.d.ts.map +0 -1
- package/dist/core/HierarchyManager.js +0 -225
- package/dist/core/HierarchyManager.js.map +0 -1
- package/dist/core/ManagerContext.d.ts +0 -76
- package/dist/core/ManagerContext.d.ts.map +0 -1
- package/dist/core/ManagerContext.js +0 -129
- package/dist/core/ManagerContext.js.map +0 -1
- package/dist/core/ObservationManager.d.ts +0 -85
- package/dist/core/ObservationManager.d.ts.map +0 -1
- package/dist/core/ObservationManager.js +0 -124
- package/dist/core/ObservationManager.js.map +0 -1
- package/dist/core/RelationManager.d.ts +0 -131
- package/dist/core/RelationManager.d.ts.map +0 -1
- package/dist/core/RelationManager.js +0 -212
- package/dist/core/RelationManager.js.map +0 -1
- package/dist/core/SQLiteStorage.d.ts +0 -354
- package/dist/core/SQLiteStorage.d.ts.map +0 -1
- package/dist/core/SQLiteStorage.js +0 -919
- package/dist/core/SQLiteStorage.js.map +0 -1
- package/dist/core/StorageFactory.d.ts +0 -45
- package/dist/core/StorageFactory.d.ts.map +0 -1
- package/dist/core/StorageFactory.js +0 -65
- package/dist/core/StorageFactory.js.map +0 -1
- package/dist/core/TransactionManager.d.ts +0 -464
- package/dist/core/TransactionManager.d.ts.map +0 -1
- package/dist/core/TransactionManager.js +0 -869
- package/dist/core/TransactionManager.js.map +0 -1
- package/dist/core/index.d.ts +0 -17
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -20
- package/dist/core/index.js.map +0 -1
- package/dist/features/AnalyticsManager.d.ts +0 -44
- package/dist/features/AnalyticsManager.d.ts.map +0 -1
- package/dist/features/AnalyticsManager.js +0 -224
- package/dist/features/AnalyticsManager.js.map +0 -1
- package/dist/features/ArchiveManager.d.ts +0 -133
- package/dist/features/ArchiveManager.d.ts.map +0 -1
- package/dist/features/ArchiveManager.js +0 -282
- package/dist/features/ArchiveManager.js.map +0 -1
- package/dist/features/CompressionManager.d.ts +0 -119
- package/dist/features/CompressionManager.d.ts.map +0 -1
- package/dist/features/CompressionManager.js +0 -470
- package/dist/features/CompressionManager.js.map +0 -1
- package/dist/features/IOManager.d.ts +0 -225
- package/dist/features/IOManager.d.ts.map +0 -1
- package/dist/features/IOManager.js +0 -1093
- package/dist/features/IOManager.js.map +0 -1
- package/dist/features/KeywordExtractor.d.ts +0 -61
- package/dist/features/KeywordExtractor.d.ts.map +0 -1
- package/dist/features/KeywordExtractor.js +0 -127
- package/dist/features/KeywordExtractor.js.map +0 -1
- package/dist/features/ObservationNormalizer.d.ts +0 -90
- package/dist/features/ObservationNormalizer.d.ts.map +0 -1
- package/dist/features/ObservationNormalizer.js +0 -194
- package/dist/features/ObservationNormalizer.js.map +0 -1
- package/dist/features/StreamingExporter.d.ts +0 -128
- package/dist/features/StreamingExporter.d.ts.map +0 -1
- package/dist/features/StreamingExporter.js +0 -212
- package/dist/features/StreamingExporter.js.map +0 -1
- package/dist/features/TagManager.d.ts +0 -147
- package/dist/features/TagManager.d.ts.map +0 -1
- package/dist/features/TagManager.js +0 -211
- package/dist/features/TagManager.js.map +0 -1
- package/dist/features/index.d.ts +0 -14
- package/dist/features/index.d.ts.map +0 -1
- package/dist/features/index.js +0 -15
- package/dist/features/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/search/BM25Search.d.ts +0 -148
- package/dist/search/BM25Search.d.ts.map +0 -1
- package/dist/search/BM25Search.js +0 -340
- package/dist/search/BM25Search.js.map +0 -1
- package/dist/search/BasicSearch.d.ts +0 -51
- package/dist/search/BasicSearch.d.ts.map +0 -1
- package/dist/search/BasicSearch.js +0 -138
- package/dist/search/BasicSearch.js.map +0 -1
- package/dist/search/BooleanSearch.d.ts +0 -98
- package/dist/search/BooleanSearch.d.ts.map +0 -1
- package/dist/search/BooleanSearch.js +0 -431
- package/dist/search/BooleanSearch.js.map +0 -1
- package/dist/search/EarlyTerminationManager.d.ts +0 -140
- package/dist/search/EarlyTerminationManager.d.ts.map +0 -1
- package/dist/search/EarlyTerminationManager.js +0 -280
- package/dist/search/EarlyTerminationManager.js.map +0 -1
- package/dist/search/EmbeddingCache.d.ts +0 -175
- package/dist/search/EmbeddingCache.d.ts.map +0 -1
- package/dist/search/EmbeddingCache.js +0 -247
- package/dist/search/EmbeddingCache.js.map +0 -1
- package/dist/search/EmbeddingService.d.ts +0 -277
- package/dist/search/EmbeddingService.d.ts.map +0 -1
- package/dist/search/EmbeddingService.js +0 -531
- package/dist/search/EmbeddingService.js.map +0 -1
- package/dist/search/FuzzySearch.d.ts +0 -118
- package/dist/search/FuzzySearch.d.ts.map +0 -1
- package/dist/search/FuzzySearch.js +0 -313
- package/dist/search/FuzzySearch.js.map +0 -1
- package/dist/search/HybridScorer.d.ts +0 -181
- package/dist/search/HybridScorer.d.ts.map +0 -1
- package/dist/search/HybridScorer.js +0 -258
- package/dist/search/HybridScorer.js.map +0 -1
- package/dist/search/HybridSearchManager.d.ts +0 -80
- package/dist/search/HybridSearchManager.d.ts.map +0 -1
- package/dist/search/HybridSearchManager.js +0 -188
- package/dist/search/HybridSearchManager.js.map +0 -1
- package/dist/search/IncrementalIndexer.d.ts +0 -201
- package/dist/search/IncrementalIndexer.d.ts.map +0 -1
- package/dist/search/IncrementalIndexer.js +0 -343
- package/dist/search/IncrementalIndexer.js.map +0 -1
- package/dist/search/OptimizedInvertedIndex.d.ts +0 -163
- package/dist/search/OptimizedInvertedIndex.d.ts.map +0 -1
- package/dist/search/OptimizedInvertedIndex.js +0 -359
- package/dist/search/OptimizedInvertedIndex.js.map +0 -1
- package/dist/search/ParallelSearchExecutor.d.ts +0 -172
- package/dist/search/ParallelSearchExecutor.d.ts.map +0 -1
- package/dist/search/ParallelSearchExecutor.js +0 -310
- package/dist/search/ParallelSearchExecutor.js.map +0 -1
- package/dist/search/QuantizedVectorStore.d.ts +0 -171
- package/dist/search/QuantizedVectorStore.d.ts.map +0 -1
- package/dist/search/QuantizedVectorStore.js +0 -308
- package/dist/search/QuantizedVectorStore.js.map +0 -1
- package/dist/search/QueryAnalyzer.d.ts +0 -76
- package/dist/search/QueryAnalyzer.d.ts.map +0 -1
- package/dist/search/QueryAnalyzer.js +0 -228
- package/dist/search/QueryAnalyzer.js.map +0 -1
- package/dist/search/QueryCostEstimator.d.ts +0 -244
- package/dist/search/QueryCostEstimator.d.ts.map +0 -1
- package/dist/search/QueryCostEstimator.js +0 -653
- package/dist/search/QueryCostEstimator.js.map +0 -1
- package/dist/search/QueryPlanCache.d.ts +0 -220
- package/dist/search/QueryPlanCache.d.ts.map +0 -1
- package/dist/search/QueryPlanCache.js +0 -380
- package/dist/search/QueryPlanCache.js.map +0 -1
- package/dist/search/QueryPlanner.d.ts +0 -58
- package/dist/search/QueryPlanner.d.ts.map +0 -1
- package/dist/search/QueryPlanner.js +0 -138
- package/dist/search/QueryPlanner.js.map +0 -1
- package/dist/search/RankedSearch.d.ts +0 -71
- package/dist/search/RankedSearch.d.ts.map +0 -1
- package/dist/search/RankedSearch.js +0 -239
- package/dist/search/RankedSearch.js.map +0 -1
- package/dist/search/ReflectionManager.d.ts +0 -120
- package/dist/search/ReflectionManager.d.ts.map +0 -1
- package/dist/search/ReflectionManager.js +0 -232
- package/dist/search/ReflectionManager.js.map +0 -1
- package/dist/search/SavedSearchManager.d.ts +0 -79
- package/dist/search/SavedSearchManager.d.ts.map +0 -1
- package/dist/search/SavedSearchManager.js +0 -147
- package/dist/search/SavedSearchManager.js.map +0 -1
- package/dist/search/SearchFilterChain.d.ts +0 -120
- package/dist/search/SearchFilterChain.d.ts.map +0 -1
- package/dist/search/SearchFilterChain.js +0 -186
- package/dist/search/SearchFilterChain.js.map +0 -1
- package/dist/search/SearchManager.d.ts +0 -326
- package/dist/search/SearchManager.d.ts.map +0 -1
- package/dist/search/SearchManager.js +0 -454
- package/dist/search/SearchManager.js.map +0 -1
- package/dist/search/SearchSuggestions.d.ts +0 -27
- package/dist/search/SearchSuggestions.d.ts.map +0 -1
- package/dist/search/SearchSuggestions.js +0 -58
- package/dist/search/SearchSuggestions.js.map +0 -1
- package/dist/search/SemanticSearch.d.ts +0 -149
- package/dist/search/SemanticSearch.d.ts.map +0 -1
- package/dist/search/SemanticSearch.js +0 -324
- package/dist/search/SemanticSearch.js.map +0 -1
- package/dist/search/SymbolicSearch.d.ts +0 -61
- package/dist/search/SymbolicSearch.d.ts.map +0 -1
- package/dist/search/SymbolicSearch.js +0 -164
- package/dist/search/SymbolicSearch.js.map +0 -1
- package/dist/search/TFIDFEventSync.d.ts +0 -85
- package/dist/search/TFIDFEventSync.d.ts.map +0 -1
- package/dist/search/TFIDFEventSync.js +0 -134
- package/dist/search/TFIDFEventSync.js.map +0 -1
- package/dist/search/TFIDFIndexManager.d.ts +0 -151
- package/dist/search/TFIDFIndexManager.d.ts.map +0 -1
- package/dist/search/TFIDFIndexManager.js +0 -433
- package/dist/search/TFIDFIndexManager.js.map +0 -1
- package/dist/search/VectorStore.d.ts +0 -235
- package/dist/search/VectorStore.d.ts.map +0 -1
- package/dist/search/VectorStore.js +0 -312
- package/dist/search/VectorStore.js.map +0 -1
- package/dist/search/index.d.ts +0 -35
- package/dist/search/index.d.ts.map +0 -1
- package/dist/search/index.js +0 -53
- package/dist/search/index.js.map +0 -1
- package/dist/types/index.d.ts +0 -13
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -13
- package/dist/types/index.js.map +0 -1
- package/dist/types/types.d.ts +0 -1811
- package/dist/types/types.d.ts.map +0 -1
- package/dist/types/types.js +0 -10
- package/dist/types/types.js.map +0 -1
- package/dist/utils/BatchProcessor.d.ts +0 -271
- package/dist/utils/BatchProcessor.d.ts.map +0 -1
- package/dist/utils/BatchProcessor.js +0 -377
- package/dist/utils/BatchProcessor.js.map +0 -1
- package/dist/utils/MemoryMonitor.d.ts +0 -176
- package/dist/utils/MemoryMonitor.d.ts.map +0 -1
- package/dist/utils/MemoryMonitor.js +0 -306
- package/dist/utils/MemoryMonitor.js.map +0 -1
- package/dist/utils/WorkerPoolManager.d.ts +0 -233
- package/dist/utils/WorkerPoolManager.d.ts.map +0 -1
- package/dist/utils/WorkerPoolManager.js +0 -421
- package/dist/utils/WorkerPoolManager.js.map +0 -1
- package/dist/utils/compressedCache.d.ts +0 -221
- package/dist/utils/compressedCache.d.ts.map +0 -1
- package/dist/utils/compressedCache.js +0 -349
- package/dist/utils/compressedCache.js.map +0 -1
- package/dist/utils/compressionUtil.d.ts +0 -214
- package/dist/utils/compressionUtil.d.ts.map +0 -1
- package/dist/utils/compressionUtil.js +0 -248
- package/dist/utils/compressionUtil.js.map +0 -1
- package/dist/utils/constants.d.ts +0 -245
- package/dist/utils/constants.d.ts.map +0 -1
- package/dist/utils/constants.js +0 -253
- package/dist/utils/constants.js.map +0 -1
- package/dist/utils/entityUtils.d.ts +0 -379
- package/dist/utils/entityUtils.d.ts.map +0 -1
- package/dist/utils/entityUtils.js +0 -649
- package/dist/utils/entityUtils.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -95
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -146
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/formatters.d.ts +0 -145
- package/dist/utils/formatters.d.ts.map +0 -1
- package/dist/utils/formatters.js +0 -133
- package/dist/utils/formatters.js.map +0 -1
- package/dist/utils/index.d.ts +0 -26
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -88
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/indexes.d.ts +0 -270
- package/dist/utils/indexes.d.ts.map +0 -1
- package/dist/utils/indexes.js +0 -527
- package/dist/utils/indexes.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -31
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -41
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/operationUtils.d.ts +0 -124
- package/dist/utils/operationUtils.d.ts.map +0 -1
- package/dist/utils/operationUtils.js +0 -176
- package/dist/utils/operationUtils.js.map +0 -1
- package/dist/utils/parallelUtils.d.ts +0 -76
- package/dist/utils/parallelUtils.d.ts.map +0 -1
- package/dist/utils/parallelUtils.js +0 -192
- package/dist/utils/parallelUtils.js.map +0 -1
- package/dist/utils/schemas.d.ts +0 -556
- package/dist/utils/schemas.d.ts.map +0 -1
- package/dist/utils/schemas.js +0 -485
- package/dist/utils/schemas.js.map +0 -1
- package/dist/utils/searchAlgorithms.d.ts +0 -99
- package/dist/utils/searchAlgorithms.d.ts.map +0 -1
- package/dist/utils/searchAlgorithms.js +0 -168
- package/dist/utils/searchAlgorithms.js.map +0 -1
- package/dist/utils/searchCache.d.ts +0 -108
- package/dist/utils/searchCache.d.ts.map +0 -1
- package/dist/utils/searchCache.js +0 -210
- package/dist/utils/searchCache.js.map +0 -1
- package/dist/utils/taskScheduler.d.ts +0 -294
- package/dist/utils/taskScheduler.d.ts.map +0 -1
- package/dist/utils/taskScheduler.js +0 -487
- package/dist/utils/taskScheduler.js.map +0 -1
- package/dist/workers/index.d.ts +0 -12
- package/dist/workers/index.d.ts.map +0 -1
- package/dist/workers/index.js +0 -10
- package/dist/workers/index.js.map +0 -1
- package/dist/workers/levenshteinWorker.d.ts +0 -60
- package/dist/workers/levenshteinWorker.d.ts.map +0 -1
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Embedding Cache
|
|
3
|
-
*
|
|
4
|
-
* Phase 12 Sprint 5: LRU cache for embedding vectors with hit/miss tracking,
|
|
5
|
-
* auto-invalidation on text hash changes, and TTL support.
|
|
6
|
-
*
|
|
7
|
-
* @module search/EmbeddingCache
|
|
8
|
-
*/
|
|
9
|
-
import { createHash } from 'crypto';
|
|
10
|
-
/**
|
|
11
|
-
* Default cache options.
|
|
12
|
-
*/
|
|
13
|
-
export const DEFAULT_EMBEDDING_CACHE_OPTIONS = {
|
|
14
|
-
maxSize: 1000,
|
|
15
|
-
ttlMs: 3600000, // 1 hour
|
|
16
|
-
dimensions: 384,
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* LRU cache for embedding vectors with hit/miss tracking.
|
|
20
|
-
*
|
|
21
|
-
* Features:
|
|
22
|
-
* - LRU eviction when max size is reached
|
|
23
|
-
* - Text hash-based invalidation (detects stale entries)
|
|
24
|
-
* - TTL support for automatic expiration
|
|
25
|
-
* - Hit/miss statistics tracking
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* ```typescript
|
|
29
|
-
* const cache = new EmbeddingCache({ maxSize: 500, ttlMs: 60000 });
|
|
30
|
-
*
|
|
31
|
-
* // Cache an embedding
|
|
32
|
-
* cache.set('entity1', 'Original text content', [0.1, 0.2, ...]);
|
|
33
|
-
*
|
|
34
|
-
* // Retrieve from cache
|
|
35
|
-
* const result = cache.get('entity1', 'Original text content');
|
|
36
|
-
* if (result) {
|
|
37
|
-
* console.log('Cache hit!', result);
|
|
38
|
-
* }
|
|
39
|
-
*
|
|
40
|
-
* // Check stats
|
|
41
|
-
* console.log(cache.getStats()); // { size, memoryBytes, hitRate, hits, misses }
|
|
42
|
-
* ```
|
|
43
|
-
*/
|
|
44
|
-
export class EmbeddingCache {
|
|
45
|
-
cache;
|
|
46
|
-
options;
|
|
47
|
-
hits = 0;
|
|
48
|
-
misses = 0;
|
|
49
|
-
/**
|
|
50
|
-
* Create a new embedding cache.
|
|
51
|
-
*
|
|
52
|
-
* @param options - Cache configuration options
|
|
53
|
-
*/
|
|
54
|
-
constructor(options) {
|
|
55
|
-
this.options = { ...DEFAULT_EMBEDDING_CACHE_OPTIONS, ...options };
|
|
56
|
-
this.cache = new Map();
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Hash a text string for cache invalidation.
|
|
60
|
-
*
|
|
61
|
-
* @param text - Text to hash
|
|
62
|
-
* @returns MD5 hash of the text
|
|
63
|
-
*/
|
|
64
|
-
hashText(text) {
|
|
65
|
-
return createHash('md5').update(text).digest('hex');
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Check if an entry is expired based on TTL.
|
|
69
|
-
*
|
|
70
|
-
* @param entry - Cache entry to check
|
|
71
|
-
* @returns True if expired
|
|
72
|
-
*/
|
|
73
|
-
isExpired(entry) {
|
|
74
|
-
return Date.now() - entry.createdAt > this.options.ttlMs;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Evict the least recently used entry.
|
|
78
|
-
*/
|
|
79
|
-
evictLRU() {
|
|
80
|
-
let oldestKey = null;
|
|
81
|
-
let oldestTime = Infinity;
|
|
82
|
-
for (const [key, entry] of this.cache) {
|
|
83
|
-
if (entry.lastAccess < oldestTime) {
|
|
84
|
-
oldestTime = entry.lastAccess;
|
|
85
|
-
oldestKey = key;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
if (oldestKey) {
|
|
89
|
-
this.cache.delete(oldestKey);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Get an embedding from the cache.
|
|
94
|
-
*
|
|
95
|
-
* Returns null if:
|
|
96
|
-
* - Key not found
|
|
97
|
-
* - Entry is expired (TTL)
|
|
98
|
-
* - Text hash doesn't match (content changed)
|
|
99
|
-
*
|
|
100
|
-
* @param key - Cache key (typically entity name)
|
|
101
|
-
* @param text - Current text content (for hash validation)
|
|
102
|
-
* @returns Embedding vector if found and valid, null otherwise
|
|
103
|
-
*/
|
|
104
|
-
get(key, text) {
|
|
105
|
-
const entry = this.cache.get(key);
|
|
106
|
-
if (!entry) {
|
|
107
|
-
this.misses++;
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
// Check TTL
|
|
111
|
-
if (this.isExpired(entry)) {
|
|
112
|
-
this.cache.delete(key);
|
|
113
|
-
this.misses++;
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
// Check text hash for invalidation
|
|
117
|
-
const currentHash = this.hashText(text);
|
|
118
|
-
if (entry.textHash !== currentHash) {
|
|
119
|
-
this.cache.delete(key);
|
|
120
|
-
this.misses++;
|
|
121
|
-
return null;
|
|
122
|
-
}
|
|
123
|
-
// Update last access time
|
|
124
|
-
entry.lastAccess = Date.now();
|
|
125
|
-
this.hits++;
|
|
126
|
-
return entry.vector;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Set an embedding in the cache.
|
|
130
|
-
*
|
|
131
|
-
* Automatically evicts LRU entries if max size is reached.
|
|
132
|
-
*
|
|
133
|
-
* @param key - Cache key (typically entity name)
|
|
134
|
-
* @param text - Text content (used for hash-based invalidation)
|
|
135
|
-
* @param vector - Embedding vector to cache
|
|
136
|
-
*/
|
|
137
|
-
set(key, text, vector) {
|
|
138
|
-
// Evict if at capacity and not updating existing key
|
|
139
|
-
if (this.cache.size >= this.options.maxSize && !this.cache.has(key)) {
|
|
140
|
-
this.evictLRU();
|
|
141
|
-
}
|
|
142
|
-
const now = Date.now();
|
|
143
|
-
this.cache.set(key, {
|
|
144
|
-
vector,
|
|
145
|
-
textHash: this.hashText(text),
|
|
146
|
-
createdAt: now,
|
|
147
|
-
lastAccess: now,
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Check if a key exists in the cache (without affecting hit/miss stats).
|
|
152
|
-
*
|
|
153
|
-
* @param key - Cache key to check
|
|
154
|
-
* @returns True if key exists (may be expired or stale)
|
|
155
|
-
*/
|
|
156
|
-
has(key) {
|
|
157
|
-
return this.cache.has(key);
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Delete an entry from the cache.
|
|
161
|
-
*
|
|
162
|
-
* @param key - Cache key to delete
|
|
163
|
-
* @returns True if entry was deleted
|
|
164
|
-
*/
|
|
165
|
-
delete(key) {
|
|
166
|
-
return this.cache.delete(key);
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Clear all entries from the cache.
|
|
170
|
-
*/
|
|
171
|
-
clear() {
|
|
172
|
-
this.cache.clear();
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Get cache statistics.
|
|
176
|
-
*
|
|
177
|
-
* @returns Cache statistics including size, memory usage, and hit rate
|
|
178
|
-
*/
|
|
179
|
-
getStats() {
|
|
180
|
-
const size = this.cache.size;
|
|
181
|
-
// Estimate memory: each entry has vector (dimensions * 8 bytes for float64)
|
|
182
|
-
// plus overhead for hash (~32 bytes), timestamps (~16 bytes), and Map overhead (~50 bytes)
|
|
183
|
-
const memoryPerEntry = this.options.dimensions * 8 + 32 + 16 + 50;
|
|
184
|
-
const memoryBytes = size * memoryPerEntry;
|
|
185
|
-
const totalRequests = this.hits + this.misses;
|
|
186
|
-
const hitRate = totalRequests > 0 ? this.hits / totalRequests : 0;
|
|
187
|
-
return {
|
|
188
|
-
size,
|
|
189
|
-
memoryBytes,
|
|
190
|
-
hitRate,
|
|
191
|
-
hits: this.hits,
|
|
192
|
-
misses: this.misses,
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Reset hit/miss statistics (useful for benchmarks).
|
|
197
|
-
*/
|
|
198
|
-
resetStats() {
|
|
199
|
-
this.hits = 0;
|
|
200
|
-
this.misses = 0;
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Remove expired entries from the cache.
|
|
204
|
-
*
|
|
205
|
-
* Called automatically during get operations, but can be
|
|
206
|
-
* manually triggered for maintenance.
|
|
207
|
-
*
|
|
208
|
-
* @returns Number of entries removed
|
|
209
|
-
*/
|
|
210
|
-
pruneExpired() {
|
|
211
|
-
let removed = 0;
|
|
212
|
-
for (const [key, entry] of this.cache) {
|
|
213
|
-
if (this.isExpired(entry)) {
|
|
214
|
-
this.cache.delete(key);
|
|
215
|
-
removed++;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return removed;
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Get the current cache size.
|
|
222
|
-
*
|
|
223
|
-
* @returns Number of entries in the cache
|
|
224
|
-
*/
|
|
225
|
-
size() {
|
|
226
|
-
return this.cache.size;
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Get all cached keys.
|
|
230
|
-
*
|
|
231
|
-
* @returns Array of cache keys
|
|
232
|
-
*/
|
|
233
|
-
keys() {
|
|
234
|
-
return Array.from(this.cache.keys());
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Update options dynamically.
|
|
238
|
-
*
|
|
239
|
-
* Note: Reducing maxSize will not immediately evict entries.
|
|
240
|
-
*
|
|
241
|
-
* @param options - New options to apply
|
|
242
|
-
*/
|
|
243
|
-
updateOptions(options) {
|
|
244
|
-
this.options = { ...this.options, ...options };
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
//# sourceMappingURL=EmbeddingCache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddingCache.js","sourceRoot":"","sources":["../../src/search/EmbeddingCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Embedding Service
|
|
3
|
-
*
|
|
4
|
-
* Phase 4 Sprint 10: Provides embedding abstractions for semantic search.
|
|
5
|
-
* Phase 12 Sprint 5: Added query/document prefixes, l2Normalize, mode parameter,
|
|
6
|
-
* and batch embedding with progress callback.
|
|
7
|
-
* Supports multiple providers: OpenAI (cloud) and local (transformers.js).
|
|
8
|
-
*
|
|
9
|
-
* @module search/EmbeddingService
|
|
10
|
-
*/
|
|
11
|
-
import type { EmbeddingService, EmbeddingConfig, EmbeddingMode } from '../types/index.js';
|
|
12
|
-
/**
|
|
13
|
-
* Phase 12 Sprint 5: Prefixes for query-optimized embedding encoding.
|
|
14
|
-
*
|
|
15
|
-
* These prefixes are used to distinguish between query and document embeddings,
|
|
16
|
-
* which can improve retrieval performance with asymmetric embedding models.
|
|
17
|
-
*/
|
|
18
|
-
export declare const QUERY_PREFIX = "query: ";
|
|
19
|
-
export declare const DOCUMENT_PREFIX = "passage: ";
|
|
20
|
-
/**
|
|
21
|
-
* Phase 12 Sprint 5: Callback for batch embedding progress.
|
|
22
|
-
*/
|
|
23
|
-
export type EmbeddingProgressCallback = (progress: {
|
|
24
|
-
current: number;
|
|
25
|
-
total: number;
|
|
26
|
-
percentage: number;
|
|
27
|
-
}) => void;
|
|
28
|
-
/**
|
|
29
|
-
* Phase 12 Sprint 5: L2 normalize a vector for cosine similarity.
|
|
30
|
-
*
|
|
31
|
-
* Normalizes a vector to unit length (magnitude 1), which is required
|
|
32
|
-
* for accurate cosine similarity calculations.
|
|
33
|
-
*
|
|
34
|
-
* @param vector - Input vector to normalize
|
|
35
|
-
* @returns L2 normalized vector
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* const normalized = l2Normalize([3, 4]); // [0.6, 0.8]
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
export declare function l2Normalize(vector: number[]): number[];
|
|
43
|
-
/**
|
|
44
|
-
* OpenAI Embedding Service
|
|
45
|
-
*
|
|
46
|
-
* Uses OpenAI's text-embedding-3-small model for generating embeddings.
|
|
47
|
-
* Supports single and batch embedding with rate limit handling.
|
|
48
|
-
* Phase 12 Sprint 5: Added mode parameter and progress callback support.
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
* ```typescript
|
|
52
|
-
* const service = new OpenAIEmbeddingService('sk-...');
|
|
53
|
-
* const embedding = await service.embed("Hello world", 'query');
|
|
54
|
-
* console.log(`Generated ${embedding.length} dimensions`);
|
|
55
|
-
* ```
|
|
56
|
-
*/
|
|
57
|
-
export declare class OpenAIEmbeddingService implements EmbeddingService {
|
|
58
|
-
readonly dimensions: number;
|
|
59
|
-
readonly provider = "openai";
|
|
60
|
-
readonly model: string;
|
|
61
|
-
private apiKey;
|
|
62
|
-
/**
|
|
63
|
-
* Create an OpenAI embedding service.
|
|
64
|
-
*
|
|
65
|
-
* @param apiKey - OpenAI API key
|
|
66
|
-
* @param model - Optional model override (default: text-embedding-3-small)
|
|
67
|
-
*/
|
|
68
|
-
constructor(apiKey: string, model?: string);
|
|
69
|
-
/**
|
|
70
|
-
* Check if the service is ready.
|
|
71
|
-
*/
|
|
72
|
-
isReady(): Promise<boolean>;
|
|
73
|
-
/**
|
|
74
|
-
* Apply prefix to text based on embedding mode.
|
|
75
|
-
*
|
|
76
|
-
* @param text - Original text
|
|
77
|
-
* @param mode - Embedding mode ('query' or 'document')
|
|
78
|
-
* @returns Text with appropriate prefix
|
|
79
|
-
*/
|
|
80
|
-
private applyPrefix;
|
|
81
|
-
/**
|
|
82
|
-
* Generate embedding for a single text.
|
|
83
|
-
*
|
|
84
|
-
* @param text - Text to embed
|
|
85
|
-
* @param mode - Embedding mode ('query' or 'document', default: 'document')
|
|
86
|
-
* @returns Embedding vector
|
|
87
|
-
*/
|
|
88
|
-
embed(text: string, mode?: EmbeddingMode): Promise<number[]>;
|
|
89
|
-
/**
|
|
90
|
-
* Generate embeddings for multiple texts in batch.
|
|
91
|
-
*
|
|
92
|
-
* @param texts - Array of texts to embed
|
|
93
|
-
* @param mode - Embedding mode ('query' or 'document', default: 'document')
|
|
94
|
-
* @returns Array of embedding vectors
|
|
95
|
-
*/
|
|
96
|
-
embedBatch(texts: string[], mode?: EmbeddingMode): Promise<number[][]>;
|
|
97
|
-
/**
|
|
98
|
-
* Generate embeddings with progress callback support.
|
|
99
|
-
*
|
|
100
|
-
* Phase 12 Sprint 5: Added for tracking progress on large batch operations.
|
|
101
|
-
*
|
|
102
|
-
* @param texts - Array of texts to embed
|
|
103
|
-
* @param mode - Embedding mode ('query' or 'document', default: 'document')
|
|
104
|
-
* @param onProgress - Optional progress callback
|
|
105
|
-
* @returns Array of embedding vectors
|
|
106
|
-
*/
|
|
107
|
-
embedBatchWithProgress(texts: string[], mode?: EmbeddingMode, onProgress?: EmbeddingProgressCallback): Promise<number[][]>;
|
|
108
|
-
/**
|
|
109
|
-
* Internal batch embedding with retry logic.
|
|
110
|
-
*/
|
|
111
|
-
private embedBatchInternal;
|
|
112
|
-
/**
|
|
113
|
-
* Check if an error is retryable.
|
|
114
|
-
*/
|
|
115
|
-
private isRetryableError;
|
|
116
|
-
/**
|
|
117
|
-
* Sleep for a given duration.
|
|
118
|
-
*/
|
|
119
|
-
private sleep;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Local Embedding Service
|
|
123
|
-
*
|
|
124
|
-
* Uses @xenova/transformers for local embedding generation.
|
|
125
|
-
* No API calls needed - runs entirely offline after initial model download.
|
|
126
|
-
* Phase 12 Sprint 5: Added mode parameter and progress callback support.
|
|
127
|
-
*
|
|
128
|
-
* Note: Requires @xenova/transformers to be installed as an optional dependency.
|
|
129
|
-
* If not available, initialization will fail gracefully.
|
|
130
|
-
*
|
|
131
|
-
* @example
|
|
132
|
-
* ```typescript
|
|
133
|
-
* const service = new LocalEmbeddingService();
|
|
134
|
-
* await service.initialize();
|
|
135
|
-
* const embedding = await service.embed("Hello world", 'query');
|
|
136
|
-
* ```
|
|
137
|
-
*/
|
|
138
|
-
export declare class LocalEmbeddingService implements EmbeddingService {
|
|
139
|
-
readonly dimensions: number;
|
|
140
|
-
readonly provider = "local";
|
|
141
|
-
readonly model: string;
|
|
142
|
-
private pipeline;
|
|
143
|
-
private initialized;
|
|
144
|
-
private initPromise;
|
|
145
|
-
/**
|
|
146
|
-
* Create a local embedding service.
|
|
147
|
-
*
|
|
148
|
-
* @param model - Optional model override (default: Xenova/all-MiniLM-L6-v2)
|
|
149
|
-
*/
|
|
150
|
-
constructor(model?: string);
|
|
151
|
-
/**
|
|
152
|
-
* Initialize the model pipeline.
|
|
153
|
-
* Must be called before using embed/embedBatch.
|
|
154
|
-
*/
|
|
155
|
-
initialize(): Promise<void>;
|
|
156
|
-
/**
|
|
157
|
-
* Internal initialization.
|
|
158
|
-
*/
|
|
159
|
-
private initializeInternal;
|
|
160
|
-
/**
|
|
161
|
-
* Check if the service is ready.
|
|
162
|
-
*/
|
|
163
|
-
isReady(): Promise<boolean>;
|
|
164
|
-
/**
|
|
165
|
-
* Apply prefix to text based on embedding mode.
|
|
166
|
-
*
|
|
167
|
-
* @param text - Original text
|
|
168
|
-
* @param mode - Embedding mode ('query' or 'document')
|
|
169
|
-
* @returns Text with appropriate prefix
|
|
170
|
-
*/
|
|
171
|
-
private applyPrefix;
|
|
172
|
-
/**
|
|
173
|
-
* Generate embedding for a single text.
|
|
174
|
-
*
|
|
175
|
-
* @param text - Text to embed
|
|
176
|
-
* @param mode - Embedding mode ('query' or 'document', default: 'document')
|
|
177
|
-
* @returns Embedding vector
|
|
178
|
-
*/
|
|
179
|
-
embed(text: string, mode?: EmbeddingMode): Promise<number[]>;
|
|
180
|
-
/**
|
|
181
|
-
* Generate embeddings for multiple texts in batch.
|
|
182
|
-
* Note: Local processing is done sequentially to avoid memory issues.
|
|
183
|
-
*
|
|
184
|
-
* @param texts - Array of texts to embed
|
|
185
|
-
* @param mode - Embedding mode ('query' or 'document', default: 'document')
|
|
186
|
-
* @returns Array of embedding vectors
|
|
187
|
-
*/
|
|
188
|
-
embedBatch(texts: string[], mode?: EmbeddingMode): Promise<number[][]>;
|
|
189
|
-
/**
|
|
190
|
-
* Generate embeddings with progress callback support.
|
|
191
|
-
*
|
|
192
|
-
* Phase 12 Sprint 5: Added for tracking progress on large batch operations.
|
|
193
|
-
*
|
|
194
|
-
* @param texts - Array of texts to embed
|
|
195
|
-
* @param mode - Embedding mode ('query' or 'document', default: 'document')
|
|
196
|
-
* @param onProgress - Optional progress callback
|
|
197
|
-
* @returns Array of embedding vectors
|
|
198
|
-
*/
|
|
199
|
-
embedBatchWithProgress(texts: string[], mode?: EmbeddingMode, onProgress?: EmbeddingProgressCallback): Promise<number[][]>;
|
|
200
|
-
/**
|
|
201
|
-
* Ensure the service is initialized.
|
|
202
|
-
*/
|
|
203
|
-
private ensureInitialized;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Mock Embedding Service for testing
|
|
207
|
-
*
|
|
208
|
-
* Generates deterministic mock embeddings for testing purposes.
|
|
209
|
-
* Useful for unit tests that don't need real embeddings.
|
|
210
|
-
* Phase 12 Sprint 5: Added mode parameter and progress callback support.
|
|
211
|
-
*/
|
|
212
|
-
export declare class MockEmbeddingService implements EmbeddingService {
|
|
213
|
-
readonly dimensions: number;
|
|
214
|
-
readonly provider = "mock";
|
|
215
|
-
readonly model = "mock-model";
|
|
216
|
-
/**
|
|
217
|
-
* Create a mock embedding service.
|
|
218
|
-
*
|
|
219
|
-
* @param dimensions - Number of dimensions for mock embeddings
|
|
220
|
-
*/
|
|
221
|
-
constructor(dimensions?: number);
|
|
222
|
-
/**
|
|
223
|
-
* Check if the service is ready.
|
|
224
|
-
*/
|
|
225
|
-
isReady(): Promise<boolean>;
|
|
226
|
-
/**
|
|
227
|
-
* Apply prefix to text based on embedding mode.
|
|
228
|
-
*
|
|
229
|
-
* @param text - Original text
|
|
230
|
-
* @param mode - Embedding mode ('query' or 'document')
|
|
231
|
-
* @returns Text with appropriate prefix
|
|
232
|
-
*/
|
|
233
|
-
private applyPrefix;
|
|
234
|
-
/**
|
|
235
|
-
* Generate a deterministic mock embedding for a text.
|
|
236
|
-
*
|
|
237
|
-
* @param text - Text to embed
|
|
238
|
-
* @param mode - Embedding mode ('query' or 'document', default: 'document')
|
|
239
|
-
* @returns Mock embedding vector
|
|
240
|
-
*/
|
|
241
|
-
embed(text: string, mode?: EmbeddingMode): Promise<number[]>;
|
|
242
|
-
/**
|
|
243
|
-
* Generate mock embeddings for multiple texts.
|
|
244
|
-
*
|
|
245
|
-
* @param texts - Array of texts to embed
|
|
246
|
-
* @param mode - Embedding mode ('query' or 'document', default: 'document')
|
|
247
|
-
* @returns Array of mock embedding vectors
|
|
248
|
-
*/
|
|
249
|
-
embedBatch(texts: string[], mode?: EmbeddingMode): Promise<number[][]>;
|
|
250
|
-
/**
|
|
251
|
-
* Generate mock embeddings with progress callback support.
|
|
252
|
-
*
|
|
253
|
-
* Phase 12 Sprint 5: Added for tracking progress on large batch operations.
|
|
254
|
-
*
|
|
255
|
-
* @param texts - Array of texts to embed
|
|
256
|
-
* @param mode - Embedding mode ('query' or 'document', default: 'document')
|
|
257
|
-
* @param onProgress - Optional progress callback
|
|
258
|
-
* @returns Array of mock embedding vectors
|
|
259
|
-
*/
|
|
260
|
-
embedBatchWithProgress(texts: string[], mode?: EmbeddingMode, onProgress?: EmbeddingProgressCallback): Promise<number[][]>;
|
|
261
|
-
/**
|
|
262
|
-
* Simple string hash function.
|
|
263
|
-
*/
|
|
264
|
-
private hashString;
|
|
265
|
-
/**
|
|
266
|
-
* Normalize a vector to unit length.
|
|
267
|
-
*/
|
|
268
|
-
private normalize;
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Create an embedding service based on configuration.
|
|
272
|
-
*
|
|
273
|
-
* @param config - Optional configuration override
|
|
274
|
-
* @returns Embedding service instance, or null if provider is 'none'
|
|
275
|
-
*/
|
|
276
|
-
export declare function createEmbeddingService(config?: Partial<EmbeddingConfig>): EmbeddingService | null;
|
|
277
|
-
//# sourceMappingURL=EmbeddingService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddingService.d.ts","sourceRoot":"","sources":["../../src/search/EmbeddingService.ts"],"names":[],"mappings":"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"}
|