@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.
Files changed (300) hide show
  1. package/README.md +385 -113
  2. package/README.md.backup-1768084780988 +266 -0
  3. package/dist/index.cjs +24156 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +16967 -0
  6. package/dist/index.d.ts +16963 -11
  7. package/dist/index.js +23887 -19
  8. package/dist/index.js.map +1 -1
  9. package/dist/workers/levenshteinWorker.cjs +102 -0
  10. package/dist/workers/levenshteinWorker.cjs.map +1 -0
  11. package/dist/workers/levenshteinWorker.js +57 -91
  12. package/dist/workers/levenshteinWorker.js.map +1 -1
  13. package/package.json +75 -69
  14. package/dist/core/EntityManager.d.ts +0 -268
  15. package/dist/core/EntityManager.d.ts.map +0 -1
  16. package/dist/core/EntityManager.js +0 -512
  17. package/dist/core/EntityManager.js.map +0 -1
  18. package/dist/core/GraphEventEmitter.d.ts +0 -202
  19. package/dist/core/GraphEventEmitter.d.ts.map +0 -1
  20. package/dist/core/GraphEventEmitter.js +0 -347
  21. package/dist/core/GraphEventEmitter.js.map +0 -1
  22. package/dist/core/GraphStorage.d.ts +0 -395
  23. package/dist/core/GraphStorage.d.ts.map +0 -1
  24. package/dist/core/GraphStorage.js +0 -786
  25. package/dist/core/GraphStorage.js.map +0 -1
  26. package/dist/core/GraphTraversal.d.ts +0 -141
  27. package/dist/core/GraphTraversal.d.ts.map +0 -1
  28. package/dist/core/GraphTraversal.js +0 -574
  29. package/dist/core/GraphTraversal.js.map +0 -1
  30. package/dist/core/HierarchyManager.d.ts +0 -111
  31. package/dist/core/HierarchyManager.d.ts.map +0 -1
  32. package/dist/core/HierarchyManager.js +0 -225
  33. package/dist/core/HierarchyManager.js.map +0 -1
  34. package/dist/core/ManagerContext.d.ts +0 -76
  35. package/dist/core/ManagerContext.d.ts.map +0 -1
  36. package/dist/core/ManagerContext.js +0 -129
  37. package/dist/core/ManagerContext.js.map +0 -1
  38. package/dist/core/ObservationManager.d.ts +0 -85
  39. package/dist/core/ObservationManager.d.ts.map +0 -1
  40. package/dist/core/ObservationManager.js +0 -124
  41. package/dist/core/ObservationManager.js.map +0 -1
  42. package/dist/core/RelationManager.d.ts +0 -131
  43. package/dist/core/RelationManager.d.ts.map +0 -1
  44. package/dist/core/RelationManager.js +0 -212
  45. package/dist/core/RelationManager.js.map +0 -1
  46. package/dist/core/SQLiteStorage.d.ts +0 -354
  47. package/dist/core/SQLiteStorage.d.ts.map +0 -1
  48. package/dist/core/SQLiteStorage.js +0 -919
  49. package/dist/core/SQLiteStorage.js.map +0 -1
  50. package/dist/core/StorageFactory.d.ts +0 -45
  51. package/dist/core/StorageFactory.d.ts.map +0 -1
  52. package/dist/core/StorageFactory.js +0 -65
  53. package/dist/core/StorageFactory.js.map +0 -1
  54. package/dist/core/TransactionManager.d.ts +0 -464
  55. package/dist/core/TransactionManager.d.ts.map +0 -1
  56. package/dist/core/TransactionManager.js +0 -869
  57. package/dist/core/TransactionManager.js.map +0 -1
  58. package/dist/core/index.d.ts +0 -17
  59. package/dist/core/index.d.ts.map +0 -1
  60. package/dist/core/index.js +0 -20
  61. package/dist/core/index.js.map +0 -1
  62. package/dist/features/AnalyticsManager.d.ts +0 -44
  63. package/dist/features/AnalyticsManager.d.ts.map +0 -1
  64. package/dist/features/AnalyticsManager.js +0 -224
  65. package/dist/features/AnalyticsManager.js.map +0 -1
  66. package/dist/features/ArchiveManager.d.ts +0 -133
  67. package/dist/features/ArchiveManager.d.ts.map +0 -1
  68. package/dist/features/ArchiveManager.js +0 -282
  69. package/dist/features/ArchiveManager.js.map +0 -1
  70. package/dist/features/CompressionManager.d.ts +0 -119
  71. package/dist/features/CompressionManager.d.ts.map +0 -1
  72. package/dist/features/CompressionManager.js +0 -470
  73. package/dist/features/CompressionManager.js.map +0 -1
  74. package/dist/features/IOManager.d.ts +0 -225
  75. package/dist/features/IOManager.d.ts.map +0 -1
  76. package/dist/features/IOManager.js +0 -1093
  77. package/dist/features/IOManager.js.map +0 -1
  78. package/dist/features/KeywordExtractor.d.ts +0 -61
  79. package/dist/features/KeywordExtractor.d.ts.map +0 -1
  80. package/dist/features/KeywordExtractor.js +0 -127
  81. package/dist/features/KeywordExtractor.js.map +0 -1
  82. package/dist/features/ObservationNormalizer.d.ts +0 -90
  83. package/dist/features/ObservationNormalizer.d.ts.map +0 -1
  84. package/dist/features/ObservationNormalizer.js +0 -194
  85. package/dist/features/ObservationNormalizer.js.map +0 -1
  86. package/dist/features/StreamingExporter.d.ts +0 -128
  87. package/dist/features/StreamingExporter.d.ts.map +0 -1
  88. package/dist/features/StreamingExporter.js +0 -212
  89. package/dist/features/StreamingExporter.js.map +0 -1
  90. package/dist/features/TagManager.d.ts +0 -147
  91. package/dist/features/TagManager.d.ts.map +0 -1
  92. package/dist/features/TagManager.js +0 -211
  93. package/dist/features/TagManager.js.map +0 -1
  94. package/dist/features/index.d.ts +0 -14
  95. package/dist/features/index.d.ts.map +0 -1
  96. package/dist/features/index.js +0 -15
  97. package/dist/features/index.js.map +0 -1
  98. package/dist/index.d.ts.map +0 -1
  99. package/dist/search/BM25Search.d.ts +0 -148
  100. package/dist/search/BM25Search.d.ts.map +0 -1
  101. package/dist/search/BM25Search.js +0 -340
  102. package/dist/search/BM25Search.js.map +0 -1
  103. package/dist/search/BasicSearch.d.ts +0 -51
  104. package/dist/search/BasicSearch.d.ts.map +0 -1
  105. package/dist/search/BasicSearch.js +0 -138
  106. package/dist/search/BasicSearch.js.map +0 -1
  107. package/dist/search/BooleanSearch.d.ts +0 -98
  108. package/dist/search/BooleanSearch.d.ts.map +0 -1
  109. package/dist/search/BooleanSearch.js +0 -431
  110. package/dist/search/BooleanSearch.js.map +0 -1
  111. package/dist/search/EarlyTerminationManager.d.ts +0 -140
  112. package/dist/search/EarlyTerminationManager.d.ts.map +0 -1
  113. package/dist/search/EarlyTerminationManager.js +0 -280
  114. package/dist/search/EarlyTerminationManager.js.map +0 -1
  115. package/dist/search/EmbeddingCache.d.ts +0 -175
  116. package/dist/search/EmbeddingCache.d.ts.map +0 -1
  117. package/dist/search/EmbeddingCache.js +0 -247
  118. package/dist/search/EmbeddingCache.js.map +0 -1
  119. package/dist/search/EmbeddingService.d.ts +0 -277
  120. package/dist/search/EmbeddingService.d.ts.map +0 -1
  121. package/dist/search/EmbeddingService.js +0 -531
  122. package/dist/search/EmbeddingService.js.map +0 -1
  123. package/dist/search/FuzzySearch.d.ts +0 -118
  124. package/dist/search/FuzzySearch.d.ts.map +0 -1
  125. package/dist/search/FuzzySearch.js +0 -313
  126. package/dist/search/FuzzySearch.js.map +0 -1
  127. package/dist/search/HybridScorer.d.ts +0 -181
  128. package/dist/search/HybridScorer.d.ts.map +0 -1
  129. package/dist/search/HybridScorer.js +0 -258
  130. package/dist/search/HybridScorer.js.map +0 -1
  131. package/dist/search/HybridSearchManager.d.ts +0 -80
  132. package/dist/search/HybridSearchManager.d.ts.map +0 -1
  133. package/dist/search/HybridSearchManager.js +0 -188
  134. package/dist/search/HybridSearchManager.js.map +0 -1
  135. package/dist/search/IncrementalIndexer.d.ts +0 -201
  136. package/dist/search/IncrementalIndexer.d.ts.map +0 -1
  137. package/dist/search/IncrementalIndexer.js +0 -343
  138. package/dist/search/IncrementalIndexer.js.map +0 -1
  139. package/dist/search/OptimizedInvertedIndex.d.ts +0 -163
  140. package/dist/search/OptimizedInvertedIndex.d.ts.map +0 -1
  141. package/dist/search/OptimizedInvertedIndex.js +0 -359
  142. package/dist/search/OptimizedInvertedIndex.js.map +0 -1
  143. package/dist/search/ParallelSearchExecutor.d.ts +0 -172
  144. package/dist/search/ParallelSearchExecutor.d.ts.map +0 -1
  145. package/dist/search/ParallelSearchExecutor.js +0 -310
  146. package/dist/search/ParallelSearchExecutor.js.map +0 -1
  147. package/dist/search/QuantizedVectorStore.d.ts +0 -171
  148. package/dist/search/QuantizedVectorStore.d.ts.map +0 -1
  149. package/dist/search/QuantizedVectorStore.js +0 -308
  150. package/dist/search/QuantizedVectorStore.js.map +0 -1
  151. package/dist/search/QueryAnalyzer.d.ts +0 -76
  152. package/dist/search/QueryAnalyzer.d.ts.map +0 -1
  153. package/dist/search/QueryAnalyzer.js +0 -228
  154. package/dist/search/QueryAnalyzer.js.map +0 -1
  155. package/dist/search/QueryCostEstimator.d.ts +0 -244
  156. package/dist/search/QueryCostEstimator.d.ts.map +0 -1
  157. package/dist/search/QueryCostEstimator.js +0 -653
  158. package/dist/search/QueryCostEstimator.js.map +0 -1
  159. package/dist/search/QueryPlanCache.d.ts +0 -220
  160. package/dist/search/QueryPlanCache.d.ts.map +0 -1
  161. package/dist/search/QueryPlanCache.js +0 -380
  162. package/dist/search/QueryPlanCache.js.map +0 -1
  163. package/dist/search/QueryPlanner.d.ts +0 -58
  164. package/dist/search/QueryPlanner.d.ts.map +0 -1
  165. package/dist/search/QueryPlanner.js +0 -138
  166. package/dist/search/QueryPlanner.js.map +0 -1
  167. package/dist/search/RankedSearch.d.ts +0 -71
  168. package/dist/search/RankedSearch.d.ts.map +0 -1
  169. package/dist/search/RankedSearch.js +0 -239
  170. package/dist/search/RankedSearch.js.map +0 -1
  171. package/dist/search/ReflectionManager.d.ts +0 -120
  172. package/dist/search/ReflectionManager.d.ts.map +0 -1
  173. package/dist/search/ReflectionManager.js +0 -232
  174. package/dist/search/ReflectionManager.js.map +0 -1
  175. package/dist/search/SavedSearchManager.d.ts +0 -79
  176. package/dist/search/SavedSearchManager.d.ts.map +0 -1
  177. package/dist/search/SavedSearchManager.js +0 -147
  178. package/dist/search/SavedSearchManager.js.map +0 -1
  179. package/dist/search/SearchFilterChain.d.ts +0 -120
  180. package/dist/search/SearchFilterChain.d.ts.map +0 -1
  181. package/dist/search/SearchFilterChain.js +0 -186
  182. package/dist/search/SearchFilterChain.js.map +0 -1
  183. package/dist/search/SearchManager.d.ts +0 -326
  184. package/dist/search/SearchManager.d.ts.map +0 -1
  185. package/dist/search/SearchManager.js +0 -454
  186. package/dist/search/SearchManager.js.map +0 -1
  187. package/dist/search/SearchSuggestions.d.ts +0 -27
  188. package/dist/search/SearchSuggestions.d.ts.map +0 -1
  189. package/dist/search/SearchSuggestions.js +0 -58
  190. package/dist/search/SearchSuggestions.js.map +0 -1
  191. package/dist/search/SemanticSearch.d.ts +0 -149
  192. package/dist/search/SemanticSearch.d.ts.map +0 -1
  193. package/dist/search/SemanticSearch.js +0 -324
  194. package/dist/search/SemanticSearch.js.map +0 -1
  195. package/dist/search/SymbolicSearch.d.ts +0 -61
  196. package/dist/search/SymbolicSearch.d.ts.map +0 -1
  197. package/dist/search/SymbolicSearch.js +0 -164
  198. package/dist/search/SymbolicSearch.js.map +0 -1
  199. package/dist/search/TFIDFEventSync.d.ts +0 -85
  200. package/dist/search/TFIDFEventSync.d.ts.map +0 -1
  201. package/dist/search/TFIDFEventSync.js +0 -134
  202. package/dist/search/TFIDFEventSync.js.map +0 -1
  203. package/dist/search/TFIDFIndexManager.d.ts +0 -151
  204. package/dist/search/TFIDFIndexManager.d.ts.map +0 -1
  205. package/dist/search/TFIDFIndexManager.js +0 -433
  206. package/dist/search/TFIDFIndexManager.js.map +0 -1
  207. package/dist/search/VectorStore.d.ts +0 -235
  208. package/dist/search/VectorStore.d.ts.map +0 -1
  209. package/dist/search/VectorStore.js +0 -312
  210. package/dist/search/VectorStore.js.map +0 -1
  211. package/dist/search/index.d.ts +0 -35
  212. package/dist/search/index.d.ts.map +0 -1
  213. package/dist/search/index.js +0 -53
  214. package/dist/search/index.js.map +0 -1
  215. package/dist/types/index.d.ts +0 -13
  216. package/dist/types/index.d.ts.map +0 -1
  217. package/dist/types/index.js +0 -13
  218. package/dist/types/index.js.map +0 -1
  219. package/dist/types/types.d.ts +0 -1811
  220. package/dist/types/types.d.ts.map +0 -1
  221. package/dist/types/types.js +0 -10
  222. package/dist/types/types.js.map +0 -1
  223. package/dist/utils/BatchProcessor.d.ts +0 -271
  224. package/dist/utils/BatchProcessor.d.ts.map +0 -1
  225. package/dist/utils/BatchProcessor.js +0 -377
  226. package/dist/utils/BatchProcessor.js.map +0 -1
  227. package/dist/utils/MemoryMonitor.d.ts +0 -176
  228. package/dist/utils/MemoryMonitor.d.ts.map +0 -1
  229. package/dist/utils/MemoryMonitor.js +0 -306
  230. package/dist/utils/MemoryMonitor.js.map +0 -1
  231. package/dist/utils/WorkerPoolManager.d.ts +0 -233
  232. package/dist/utils/WorkerPoolManager.d.ts.map +0 -1
  233. package/dist/utils/WorkerPoolManager.js +0 -421
  234. package/dist/utils/WorkerPoolManager.js.map +0 -1
  235. package/dist/utils/compressedCache.d.ts +0 -221
  236. package/dist/utils/compressedCache.d.ts.map +0 -1
  237. package/dist/utils/compressedCache.js +0 -349
  238. package/dist/utils/compressedCache.js.map +0 -1
  239. package/dist/utils/compressionUtil.d.ts +0 -214
  240. package/dist/utils/compressionUtil.d.ts.map +0 -1
  241. package/dist/utils/compressionUtil.js +0 -248
  242. package/dist/utils/compressionUtil.js.map +0 -1
  243. package/dist/utils/constants.d.ts +0 -245
  244. package/dist/utils/constants.d.ts.map +0 -1
  245. package/dist/utils/constants.js +0 -253
  246. package/dist/utils/constants.js.map +0 -1
  247. package/dist/utils/entityUtils.d.ts +0 -379
  248. package/dist/utils/entityUtils.d.ts.map +0 -1
  249. package/dist/utils/entityUtils.js +0 -649
  250. package/dist/utils/entityUtils.js.map +0 -1
  251. package/dist/utils/errors.d.ts +0 -95
  252. package/dist/utils/errors.d.ts.map +0 -1
  253. package/dist/utils/errors.js +0 -146
  254. package/dist/utils/errors.js.map +0 -1
  255. package/dist/utils/formatters.d.ts +0 -145
  256. package/dist/utils/formatters.d.ts.map +0 -1
  257. package/dist/utils/formatters.js +0 -133
  258. package/dist/utils/formatters.js.map +0 -1
  259. package/dist/utils/index.d.ts +0 -26
  260. package/dist/utils/index.d.ts.map +0 -1
  261. package/dist/utils/index.js +0 -88
  262. package/dist/utils/index.js.map +0 -1
  263. package/dist/utils/indexes.d.ts +0 -270
  264. package/dist/utils/indexes.d.ts.map +0 -1
  265. package/dist/utils/indexes.js +0 -527
  266. package/dist/utils/indexes.js.map +0 -1
  267. package/dist/utils/logger.d.ts +0 -31
  268. package/dist/utils/logger.d.ts.map +0 -1
  269. package/dist/utils/logger.js +0 -41
  270. package/dist/utils/logger.js.map +0 -1
  271. package/dist/utils/operationUtils.d.ts +0 -124
  272. package/dist/utils/operationUtils.d.ts.map +0 -1
  273. package/dist/utils/operationUtils.js +0 -176
  274. package/dist/utils/operationUtils.js.map +0 -1
  275. package/dist/utils/parallelUtils.d.ts +0 -76
  276. package/dist/utils/parallelUtils.d.ts.map +0 -1
  277. package/dist/utils/parallelUtils.js +0 -192
  278. package/dist/utils/parallelUtils.js.map +0 -1
  279. package/dist/utils/schemas.d.ts +0 -556
  280. package/dist/utils/schemas.d.ts.map +0 -1
  281. package/dist/utils/schemas.js +0 -485
  282. package/dist/utils/schemas.js.map +0 -1
  283. package/dist/utils/searchAlgorithms.d.ts +0 -99
  284. package/dist/utils/searchAlgorithms.d.ts.map +0 -1
  285. package/dist/utils/searchAlgorithms.js +0 -168
  286. package/dist/utils/searchAlgorithms.js.map +0 -1
  287. package/dist/utils/searchCache.d.ts +0 -108
  288. package/dist/utils/searchCache.d.ts.map +0 -1
  289. package/dist/utils/searchCache.js +0 -210
  290. package/dist/utils/searchCache.js.map +0 -1
  291. package/dist/utils/taskScheduler.d.ts +0 -294
  292. package/dist/utils/taskScheduler.d.ts.map +0 -1
  293. package/dist/utils/taskScheduler.js +0 -487
  294. package/dist/utils/taskScheduler.js.map +0 -1
  295. package/dist/workers/index.d.ts +0 -12
  296. package/dist/workers/index.d.ts.map +0 -1
  297. package/dist/workers/index.js +0 -10
  298. package/dist/workers/index.js.map +0 -1
  299. package/dist/workers/levenshteinWorker.d.ts +0 -60
  300. 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":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AA4CpC;;GAEG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAoC;IAC9E,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,OAAO,EAAE,SAAS;IACzB,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,cAAc;IACjB,KAAK,CAA0B;IAC/B,OAAO,CAAkC;IACzC,IAAI,GAAW,CAAC,CAAC;IACjB,MAAM,GAAW,CAAC,CAAC;IAE3B;;;;OAIG;IACH,YAAY,OAA+B;QACzC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,+BAA+B,EAAE,GAAG,OAAO,EAAE,CAAC;QAClE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACK,QAAQ,CAAC,IAAY;QAC3B,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAED;;;;;OAKG;IACK,SAAS,CAAC,KAAiB;QACjC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3D,CAAC;IAED;;OAEG;IACK,QAAQ;QACd,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,UAAU,GAAG,QAAQ,CAAC;QAE1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;gBAClC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC9B,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAW,EAAE,IAAY;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,YAAY;QACZ,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mCAAmC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0BAA0B;QAC1B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,MAAgB;QAC7C,qDAAqD;QACrD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC7B,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,4EAA4E;QAC5E,2FAA2F;QAC3F,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAClE,MAAM,WAAW,GAAG,IAAI,GAAG,cAAc,CAAC;QAE1C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9C,MAAM,OAAO,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAElE,OAAO;YACL,IAAI;YACJ,WAAW;YACX,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACH,YAAY;QACV,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,OAAuC;QACnD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACjD,CAAC;CACF"}
@@ -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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"}