@danielsimonjr/memoryjs 1.0.0 → 1.1.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 +17364 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +12371 -0
  6. package/dist/index.d.ts +12367 -11
  7. package/dist/index.js +17102 -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 +12 -6
  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,280 +0,0 @@
1
- /**
2
- * Early Termination Manager
3
- *
4
- * Phase 12 Sprint 4: Manages early termination of hybrid search when
5
- * results are adequate, executing layers in cost-order for efficiency.
6
- *
7
- * @module search/EarlyTerminationManager
8
- */
9
- import { QueryCostEstimator } from './QueryCostEstimator.js';
10
- /**
11
- * Default options for early termination.
12
- */
13
- const DEFAULT_OPTIONS = {
14
- adequacyThreshold: 0.7,
15
- minResults: 3,
16
- maxResults: 20,
17
- semanticAvailable: true,
18
- minDiversity: 0.3,
19
- minRelevance: 0.4,
20
- };
21
- /**
22
- * Early Termination Manager
23
- *
24
- * Executes search layers in cost-order (fastest first) and terminates
25
- * early when results are adequate, saving computation time.
26
- *
27
- * @example
28
- * ```typescript
29
- * const manager = new EarlyTerminationManager(hybridSearch);
30
- * const result = await manager.searchWithEarlyTermination(
31
- * graph,
32
- * 'machine learning',
33
- * { adequacyThreshold: 0.8, minResults: 5 }
34
- * );
35
- *
36
- * if (result.earlyTerminated) {
37
- * console.log(`Terminated after ${result.executedLayers.length} layers`);
38
- * }
39
- * ```
40
- */
41
- export class EarlyTerminationManager {
42
- hybridSearch;
43
- costEstimator;
44
- constructor(hybridSearch, costEstimator) {
45
- this.hybridSearch = hybridSearch;
46
- this.costEstimator = costEstimator ?? new QueryCostEstimator();
47
- }
48
- /**
49
- * Execute search with early termination support.
50
- *
51
- * Executes layers in cost-order and terminates early when results
52
- * meet the adequacy threshold.
53
- *
54
- * @param graph - Knowledge graph to search
55
- * @param query - Search query
56
- * @param options - Early termination options
57
- * @returns Search results with termination details
58
- */
59
- async searchWithEarlyTermination(graph, query, options = {}) {
60
- const startTime = Date.now();
61
- const opts = { ...DEFAULT_OPTIONS, ...options };
62
- const { semanticAvailable, maxResults } = opts;
63
- // Get layers sorted by cost (fastest first)
64
- const orderedLayers = this.costEstimator.getLayersByCost(query, graph.entities.length, semanticAvailable);
65
- const allResults = [];
66
- const executedLayers = [];
67
- let earlyTerminated = false;
68
- // Execute layers in cost order
69
- for (const { layer } of orderedLayers) {
70
- executedLayers.push(layer);
71
- // Execute single layer search
72
- const layerResults = await this.executeLayerSearch(graph, query, layer, maxResults);
73
- // Merge results (deduplicate by entity name)
74
- for (const result of layerResults) {
75
- const existing = allResults.find(r => r.entity.name === result.entity.name);
76
- if (existing) {
77
- // Update scores if this layer has higher score
78
- if (result.scores.combined > existing.scores.combined) {
79
- Object.assign(existing, result);
80
- }
81
- // Add to matched layers
82
- if (!existing.matchedLayers.includes(layer)) {
83
- existing.matchedLayers.push(layer);
84
- }
85
- }
86
- else {
87
- // Ensure matchedLayers includes current layer
88
- if (!result.matchedLayers.includes(layer)) {
89
- result.matchedLayers = [...result.matchedLayers, layer];
90
- }
91
- allResults.push(result);
92
- }
93
- }
94
- // Check adequacy
95
- const adequacy = this.checkAdequacy(allResults, opts, executedLayers);
96
- if (adequacy.adequate) {
97
- earlyTerminated = executedLayers.length < orderedLayers.length;
98
- break;
99
- }
100
- }
101
- // Final sort by combined score
102
- const sortedResults = allResults
103
- .sort((a, b) => b.scores.combined - a.scores.combined)
104
- .slice(0, maxResults);
105
- const finalAdequacy = this.checkAdequacy(sortedResults, opts, executedLayers);
106
- return {
107
- results: sortedResults,
108
- executedLayers,
109
- adequacy: finalAdequacy,
110
- earlyTerminated,
111
- executionTimeMs: Date.now() - startTime,
112
- };
113
- }
114
- /**
115
- * Execute a single layer search.
116
- * @private
117
- */
118
- async executeLayerSearch(graph, query, layer, limit) {
119
- // Configure weights to emphasize the current layer
120
- const weights = this.getLayerWeights(layer);
121
- try {
122
- return await this.hybridSearch.search(graph, query, {
123
- ...weights,
124
- limit: limit * 2, // Over-fetch for better merging
125
- });
126
- }
127
- catch {
128
- // Layer failed, return empty results
129
- return [];
130
- }
131
- }
132
- /**
133
- * Get weight configuration for a specific layer.
134
- * @private
135
- */
136
- getLayerWeights(layer) {
137
- switch (layer) {
138
- case 'semantic':
139
- return { semanticWeight: 1.0, lexicalWeight: 0.0, symbolicWeight: 0.0 };
140
- case 'lexical':
141
- return { semanticWeight: 0.0, lexicalWeight: 1.0, symbolicWeight: 0.0 };
142
- case 'symbolic':
143
- return { semanticWeight: 0.0, lexicalWeight: 0.0, symbolicWeight: 1.0 };
144
- }
145
- }
146
- /**
147
- * Check if results are adequate based on configured thresholds.
148
- *
149
- * @param results - Current search results
150
- * @param options - Adequacy options
151
- * @param executedLayers - Layers that have been executed
152
- * @returns Adequacy check result
153
- */
154
- checkAdequacy(results, options, executedLayers) {
155
- const opts = { ...DEFAULT_OPTIONS, ...options };
156
- const { adequacyThreshold, minResults, minDiversity, minRelevance, analysis, } = opts;
157
- const reasons = [];
158
- let score = 0;
159
- // Weight components
160
- const weights = {
161
- quantity: 0.35,
162
- diversity: 0.25,
163
- relevance: 0.25,
164
- coverage: 0.15,
165
- };
166
- // 1. Quantity score (do we have enough results?)
167
- const quantityScore = Math.min(results.length / minResults, 1);
168
- score += quantityScore * weights.quantity;
169
- if (quantityScore < 1) {
170
- reasons.push(`Insufficient results: ${results.length}/${minResults}`);
171
- }
172
- else {
173
- reasons.push(`Sufficient results: ${results.length}`);
174
- }
175
- // 2. Diversity score (variety of entity types and layers)
176
- const diversityScore = this.calculateDiversityScore(results);
177
- score += Math.min(diversityScore / minDiversity, 1) * weights.diversity;
178
- if (diversityScore < minDiversity) {
179
- reasons.push(`Low diversity: ${diversityScore.toFixed(2)}/${minDiversity}`);
180
- }
181
- else {
182
- reasons.push(`Good diversity: ${diversityScore.toFixed(2)}`);
183
- }
184
- // 3. Relevance score (average combined score)
185
- const avgRelevance = results.length > 0
186
- ? results.reduce((sum, r) => sum + r.scores.combined, 0) / results.length
187
- : 0;
188
- const relevanceScore = Math.min(avgRelevance / minRelevance, 1);
189
- score += relevanceScore * weights.relevance;
190
- if (avgRelevance < minRelevance) {
191
- reasons.push(`Low relevance: ${avgRelevance.toFixed(2)}/${minRelevance}`);
192
- }
193
- else {
194
- reasons.push(`Good relevance: ${avgRelevance.toFixed(2)}`);
195
- }
196
- // 4. Coverage score (how many layers contributed)
197
- const contributingLayers = this.getContributingLayers(results);
198
- const coverageScore = contributingLayers.length / executedLayers.length;
199
- score += coverageScore * weights.coverage;
200
- if (coverageScore < 0.5) {
201
- reasons.push(`Low layer coverage: ${contributingLayers.length}/${executedLayers.length}`);
202
- }
203
- else {
204
- reasons.push(`Good layer coverage: ${contributingLayers.length}/${executedLayers.length}`);
205
- }
206
- // Bonus for matching required info types (if analysis provided)
207
- if (analysis && analysis.requiredInfoTypes.length > 0) {
208
- const entityTypes = new Set(results.map(r => r.entity.entityType.toLowerCase()));
209
- const matchedTypes = analysis.requiredInfoTypes.filter(t => entityTypes.has(t) ||
210
- (t === 'person' && entityTypes.has('person')) ||
211
- (t === 'entity' && entityTypes.size > 0));
212
- const typeMatchScore = matchedTypes.length / analysis.requiredInfoTypes.length;
213
- score += typeMatchScore * 0.1; // Bonus weight
214
- reasons.push(`Info type coverage: ${matchedTypes.length}/${analysis.requiredInfoTypes.length}`);
215
- }
216
- // Normalize score
217
- score = Math.min(score, 1);
218
- return {
219
- adequate: score >= adequacyThreshold,
220
- score,
221
- reasons,
222
- contributingLayers,
223
- };
224
- }
225
- /**
226
- * Calculate diversity score from results.
227
- * @private
228
- */
229
- calculateDiversityScore(results) {
230
- if (results.length === 0)
231
- return 0;
232
- // Type diversity
233
- const entityTypes = new Set(results.map(r => r.entity.entityType));
234
- const typeDiversity = Math.min(entityTypes.size / 3, 1);
235
- // Layer diversity
236
- const layerCounts = { semantic: 0, lexical: 0, symbolic: 0 };
237
- for (const result of results) {
238
- for (const layer of result.matchedLayers) {
239
- layerCounts[layer]++;
240
- }
241
- }
242
- const activeLayers = Object.values(layerCounts).filter(c => c > 0).length;
243
- const layerDiversity = activeLayers / 3;
244
- // Combined diversity
245
- return (typeDiversity + layerDiversity) / 2;
246
- }
247
- /**
248
- * Get layers that contributed to results.
249
- * @private
250
- */
251
- getContributingLayers(results) {
252
- const layers = new Set();
253
- for (const result of results) {
254
- for (const layer of result.matchedLayers) {
255
- layers.add(layer);
256
- }
257
- }
258
- return Array.from(layers);
259
- }
260
- /**
261
- * Calculate adequacy score for a set of results.
262
- *
263
- * Standalone method for checking result adequacy without full search.
264
- *
265
- * @param results - Results to evaluate
266
- * @param options - Adequacy options
267
- * @returns Adequacy score (0-1)
268
- */
269
- calculateAdequacyScore(results, options = {}) {
270
- const allLayers = ['semantic', 'lexical', 'symbolic'];
271
- return this.checkAdequacy(results, options, allLayers).score;
272
- }
273
- /**
274
- * Get the cost estimator for external use.
275
- */
276
- getCostEstimator() {
277
- return this.costEstimator;
278
- }
279
- }
280
- //# sourceMappingURL=EarlyTerminationManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EarlyTerminationManager.js","sourceRoot":"","sources":["../../src/search/EarlyTerminationManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAoD7D;;GAEG;AACH,MAAM,eAAe,GAAwD;IAC3E,iBAAiB,EAAE,GAAG;IACtB,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,EAAE;IACd,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,GAAG;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,uBAAuB;IAIxB;IAHF,aAAa,CAAqB;IAE1C,YACU,YAAiC,EACzC,aAAkC;QAD1B,iBAAY,GAAZ,YAAY,CAAqB;QAGzC,IAAI,CAAC,aAAa,GAAG,aAAa,IAAI,IAAI,kBAAkB,EAAE,CAAC;IACjE,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,0BAA0B,CAC9B,KAA6B,EAC7B,KAAa,EACb,UAAmC,EAAE;QAErC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;QAChD,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAE/C,4CAA4C;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CACtD,KAAK,EACL,KAAK,CAAC,QAAQ,CAAC,MAAM,EACrB,iBAAiB,CAClB,CAAC;QAEF,MAAM,UAAU,GAAyB,EAAE,CAAC;QAC5C,MAAM,cAAc,GAAkB,EAAE,CAAC;QACzC,IAAI,eAAe,GAAG,KAAK,CAAC;QAE5B,+BAA+B;QAC/B,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,aAAa,EAAE,CAAC;YACtC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE3B,8BAA8B;YAC9B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAChD,KAAK,EACL,KAAK,EACL,KAAK,EACL,UAAU,CACX,CAAC;YAEF,6CAA6C;YAC7C,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5E,IAAI,QAAQ,EAAE,CAAC;oBACb,+CAA+C;oBAC/C,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;wBACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBAClC,CAAC;oBACD,wBAAwB;oBACxB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC5C,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,8CAA8C;oBAC9C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC1C,MAAM,CAAC,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;oBAC1D,CAAC;oBACD,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YAED,iBAAiB;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YAEtE,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,eAAe,GAAG,cAAc,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;gBAC/D,MAAM;YACR,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,MAAM,aAAa,GAAG,UAAU;aAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;aACrD,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAExB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QAE9E,OAAO;YACL,OAAO,EAAE,aAAa;YACtB,cAAc;YACd,QAAQ,EAAE,aAAa;YACvB,eAAe;YACf,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACxC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAC9B,KAA6B,EAC7B,KAAa,EACb,KAAkB,EAClB,KAAa;QAEb,mDAAmD;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE;gBAClD,GAAG,OAAO;gBACV,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,gCAAgC;aACnD,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;YACrC,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,KAAkB;QAKxC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,UAAU;gBACb,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;YAC1E,KAAK,SAAS;gBACZ,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;YAC1E,KAAK,UAAU;gBACb,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;QAC5E,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CACX,OAA6B,EAC7B,OAAgC,EAChC,cAA6B;QAE7B,MAAM,IAAI,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;QAChD,MAAM,EACJ,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,QAAQ,GACT,GAAG,IAAI,CAAC;QAET,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,oBAAoB;QACpB,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;SACf,CAAC;QAEF,iDAAiD;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/D,KAAK,IAAI,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;QAE1C,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,yBAAyB,OAAO,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,0DAA0D;QAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC7D,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,YAAY,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAExE,IAAI,cAAc,GAAG,YAAY,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,kBAAkB,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,mBAAmB,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,8CAA8C;QAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;YACrC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM;YACzE,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;QAChE,KAAK,IAAI,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;QAE5C,IAAI,YAAY,GAAG,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,kBAAkB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,mBAAmB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,kDAAkD;QAClD,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QACxE,KAAK,IAAI,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;QAE1C,IAAI,aAAa,GAAG,GAAG,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,uBAAuB,kBAAkB,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,wBAAwB,kBAAkB,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,gEAAgE;QAChE,IAAI,QAAQ,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACjF,MAAM,YAAY,GAAG,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACzD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClB,CAAC,CAAC,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7C,CAAC,CAAC,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,CACzC,CAAC;YACF,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC/E,KAAK,IAAI,cAAc,GAAG,GAAG,CAAC,CAAC,eAAe;YAC9C,OAAO,CAAC,IAAI,CAAC,uBAAuB,YAAY,CAAC,MAAM,IAAI,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;QAClG,CAAC;QAED,kBAAkB;QAClB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAE3B,OAAO;YACL,QAAQ,EAAE,KAAK,IAAI,iBAAiB;YACpC,KAAK;YACL,OAAO;YACP,kBAAkB;SACnB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAAC,OAA6B;QAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAEnC,iBAAiB;QACjB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAExD,kBAAkB;QAClB,MAAM,WAAW,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC7D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,CAAC;QACH,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1E,MAAM,cAAc,GAAG,YAAY,GAAG,CAAC,CAAC;QAExC,qBAAqB;QACrB,OAAO,CAAC,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,OAA6B;QACzD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;gBACzC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;OAQG;IACH,sBAAsB,CACpB,OAA6B,EAC7B,UAAmC,EAAE;QAErC,MAAM,SAAS,GAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CACF"}
@@ -1,175 +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
- /**
10
- * Statistics for the embedding cache.
11
- */
12
- export interface EmbeddingCacheStats {
13
- /** Number of entries in the cache */
14
- size: number;
15
- /** Estimated memory usage in bytes */
16
- memoryBytes: number;
17
- /** Cache hit rate (0-1) */
18
- hitRate: number;
19
- /** Total cache hits */
20
- hits: number;
21
- /** Total cache misses */
22
- misses: number;
23
- }
24
- /**
25
- * Options for EmbeddingCache.
26
- */
27
- export interface EmbeddingCacheOptions {
28
- /** Maximum number of entries in the cache (default: 1000) */
29
- maxSize?: number;
30
- /** Time-to-live in milliseconds (default: 3600000 = 1 hour) */
31
- ttlMs?: number;
32
- /** Dimensions of embedding vectors for memory estimation (default: 384) */
33
- dimensions?: number;
34
- }
35
- /**
36
- * Default cache options.
37
- */
38
- export declare const DEFAULT_EMBEDDING_CACHE_OPTIONS: Required<EmbeddingCacheOptions>;
39
- /**
40
- * LRU cache for embedding vectors with hit/miss tracking.
41
- *
42
- * Features:
43
- * - LRU eviction when max size is reached
44
- * - Text hash-based invalidation (detects stale entries)
45
- * - TTL support for automatic expiration
46
- * - Hit/miss statistics tracking
47
- *
48
- * @example
49
- * ```typescript
50
- * const cache = new EmbeddingCache({ maxSize: 500, ttlMs: 60000 });
51
- *
52
- * // Cache an embedding
53
- * cache.set('entity1', 'Original text content', [0.1, 0.2, ...]);
54
- *
55
- * // Retrieve from cache
56
- * const result = cache.get('entity1', 'Original text content');
57
- * if (result) {
58
- * console.log('Cache hit!', result);
59
- * }
60
- *
61
- * // Check stats
62
- * console.log(cache.getStats()); // { size, memoryBytes, hitRate, hits, misses }
63
- * ```
64
- */
65
- export declare class EmbeddingCache {
66
- private cache;
67
- private options;
68
- private hits;
69
- private misses;
70
- /**
71
- * Create a new embedding cache.
72
- *
73
- * @param options - Cache configuration options
74
- */
75
- constructor(options?: EmbeddingCacheOptions);
76
- /**
77
- * Hash a text string for cache invalidation.
78
- *
79
- * @param text - Text to hash
80
- * @returns MD5 hash of the text
81
- */
82
- private hashText;
83
- /**
84
- * Check if an entry is expired based on TTL.
85
- *
86
- * @param entry - Cache entry to check
87
- * @returns True if expired
88
- */
89
- private isExpired;
90
- /**
91
- * Evict the least recently used entry.
92
- */
93
- private evictLRU;
94
- /**
95
- * Get an embedding from the cache.
96
- *
97
- * Returns null if:
98
- * - Key not found
99
- * - Entry is expired (TTL)
100
- * - Text hash doesn't match (content changed)
101
- *
102
- * @param key - Cache key (typically entity name)
103
- * @param text - Current text content (for hash validation)
104
- * @returns Embedding vector if found and valid, null otherwise
105
- */
106
- get(key: string, text: string): number[] | null;
107
- /**
108
- * Set an embedding in the cache.
109
- *
110
- * Automatically evicts LRU entries if max size is reached.
111
- *
112
- * @param key - Cache key (typically entity name)
113
- * @param text - Text content (used for hash-based invalidation)
114
- * @param vector - Embedding vector to cache
115
- */
116
- set(key: string, text: string, vector: number[]): void;
117
- /**
118
- * Check if a key exists in the cache (without affecting hit/miss stats).
119
- *
120
- * @param key - Cache key to check
121
- * @returns True if key exists (may be expired or stale)
122
- */
123
- has(key: string): boolean;
124
- /**
125
- * Delete an entry from the cache.
126
- *
127
- * @param key - Cache key to delete
128
- * @returns True if entry was deleted
129
- */
130
- delete(key: string): boolean;
131
- /**
132
- * Clear all entries from the cache.
133
- */
134
- clear(): void;
135
- /**
136
- * Get cache statistics.
137
- *
138
- * @returns Cache statistics including size, memory usage, and hit rate
139
- */
140
- getStats(): EmbeddingCacheStats;
141
- /**
142
- * Reset hit/miss statistics (useful for benchmarks).
143
- */
144
- resetStats(): void;
145
- /**
146
- * Remove expired entries from the cache.
147
- *
148
- * Called automatically during get operations, but can be
149
- * manually triggered for maintenance.
150
- *
151
- * @returns Number of entries removed
152
- */
153
- pruneExpired(): number;
154
- /**
155
- * Get the current cache size.
156
- *
157
- * @returns Number of entries in the cache
158
- */
159
- size(): number;
160
- /**
161
- * Get all cached keys.
162
- *
163
- * @returns Array of cache keys
164
- */
165
- keys(): string[];
166
- /**
167
- * Update options dynamically.
168
- *
169
- * Note: Reducing maxSize will not immediately evict entries.
170
- *
171
- * @param options - New options to apply
172
- */
173
- updateOptions(options: Partial<EmbeddingCacheOptions>): void;
174
- }
175
- //# sourceMappingURL=EmbeddingCache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EmbeddingCache.d.ts","sourceRoot":"","sources":["../../src/search/EmbeddingCache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkBH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,qBAAqB,CAI3E,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAE3B;;;;OAIG;gBACS,OAAO,CAAC,EAAE,qBAAqB;IAK3C;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAIhB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAgBhB;;;;;;;;;;;OAWG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IA8B/C;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAetD;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;OAIG;IACH,QAAQ,IAAI,mBAAmB;IAmB/B;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;;;;;;OAOG;IACH,YAAY,IAAI,MAAM;IAWtB;;;;OAIG;IACH,IAAI,IAAI,MAAM;IAId;;;;OAIG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB;;;;;;OAMG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI;CAG7D"}