agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.1

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 (314) hide show
  1. package/dist/agentdb.min.js +4 -4
  2. package/dist/simulation/cli.js +0 -0
  3. package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
  4. package/dist/src/cli/agentdb-cli.js +78 -0
  5. package/dist/src/cli/agentdb-cli.js.map +1 -1
  6. package/package.json +3 -3
  7. package/src/cli/agentdb-cli.ts +78 -0
  8. package/dist/agentdb-advanced.js +0 -2110
  9. package/dist/agentdb-advanced.min.js +0 -1
  10. package/dist/backends/GraphBackend.d.ts +0 -196
  11. package/dist/backends/GraphBackend.d.ts.map +0 -1
  12. package/dist/backends/GraphBackend.js +0 -33
  13. package/dist/backends/GraphBackend.js.map +0 -1
  14. package/dist/backends/LearningBackend.d.ts +0 -148
  15. package/dist/backends/LearningBackend.d.ts.map +0 -1
  16. package/dist/backends/LearningBackend.js +0 -27
  17. package/dist/backends/LearningBackend.js.map +0 -1
  18. package/dist/backends/VectorBackend.d.ts +0 -119
  19. package/dist/backends/VectorBackend.d.ts.map +0 -1
  20. package/dist/backends/VectorBackend.js +0 -14
  21. package/dist/backends/VectorBackend.js.map +0 -1
  22. package/dist/backends/detector.d.ts +0 -81
  23. package/dist/backends/detector.d.ts.map +0 -1
  24. package/dist/backends/detector.js +0 -192
  25. package/dist/backends/detector.js.map +0 -1
  26. package/dist/backends/factory.d.ts +0 -50
  27. package/dist/backends/factory.d.ts.map +0 -1
  28. package/dist/backends/factory.js +0 -161
  29. package/dist/backends/factory.js.map +0 -1
  30. package/dist/backends/graph/GraphDatabaseAdapter.d.ts +0 -139
  31. package/dist/backends/graph/GraphDatabaseAdapter.d.ts.map +0 -1
  32. package/dist/backends/graph/GraphDatabaseAdapter.js +0 -194
  33. package/dist/backends/graph/GraphDatabaseAdapter.js.map +0 -1
  34. package/dist/backends/hnswlib/HNSWLibBackend.d.ts +0 -92
  35. package/dist/backends/hnswlib/HNSWLibBackend.d.ts.map +0 -1
  36. package/dist/backends/hnswlib/HNSWLibBackend.js +0 -316
  37. package/dist/backends/hnswlib/HNSWLibBackend.js.map +0 -1
  38. package/dist/backends/hnswlib/index.d.ts +0 -7
  39. package/dist/backends/hnswlib/index.d.ts.map +0 -1
  40. package/dist/backends/hnswlib/index.js +0 -7
  41. package/dist/backends/hnswlib/index.js.map +0 -1
  42. package/dist/backends/index.d.ts +0 -14
  43. package/dist/backends/index.d.ts.map +0 -1
  44. package/dist/backends/index.js +0 -13
  45. package/dist/backends/index.js.map +0 -1
  46. package/dist/backends/ruvector/RuVectorBackend.d.ts +0 -75
  47. package/dist/backends/ruvector/RuVectorBackend.d.ts.map +0 -1
  48. package/dist/backends/ruvector/RuVectorBackend.js +0 -198
  49. package/dist/backends/ruvector/RuVectorBackend.js.map +0 -1
  50. package/dist/backends/ruvector/RuVectorLearning.d.ts +0 -104
  51. package/dist/backends/ruvector/RuVectorLearning.d.ts.map +0 -1
  52. package/dist/backends/ruvector/RuVectorLearning.js +0 -177
  53. package/dist/backends/ruvector/RuVectorLearning.js.map +0 -1
  54. package/dist/backends/ruvector/index.d.ts +0 -9
  55. package/dist/backends/ruvector/index.d.ts.map +0 -1
  56. package/dist/backends/ruvector/index.js +0 -8
  57. package/dist/backends/ruvector/index.js.map +0 -1
  58. package/dist/benchmarks/wasm-vector-benchmark.d.ts +0 -10
  59. package/dist/benchmarks/wasm-vector-benchmark.d.ts.map +0 -1
  60. package/dist/benchmarks/wasm-vector-benchmark.js +0 -196
  61. package/dist/benchmarks/wasm-vector-benchmark.js.map +0 -1
  62. package/dist/browser/AdvancedFeatures.d.ts +0 -144
  63. package/dist/browser/AdvancedFeatures.d.ts.map +0 -1
  64. package/dist/browser/AdvancedFeatures.js +0 -430
  65. package/dist/browser/AdvancedFeatures.js.map +0 -1
  66. package/dist/browser/HNSWIndex.d.ts +0 -117
  67. package/dist/browser/HNSWIndex.d.ts.map +0 -1
  68. package/dist/browser/HNSWIndex.js +0 -402
  69. package/dist/browser/HNSWIndex.js.map +0 -1
  70. package/dist/browser/ProductQuantization.d.ts +0 -107
  71. package/dist/browser/ProductQuantization.d.ts.map +0 -1
  72. package/dist/browser/ProductQuantization.js +0 -337
  73. package/dist/browser/ProductQuantization.js.map +0 -1
  74. package/dist/browser/browser/AdvancedFeatures.d.ts +0 -144
  75. package/dist/browser/browser/AdvancedFeatures.d.ts.map +0 -1
  76. package/dist/browser/browser/AdvancedFeatures.js +0 -427
  77. package/dist/browser/browser/HNSWIndex.d.ts +0 -117
  78. package/dist/browser/browser/HNSWIndex.d.ts.map +0 -1
  79. package/dist/browser/browser/HNSWIndex.js +0 -402
  80. package/dist/browser/browser/ProductQuantization.d.ts +0 -107
  81. package/dist/browser/browser/ProductQuantization.d.ts.map +0 -1
  82. package/dist/browser/browser/ProductQuantization.js +0 -348
  83. package/dist/browser/browser/index.d.ts +0 -223
  84. package/dist/browser/browser/index.d.ts.map +0 -1
  85. package/dist/browser/browser/index.js +0 -233
  86. package/dist/browser/index.d.ts +0 -223
  87. package/dist/browser/index.d.ts.map +0 -1
  88. package/dist/browser/index.js +0 -225
  89. package/dist/browser/index.js.map +0 -1
  90. package/dist/cli/agentdb-cli.d.ts +0 -154
  91. package/dist/cli/agentdb-cli.d.ts.map +0 -1
  92. package/dist/cli/agentdb-cli.js +0 -2273
  93. package/dist/cli/agentdb-cli.js.map +0 -1
  94. package/dist/cli/agentdb.db +0 -0
  95. package/dist/cli/commands/init.d.ts +0 -12
  96. package/dist/cli/commands/init.d.ts.map +0 -1
  97. package/dist/cli/commands/init.js +0 -115
  98. package/dist/cli/commands/init.js.map +0 -1
  99. package/dist/cli/commands/install-embeddings.d.ts +0 -10
  100. package/dist/cli/commands/install-embeddings.d.ts.map +0 -1
  101. package/dist/cli/commands/install-embeddings.js +0 -68
  102. package/dist/cli/commands/install-embeddings.js.map +0 -1
  103. package/dist/cli/commands/migrate.d.ts +0 -15
  104. package/dist/cli/commands/migrate.d.ts.map +0 -1
  105. package/dist/cli/commands/migrate.js +0 -425
  106. package/dist/cli/commands/migrate.js.map +0 -1
  107. package/dist/cli/commands/status.d.ts +0 -10
  108. package/dist/cli/commands/status.d.ts.map +0 -1
  109. package/dist/cli/commands/status.js +0 -129
  110. package/dist/cli/commands/status.js.map +0 -1
  111. package/dist/controllers/CausalMemoryGraph.d.ts +0 -126
  112. package/dist/controllers/CausalMemoryGraph.d.ts.map +0 -1
  113. package/dist/controllers/CausalMemoryGraph.js +0 -323
  114. package/dist/controllers/CausalMemoryGraph.js.map +0 -1
  115. package/dist/controllers/CausalRecall.d.ts +0 -139
  116. package/dist/controllers/CausalRecall.d.ts.map +0 -1
  117. package/dist/controllers/CausalRecall.js +0 -356
  118. package/dist/controllers/CausalRecall.js.map +0 -1
  119. package/dist/controllers/ContextSynthesizer.d.ts +0 -65
  120. package/dist/controllers/ContextSynthesizer.d.ts.map +0 -1
  121. package/dist/controllers/ContextSynthesizer.js +0 -208
  122. package/dist/controllers/ContextSynthesizer.js.map +0 -1
  123. package/dist/controllers/EmbeddingService.d.ts +0 -37
  124. package/dist/controllers/EmbeddingService.d.ts.map +0 -1
  125. package/dist/controllers/EmbeddingService.js +0 -136
  126. package/dist/controllers/EmbeddingService.js.map +0 -1
  127. package/dist/controllers/EnhancedEmbeddingService.d.ts +0 -50
  128. package/dist/controllers/EnhancedEmbeddingService.d.ts.map +0 -1
  129. package/dist/controllers/EnhancedEmbeddingService.js +0 -119
  130. package/dist/controllers/EnhancedEmbeddingService.js.map +0 -1
  131. package/dist/controllers/ExplainableRecall.d.ts +0 -163
  132. package/dist/controllers/ExplainableRecall.d.ts.map +0 -1
  133. package/dist/controllers/ExplainableRecall.js +0 -485
  134. package/dist/controllers/ExplainableRecall.js.map +0 -1
  135. package/dist/controllers/HNSWIndex.d.ts +0 -128
  136. package/dist/controllers/HNSWIndex.d.ts.map +0 -1
  137. package/dist/controllers/HNSWIndex.js +0 -361
  138. package/dist/controllers/HNSWIndex.js.map +0 -1
  139. package/dist/controllers/LearningSystem.d.ts +0 -195
  140. package/dist/controllers/LearningSystem.d.ts.map +0 -1
  141. package/dist/controllers/LearningSystem.js +0 -929
  142. package/dist/controllers/LearningSystem.js.map +0 -1
  143. package/dist/controllers/MMRDiversityRanker.d.ts +0 -50
  144. package/dist/controllers/MMRDiversityRanker.d.ts.map +0 -1
  145. package/dist/controllers/MMRDiversityRanker.js +0 -130
  146. package/dist/controllers/MMRDiversityRanker.js.map +0 -1
  147. package/dist/controllers/MetadataFilter.d.ts +0 -70
  148. package/dist/controllers/MetadataFilter.d.ts.map +0 -1
  149. package/dist/controllers/MetadataFilter.js +0 -243
  150. package/dist/controllers/MetadataFilter.js.map +0 -1
  151. package/dist/controllers/NightlyLearner.d.ts +0 -114
  152. package/dist/controllers/NightlyLearner.d.ts.map +0 -1
  153. package/dist/controllers/NightlyLearner.js +0 -394
  154. package/dist/controllers/NightlyLearner.js.map +0 -1
  155. package/dist/controllers/QUICClient.d.ts +0 -109
  156. package/dist/controllers/QUICClient.d.ts.map +0 -1
  157. package/dist/controllers/QUICClient.js +0 -299
  158. package/dist/controllers/QUICClient.js.map +0 -1
  159. package/dist/controllers/QUICServer.d.ts +0 -121
  160. package/dist/controllers/QUICServer.d.ts.map +0 -1
  161. package/dist/controllers/QUICServer.js +0 -383
  162. package/dist/controllers/QUICServer.js.map +0 -1
  163. package/dist/controllers/ReasoningBank.d.ts +0 -196
  164. package/dist/controllers/ReasoningBank.d.ts.map +0 -1
  165. package/dist/controllers/ReasoningBank.js +0 -494
  166. package/dist/controllers/ReasoningBank.js.map +0 -1
  167. package/dist/controllers/ReflexionMemory.d.ts +0 -125
  168. package/dist/controllers/ReflexionMemory.d.ts.map +0 -1
  169. package/dist/controllers/ReflexionMemory.js +0 -521
  170. package/dist/controllers/ReflexionMemory.js.map +0 -1
  171. package/dist/controllers/SkillLibrary.d.ts +0 -149
  172. package/dist/controllers/SkillLibrary.d.ts.map +0 -1
  173. package/dist/controllers/SkillLibrary.js +0 -547
  174. package/dist/controllers/SkillLibrary.js.map +0 -1
  175. package/dist/controllers/SyncCoordinator.d.ts +0 -120
  176. package/dist/controllers/SyncCoordinator.d.ts.map +0 -1
  177. package/dist/controllers/SyncCoordinator.js +0 -441
  178. package/dist/controllers/SyncCoordinator.js.map +0 -1
  179. package/dist/controllers/WASMVectorSearch.d.ts +0 -89
  180. package/dist/controllers/WASMVectorSearch.d.ts.map +0 -1
  181. package/dist/controllers/WASMVectorSearch.js +0 -234
  182. package/dist/controllers/WASMVectorSearch.js.map +0 -1
  183. package/dist/controllers/frontier-index.d.ts +0 -14
  184. package/dist/controllers/frontier-index.d.ts.map +0 -1
  185. package/dist/controllers/frontier-index.js +0 -10
  186. package/dist/controllers/frontier-index.js.map +0 -1
  187. package/dist/controllers/index.d.ts +0 -30
  188. package/dist/controllers/index.d.ts.map +0 -1
  189. package/dist/controllers/index.js +0 -18
  190. package/dist/controllers/index.js.map +0 -1
  191. package/dist/db-fallback.d.ts +0 -26
  192. package/dist/db-fallback.d.ts.map +0 -1
  193. package/dist/db-fallback.js +0 -264
  194. package/dist/db-fallback.js.map +0 -1
  195. package/dist/db-test.d.ts +0 -13
  196. package/dist/db-test.d.ts.map +0 -1
  197. package/dist/db-test.js +0 -55
  198. package/dist/db-test.js.map +0 -1
  199. package/dist/db-unified.d.ts +0 -76
  200. package/dist/db-unified.d.ts.map +0 -1
  201. package/dist/db-unified.js +0 -278
  202. package/dist/db-unified.js.map +0 -1
  203. package/dist/examples/quic-sync-example.d.ts +0 -9
  204. package/dist/examples/quic-sync-example.d.ts.map +0 -1
  205. package/dist/examples/quic-sync-example.js +0 -169
  206. package/dist/examples/quic-sync-example.js.map +0 -1
  207. package/dist/examples/wasm-vector-usage.d.ts +0 -12
  208. package/dist/examples/wasm-vector-usage.d.ts.map +0 -1
  209. package/dist/examples/wasm-vector-usage.js +0 -190
  210. package/dist/examples/wasm-vector-usage.js.map +0 -1
  211. package/dist/index.d.ts +0 -28
  212. package/dist/index.d.ts.map +0 -1
  213. package/dist/index.js +0 -35
  214. package/dist/index.js.map +0 -1
  215. package/dist/malp/core/ccc.d.ts +0 -99
  216. package/dist/malp/core/ccc.d.ts.map +0 -1
  217. package/dist/malp/core/ccc.js +0 -181
  218. package/dist/malp/core/ccc.js.map +0 -1
  219. package/dist/malp/core/index.d.ts +0 -9
  220. package/dist/malp/core/index.d.ts.map +0 -1
  221. package/dist/malp/core/index.js +0 -9
  222. package/dist/malp/core/index.js.map +0 -1
  223. package/dist/malp/core/linalg.d.ts +0 -101
  224. package/dist/malp/core/linalg.d.ts.map +0 -1
  225. package/dist/malp/core/linalg.js +0 -278
  226. package/dist/malp/core/linalg.js.map +0 -1
  227. package/dist/malp/core/optimizer.d.ts +0 -68
  228. package/dist/malp/core/optimizer.d.ts.map +0 -1
  229. package/dist/malp/core/optimizer.js +0 -160
  230. package/dist/malp/core/optimizer.js.map +0 -1
  231. package/dist/malp/index.d.ts +0 -33
  232. package/dist/malp/index.d.ts.map +0 -1
  233. package/dist/malp/index.js +0 -37
  234. package/dist/malp/index.js.map +0 -1
  235. package/dist/malp/metrics/agreement.d.ts +0 -106
  236. package/dist/malp/metrics/agreement.d.ts.map +0 -1
  237. package/dist/malp/metrics/agreement.js +0 -199
  238. package/dist/malp/metrics/agreement.js.map +0 -1
  239. package/dist/malp/metrics/comparison.d.ts +0 -93
  240. package/dist/malp/metrics/comparison.d.ts.map +0 -1
  241. package/dist/malp/metrics/comparison.js +0 -256
  242. package/dist/malp/metrics/comparison.js.map +0 -1
  243. package/dist/malp/metrics/index.d.ts +0 -8
  244. package/dist/malp/metrics/index.d.ts.map +0 -1
  245. package/dist/malp/metrics/index.js +0 -8
  246. package/dist/malp/metrics/index.js.map +0 -1
  247. package/dist/malp/metrics/performance.d.ts +0 -61
  248. package/dist/malp/metrics/performance.d.ts.map +0 -1
  249. package/dist/malp/metrics/performance.js +0 -190
  250. package/dist/malp/metrics/performance.js.map +0 -1
  251. package/dist/malp/models/index.d.ts +0 -7
  252. package/dist/malp/models/index.d.ts.map +0 -1
  253. package/dist/malp/models/index.js +0 -7
  254. package/dist/malp/models/index.js.map +0 -1
  255. package/dist/malp/models/malp.d.ts +0 -116
  256. package/dist/malp/models/malp.d.ts.map +0 -1
  257. package/dist/malp/models/malp.js +0 -206
  258. package/dist/malp/models/malp.js.map +0 -1
  259. package/dist/malp/models/regressor.d.ts +0 -80
  260. package/dist/malp/models/regressor.d.ts.map +0 -1
  261. package/dist/malp/models/regressor.js +0 -229
  262. package/dist/malp/models/regressor.js.map +0 -1
  263. package/dist/malp/reasoningbank_validator.d.ts +0 -187
  264. package/dist/malp/reasoningbank_validator.d.ts.map +0 -1
  265. package/dist/malp/reasoningbank_validator.js +0 -246
  266. package/dist/malp/reasoningbank_validator.js.map +0 -1
  267. package/dist/malp/wasm_bindings.d.ts +0 -344
  268. package/dist/malp/wasm_bindings.d.ts.map +0 -1
  269. package/dist/malp/wasm_bindings.js +0 -9
  270. package/dist/malp/wasm_bindings.js.map +0 -1
  271. package/dist/mcp/agentdb-mcp-server.d.ts +0 -8
  272. package/dist/mcp/agentdb-mcp-server.d.ts.map +0 -1
  273. package/dist/mcp/agentdb-mcp-server.js +0 -2116
  274. package/dist/mcp/agentdb-mcp-server.js.map +0 -1
  275. package/dist/mcp/learning-tools-handlers.d.ts +0 -16
  276. package/dist/mcp/learning-tools-handlers.d.ts.map +0 -1
  277. package/dist/mcp/learning-tools-handlers.js +0 -105
  278. package/dist/mcp/learning-tools-handlers.js.map +0 -1
  279. package/dist/optimizations/BatchOperations.d.ts +0 -109
  280. package/dist/optimizations/BatchOperations.d.ts.map +0 -1
  281. package/dist/optimizations/BatchOperations.js +0 -407
  282. package/dist/optimizations/BatchOperations.js.map +0 -1
  283. package/dist/optimizations/QueryOptimizer.d.ts +0 -83
  284. package/dist/optimizations/QueryOptimizer.d.ts.map +0 -1
  285. package/dist/optimizations/QueryOptimizer.js +0 -228
  286. package/dist/optimizations/QueryOptimizer.js.map +0 -1
  287. package/dist/optimizations/ToolCache.d.ts +0 -137
  288. package/dist/optimizations/ToolCache.d.ts.map +0 -1
  289. package/dist/optimizations/ToolCache.js +0 -281
  290. package/dist/optimizations/ToolCache.js.map +0 -1
  291. package/dist/optimizations/index.d.ts +0 -10
  292. package/dist/optimizations/index.d.ts.map +0 -1
  293. package/dist/optimizations/index.js +0 -8
  294. package/dist/optimizations/index.js.map +0 -1
  295. package/dist/security/input-validation.d.ts +0 -109
  296. package/dist/security/input-validation.d.ts.map +0 -1
  297. package/dist/security/input-validation.js +0 -398
  298. package/dist/security/input-validation.js.map +0 -1
  299. package/dist/security/limits.d.ts +0 -150
  300. package/dist/security/limits.d.ts.map +0 -1
  301. package/dist/security/limits.js +0 -288
  302. package/dist/security/limits.js.map +0 -1
  303. package/dist/security/path-security.d.ts +0 -100
  304. package/dist/security/path-security.d.ts.map +0 -1
  305. package/dist/security/path-security.js +0 -337
  306. package/dist/security/path-security.js.map +0 -1
  307. package/dist/security/validation.d.ts +0 -95
  308. package/dist/security/validation.d.ts.map +0 -1
  309. package/dist/security/validation.js +0 -315
  310. package/dist/security/validation.js.map +0 -1
  311. package/dist/types/quic.d.ts +0 -518
  312. package/dist/types/quic.d.ts.map +0 -1
  313. package/dist/types/quic.js +0 -272
  314. package/dist/types/quic.js.map +0 -1
@@ -1,427 +0,0 @@
1
- /**
2
- * Advanced Features for AgentDB Browser
3
- *
4
- * Includes:
5
- * - GNN (Graph Neural Networks) - Graph attention and message passing
6
- * - MMR (Maximal Marginal Relevance) - Diversity ranking
7
- * - SVD (Singular Value Decomposition) - Tensor compression
8
- * - Batch operations and utilities
9
- */
10
- /**
11
- * Graph Neural Network with attention mechanism
12
- */
13
- export class GraphNeuralNetwork {
14
- constructor(config = {}) {
15
- this.nodes = new Map();
16
- this.edges = [];
17
- this.attentionWeights = new Map();
18
- this.config = {
19
- hiddenDim: config.hiddenDim || 64,
20
- numHeads: config.numHeads || 4,
21
- dropout: config.dropout || 0.1,
22
- learningRate: config.learningRate || 0.01,
23
- attentionType: config.attentionType || 'gat'
24
- };
25
- }
26
- /**
27
- * Add node to graph
28
- */
29
- addNode(id, features) {
30
- this.nodes.set(id, {
31
- id,
32
- features,
33
- neighbors: []
34
- });
35
- }
36
- /**
37
- * Add edge to graph
38
- */
39
- addEdge(from, to, weight = 1.0) {
40
- this.edges.push({ from, to, weight });
41
- // Update neighbor lists
42
- const fromNode = this.nodes.get(from);
43
- const toNode = this.nodes.get(to);
44
- if (fromNode && !fromNode.neighbors.includes(to)) {
45
- fromNode.neighbors.push(to);
46
- }
47
- if (toNode && !toNode.neighbors.includes(from)) {
48
- toNode.neighbors.push(from);
49
- }
50
- }
51
- /**
52
- * Graph Attention Network (GAT) message passing
53
- */
54
- graphAttention(nodeId) {
55
- const node = this.nodes.get(nodeId);
56
- if (!node)
57
- throw new Error(`Node ${nodeId} not found`);
58
- const neighbors = node.neighbors;
59
- if (neighbors.length === 0) {
60
- return node.features;
61
- }
62
- // Multi-head attention
63
- const headDim = Math.floor(this.config.hiddenDim / this.config.numHeads);
64
- const aggregated = new Float32Array(this.config.hiddenDim);
65
- for (let h = 0; h < this.config.numHeads; h++) {
66
- let attentionSum = 0;
67
- const headOutput = new Float32Array(headDim);
68
- // Compute attention scores for each neighbor
69
- for (const neighborId of neighbors) {
70
- const neighbor = this.nodes.get(neighborId);
71
- // Attention score: similarity between node and neighbor
72
- const score = this.computeAttentionScore(node.features, neighbor.features, h);
73
- attentionSum += score;
74
- // Aggregate neighbor features weighted by attention
75
- for (let i = 0; i < headDim && i < neighbor.features.length; i++) {
76
- headOutput[i] += score * neighbor.features[i];
77
- }
78
- }
79
- // Normalize by attention sum
80
- if (attentionSum > 0) {
81
- for (let i = 0; i < headDim; i++) {
82
- headOutput[i] /= attentionSum;
83
- }
84
- }
85
- // Concatenate head outputs
86
- const offset = h * headDim;
87
- for (let i = 0; i < headDim; i++) {
88
- aggregated[offset + i] = headOutput[i];
89
- }
90
- }
91
- // Apply non-linearity (LeakyReLU)
92
- for (let i = 0; i < aggregated.length; i++) {
93
- aggregated[i] = aggregated[i] > 0 ? aggregated[i] : 0.01 * aggregated[i];
94
- }
95
- return aggregated;
96
- }
97
- /**
98
- * Compute attention score between two nodes
99
- */
100
- computeAttentionScore(features1, features2, head) {
101
- // Simple dot-product attention
102
- let score = 0;
103
- const len = Math.min(features1.length, features2.length);
104
- for (let i = 0; i < len; i++) {
105
- score += features1[i] * features2[i];
106
- }
107
- // Apply softmax-like normalization
108
- return Math.exp(score / Math.sqrt(len));
109
- }
110
- /**
111
- * Message passing for all nodes
112
- */
113
- messagePass() {
114
- const newFeatures = new Map();
115
- for (const [nodeId] of this.nodes) {
116
- newFeatures.set(nodeId, this.graphAttention(nodeId));
117
- }
118
- return newFeatures;
119
- }
120
- /**
121
- * Update node features after message passing
122
- */
123
- update(newFeatures) {
124
- for (const [nodeId, features] of newFeatures) {
125
- const node = this.nodes.get(nodeId);
126
- if (node) {
127
- node.features = features;
128
- }
129
- }
130
- }
131
- /**
132
- * Compute graph embeddings for query enhancement
133
- */
134
- computeGraphEmbedding(nodeId, hops = 2) {
135
- const features = new Map();
136
- features.set(nodeId, this.nodes.get(nodeId).features);
137
- // Multi-hop message passing
138
- for (let h = 0; h < hops; h++) {
139
- const newFeatures = this.messagePass();
140
- this.update(newFeatures);
141
- }
142
- return this.nodes.get(nodeId).features;
143
- }
144
- /**
145
- * Get statistics
146
- */
147
- getStats() {
148
- return {
149
- numNodes: this.nodes.size,
150
- numEdges: this.edges.length,
151
- avgDegree: this.edges.length / Math.max(this.nodes.size, 1),
152
- config: this.config
153
- };
154
- }
155
- }
156
- /**
157
- * Maximal Marginal Relevance for diversity ranking
158
- */
159
- export class MaximalMarginalRelevance {
160
- constructor(config = {}) {
161
- this.config = {
162
- lambda: config.lambda || 0.7,
163
- metric: config.metric || 'cosine'
164
- };
165
- }
166
- /**
167
- * Rerank results for diversity
168
- * @param query Query vector
169
- * @param candidates Candidate vectors with scores
170
- * @param k Number of results to return
171
- * @returns Reranked indices
172
- */
173
- rerank(query, candidates, k) {
174
- if (candidates.length === 0)
175
- return [];
176
- const selected = [];
177
- const remaining = new Set(candidates.map((_, i) => i));
178
- // Select first result (highest relevance)
179
- let bestIdx = 0;
180
- let bestScore = -Infinity;
181
- for (let i = 0; i < candidates.length; i++) {
182
- if (candidates[i].score > bestScore) {
183
- bestScore = candidates[i].score;
184
- bestIdx = i;
185
- }
186
- }
187
- selected.push(candidates[bestIdx].id);
188
- remaining.delete(bestIdx);
189
- // Iteratively select remaining results
190
- while (selected.length < k && remaining.size > 0) {
191
- let bestMMR = -Infinity;
192
- let bestCandidate = -1;
193
- for (const idx of remaining) {
194
- const candidate = candidates[idx];
195
- // Relevance to query
196
- const relevance = this.similarity(query, candidate.vector);
197
- // Maximum similarity to already selected
198
- let maxSimilarity = -Infinity;
199
- for (const selectedId of selected) {
200
- const selectedCandidate = candidates.find(c => c.id === selectedId);
201
- const sim = this.similarity(candidate.vector, selectedCandidate.vector);
202
- maxSimilarity = Math.max(maxSimilarity, sim);
203
- }
204
- // MMR score
205
- const mmr = this.config.lambda * relevance -
206
- (1 - this.config.lambda) * maxSimilarity;
207
- if (mmr > bestMMR) {
208
- bestMMR = mmr;
209
- bestCandidate = idx;
210
- }
211
- }
212
- if (bestCandidate !== -1) {
213
- selected.push(candidates[bestCandidate].id);
214
- remaining.delete(bestCandidate);
215
- }
216
- else {
217
- break;
218
- }
219
- }
220
- return selected;
221
- }
222
- /**
223
- * Similarity computation
224
- */
225
- similarity(a, b) {
226
- if (this.config.metric === 'cosine') {
227
- return this.cosineSimilarity(a, b);
228
- }
229
- else {
230
- // Euclidean distance converted to similarity
231
- const dist = this.euclideanDistance(a, b);
232
- return 1 / (1 + dist);
233
- }
234
- }
235
- cosineSimilarity(a, b) {
236
- let dotProduct = 0;
237
- let normA = 0;
238
- let normB = 0;
239
- for (let i = 0; i < a.length; i++) {
240
- dotProduct += a[i] * b[i];
241
- normA += a[i] * a[i];
242
- normB += b[i] * b[i];
243
- }
244
- return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
245
- }
246
- euclideanDistance(a, b) {
247
- let sum = 0;
248
- for (let i = 0; i < a.length; i++) {
249
- const diff = a[i] - b[i];
250
- sum += diff * diff;
251
- }
252
- return Math.sqrt(sum);
253
- }
254
- /**
255
- * Set lambda (relevance vs diversity trade-off)
256
- */
257
- setLambda(lambda) {
258
- this.config.lambda = Math.max(0, Math.min(1, lambda));
259
- }
260
- }
261
- // ============================================================================
262
- // SVD (Singular Value Decomposition) for Tensor Compression
263
- // ============================================================================
264
- /**
265
- * Simple SVD implementation for dimension reduction
266
- */
267
- export class TensorCompression {
268
- /**
269
- * Reduce dimensionality using truncated SVD
270
- * @param vectors Array of vectors to compress
271
- * @param targetDim Target dimension
272
- * @returns Compressed vectors
273
- */
274
- static compress(vectors, targetDim) {
275
- if (vectors.length === 0)
276
- return [];
277
- const originalDim = vectors[0].length;
278
- if (targetDim >= originalDim)
279
- return vectors;
280
- // Create matrix (vectors as rows)
281
- const matrix = vectors.map(v => Array.from(v));
282
- // Center the data (subtract mean)
283
- const mean = this.computeMean(matrix);
284
- const centered = matrix.map(row => row.map((val, i) => val - mean[i]));
285
- // Compute covariance matrix
286
- const cov = this.computeCovariance(centered);
287
- // Compute top k eigenvectors using power iteration
288
- const eigenvectors = this.powerIteration(cov, targetDim);
289
- // Project vectors onto eigenvectors
290
- const compressed = centered.map(row => {
291
- const projected = new Float32Array(targetDim);
292
- for (let i = 0; i < targetDim; i++) {
293
- let sum = 0;
294
- for (let j = 0; j < originalDim; j++) {
295
- sum += row[j] * eigenvectors[i][j];
296
- }
297
- projected[i] = sum;
298
- }
299
- return projected;
300
- });
301
- return compressed;
302
- }
303
- /**
304
- * Compute mean vector
305
- */
306
- static computeMean(matrix) {
307
- const n = matrix.length;
308
- const dim = matrix[0].length;
309
- const mean = new Array(dim).fill(0);
310
- for (const row of matrix) {
311
- for (let i = 0; i < dim; i++) {
312
- mean[i] += row[i];
313
- }
314
- }
315
- return mean.map(v => v / n);
316
- }
317
- /**
318
- * Compute covariance matrix
319
- */
320
- static computeCovariance(matrix) {
321
- const n = matrix.length;
322
- const dim = matrix[0].length;
323
- const cov = Array.from({ length: dim }, () => new Array(dim).fill(0));
324
- for (let i = 0; i < dim; i++) {
325
- for (let j = 0; j <= i; j++) {
326
- let sum = 0;
327
- for (const row of matrix) {
328
- sum += row[i] * row[j];
329
- }
330
- cov[i][j] = cov[j][i] = sum / n;
331
- }
332
- }
333
- return cov;
334
- }
335
- /**
336
- * Power iteration for computing top eigenvectors
337
- */
338
- static powerIteration(matrix, k, iterations = 100) {
339
- const dim = matrix.length;
340
- const eigenvectors = [];
341
- for (let i = 0; i < k; i++) {
342
- // Random initialization
343
- let v = new Array(dim).fill(0).map(() => Math.random() - 0.5);
344
- // Power iteration
345
- for (let iter = 0; iter < iterations; iter++) {
346
- // Multiply by matrix
347
- const newV = new Array(dim).fill(0);
348
- for (let r = 0; r < dim; r++) {
349
- for (let c = 0; c < dim; c++) {
350
- newV[r] += matrix[r][c] * v[c];
351
- }
352
- }
353
- // Orthogonalize against previous eigenvectors
354
- for (const prev of eigenvectors) {
355
- let dot = 0;
356
- for (let j = 0; j < dim; j++) {
357
- dot += newV[j] * prev[j];
358
- }
359
- for (let j = 0; j < dim; j++) {
360
- newV[j] -= dot * prev[j];
361
- }
362
- }
363
- // Normalize
364
- let norm = 0;
365
- for (const val of newV) {
366
- norm += val * val;
367
- }
368
- norm = Math.sqrt(norm);
369
- if (norm < 1e-10)
370
- break;
371
- v = newV.map(val => val / norm);
372
- }
373
- eigenvectors.push(v);
374
- }
375
- return eigenvectors;
376
- }
377
- }
378
- // ============================================================================
379
- // Batch Operations
380
- // ============================================================================
381
- /**
382
- * Efficient batch processing utilities
383
- */
384
- export class BatchProcessor {
385
- /**
386
- * Batch cosine similarity computation
387
- */
388
- static batchCosineSimilarity(query, vectors) {
389
- const similarities = new Float32Array(vectors.length);
390
- // Precompute query norm
391
- let queryNorm = 0;
392
- for (let i = 0; i < query.length; i++) {
393
- queryNorm += query[i] * query[i];
394
- }
395
- queryNorm = Math.sqrt(queryNorm);
396
- // Compute similarities
397
- for (let v = 0; v < vectors.length; v++) {
398
- const vector = vectors[v];
399
- let dotProduct = 0;
400
- let vectorNorm = 0;
401
- for (let i = 0; i < query.length; i++) {
402
- dotProduct += query[i] * vector[i];
403
- vectorNorm += vector[i] * vector[i];
404
- }
405
- vectorNorm = Math.sqrt(vectorNorm);
406
- similarities[v] = dotProduct / (queryNorm * vectorNorm);
407
- }
408
- return similarities;
409
- }
410
- /**
411
- * Batch vector normalization
412
- */
413
- static batchNormalize(vectors) {
414
- return vectors.map(v => {
415
- let norm = 0;
416
- for (let i = 0; i < v.length; i++) {
417
- norm += v[i] * v[i];
418
- }
419
- norm = Math.sqrt(norm);
420
- const normalized = new Float32Array(v.length);
421
- for (let i = 0; i < v.length; i++) {
422
- normalized[i] = v[i] / norm;
423
- }
424
- return normalized;
425
- });
426
- }
427
- }
@@ -1,117 +0,0 @@
1
- /**
2
- * HNSW (Hierarchical Navigable Small World) Index for Browser
3
- *
4
- * JavaScript implementation of HNSW algorithm for fast approximate nearest neighbor search.
5
- * Achieves O(log n) search complexity vs O(n) for linear scan.
6
- *
7
- * Features:
8
- * - Multi-layer graph structure
9
- * - Probabilistic layer assignment
10
- * - Greedy search algorithm
11
- * - Dynamic insertion
12
- * - Configurable M (connections per node)
13
- * - Configurable efConstruction and efSearch
14
- *
15
- * Performance:
16
- * - 10-20x faster than linear scan (vs 150x for native HNSW)
17
- * - Memory: ~16 bytes per edge + vector storage
18
- * - Suitable for datasets up to 100K vectors in browser
19
- */
20
- export interface HNSWConfig {
21
- dimension: number;
22
- M: number;
23
- efConstruction: number;
24
- efSearch: number;
25
- ml: number;
26
- maxLayers: number;
27
- distanceFunction?: 'cosine' | 'euclidean' | 'manhattan';
28
- }
29
- export interface HNSWNode {
30
- id: number;
31
- vector: Float32Array;
32
- level: number;
33
- connections: Map<number, number[]>;
34
- }
35
- export interface SearchResult {
36
- id: number;
37
- distance: number;
38
- vector: Float32Array;
39
- }
40
- export declare class HNSWIndex {
41
- private config;
42
- private nodes;
43
- private entryPoint;
44
- private currentId;
45
- private ml;
46
- constructor(config?: Partial<HNSWConfig>);
47
- /**
48
- * Add vector to index
49
- */
50
- add(vector: Float32Array, id?: number): number;
51
- /**
52
- * Search for k nearest neighbors
53
- */
54
- search(query: Float32Array, k: number, ef?: number): SearchResult[];
55
- /**
56
- * Search at specific layer
57
- */
58
- private searchLayer;
59
- /**
60
- * Select best neighbors using heuristic
61
- */
62
- private selectNeighbors;
63
- /**
64
- * Connect two nodes at layer
65
- */
66
- private connect;
67
- /**
68
- * Random level assignment
69
- */
70
- private randomLevel;
71
- /**
72
- * Distance function
73
- */
74
- private distance;
75
- private cosineSimilarity;
76
- private euclideanDistance;
77
- private manhattanDistance;
78
- /**
79
- * Get index statistics
80
- */
81
- getStats(): {
82
- numNodes: number;
83
- numLayers: number;
84
- avgConnections: number;
85
- entryPointLevel: number;
86
- memoryBytes: number;
87
- };
88
- /**
89
- * Export index for persistence
90
- */
91
- export(): string;
92
- /**
93
- * Import index from JSON
94
- */
95
- import(json: string): void;
96
- /**
97
- * Clear index
98
- */
99
- clear(): void;
100
- /**
101
- * Get number of nodes
102
- */
103
- size(): number;
104
- }
105
- /**
106
- * Helper function to create HNSW index with default settings
107
- */
108
- export declare function createHNSW(dimension: number): HNSWIndex;
109
- /**
110
- * Helper function to create fast HNSW (lower quality, faster build)
111
- */
112
- export declare function createFastHNSW(dimension: number): HNSWIndex;
113
- /**
114
- * Helper function to create accurate HNSW (higher quality, slower build)
115
- */
116
- export declare function createAccurateHNSW(dimension: number): HNSWIndex;
117
- //# sourceMappingURL=HNSWIndex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HNSWIndex.d.ts","sourceRoot":"","sources":["../../../src/browser/HNSWIndex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;CACzD;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;CACtB;AA0DD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,EAAE,CAAS;gBAEP,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM;IAc5C;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAsE9C;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IA0BnE;;OAEG;IACH,OAAO,CAAC,WAAW;IA4CnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,OAAO;IAQf;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,QAAQ,IAAI;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;KACrB;IAqCD;;OAEG;IACH,MAAM,IAAI,MAAM;IAgBhB;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAmB1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,IAAI,IAAI,MAAM;CAGf;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAOvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAO3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAO/D"}