agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.2

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 (317) 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/dist/src/cli/commands/init.js +3 -3
  7. package/dist/src/cli/commands/init.js.map +1 -1
  8. package/package.json +3 -3
  9. package/src/cli/agentdb-cli.ts +78 -0
  10. package/src/cli/commands/init.ts +3 -3
  11. package/dist/agentdb-advanced.js +0 -2110
  12. package/dist/agentdb-advanced.min.js +0 -1
  13. package/dist/backends/GraphBackend.d.ts +0 -196
  14. package/dist/backends/GraphBackend.d.ts.map +0 -1
  15. package/dist/backends/GraphBackend.js +0 -33
  16. package/dist/backends/GraphBackend.js.map +0 -1
  17. package/dist/backends/LearningBackend.d.ts +0 -148
  18. package/dist/backends/LearningBackend.d.ts.map +0 -1
  19. package/dist/backends/LearningBackend.js +0 -27
  20. package/dist/backends/LearningBackend.js.map +0 -1
  21. package/dist/backends/VectorBackend.d.ts +0 -119
  22. package/dist/backends/VectorBackend.d.ts.map +0 -1
  23. package/dist/backends/VectorBackend.js +0 -14
  24. package/dist/backends/VectorBackend.js.map +0 -1
  25. package/dist/backends/detector.d.ts +0 -81
  26. package/dist/backends/detector.d.ts.map +0 -1
  27. package/dist/backends/detector.js +0 -192
  28. package/dist/backends/detector.js.map +0 -1
  29. package/dist/backends/factory.d.ts +0 -50
  30. package/dist/backends/factory.d.ts.map +0 -1
  31. package/dist/backends/factory.js +0 -161
  32. package/dist/backends/factory.js.map +0 -1
  33. package/dist/backends/graph/GraphDatabaseAdapter.d.ts +0 -139
  34. package/dist/backends/graph/GraphDatabaseAdapter.d.ts.map +0 -1
  35. package/dist/backends/graph/GraphDatabaseAdapter.js +0 -194
  36. package/dist/backends/graph/GraphDatabaseAdapter.js.map +0 -1
  37. package/dist/backends/hnswlib/HNSWLibBackend.d.ts +0 -92
  38. package/dist/backends/hnswlib/HNSWLibBackend.d.ts.map +0 -1
  39. package/dist/backends/hnswlib/HNSWLibBackend.js +0 -316
  40. package/dist/backends/hnswlib/HNSWLibBackend.js.map +0 -1
  41. package/dist/backends/hnswlib/index.d.ts +0 -7
  42. package/dist/backends/hnswlib/index.d.ts.map +0 -1
  43. package/dist/backends/hnswlib/index.js +0 -7
  44. package/dist/backends/hnswlib/index.js.map +0 -1
  45. package/dist/backends/index.d.ts +0 -14
  46. package/dist/backends/index.d.ts.map +0 -1
  47. package/dist/backends/index.js +0 -13
  48. package/dist/backends/index.js.map +0 -1
  49. package/dist/backends/ruvector/RuVectorBackend.d.ts +0 -75
  50. package/dist/backends/ruvector/RuVectorBackend.d.ts.map +0 -1
  51. package/dist/backends/ruvector/RuVectorBackend.js +0 -198
  52. package/dist/backends/ruvector/RuVectorBackend.js.map +0 -1
  53. package/dist/backends/ruvector/RuVectorLearning.d.ts +0 -104
  54. package/dist/backends/ruvector/RuVectorLearning.d.ts.map +0 -1
  55. package/dist/backends/ruvector/RuVectorLearning.js +0 -177
  56. package/dist/backends/ruvector/RuVectorLearning.js.map +0 -1
  57. package/dist/backends/ruvector/index.d.ts +0 -9
  58. package/dist/backends/ruvector/index.d.ts.map +0 -1
  59. package/dist/backends/ruvector/index.js +0 -8
  60. package/dist/backends/ruvector/index.js.map +0 -1
  61. package/dist/benchmarks/wasm-vector-benchmark.d.ts +0 -10
  62. package/dist/benchmarks/wasm-vector-benchmark.d.ts.map +0 -1
  63. package/dist/benchmarks/wasm-vector-benchmark.js +0 -196
  64. package/dist/benchmarks/wasm-vector-benchmark.js.map +0 -1
  65. package/dist/browser/AdvancedFeatures.d.ts +0 -144
  66. package/dist/browser/AdvancedFeatures.d.ts.map +0 -1
  67. package/dist/browser/AdvancedFeatures.js +0 -430
  68. package/dist/browser/AdvancedFeatures.js.map +0 -1
  69. package/dist/browser/HNSWIndex.d.ts +0 -117
  70. package/dist/browser/HNSWIndex.d.ts.map +0 -1
  71. package/dist/browser/HNSWIndex.js +0 -402
  72. package/dist/browser/HNSWIndex.js.map +0 -1
  73. package/dist/browser/ProductQuantization.d.ts +0 -107
  74. package/dist/browser/ProductQuantization.d.ts.map +0 -1
  75. package/dist/browser/ProductQuantization.js +0 -337
  76. package/dist/browser/ProductQuantization.js.map +0 -1
  77. package/dist/browser/browser/AdvancedFeatures.d.ts +0 -144
  78. package/dist/browser/browser/AdvancedFeatures.d.ts.map +0 -1
  79. package/dist/browser/browser/AdvancedFeatures.js +0 -427
  80. package/dist/browser/browser/HNSWIndex.d.ts +0 -117
  81. package/dist/browser/browser/HNSWIndex.d.ts.map +0 -1
  82. package/dist/browser/browser/HNSWIndex.js +0 -402
  83. package/dist/browser/browser/ProductQuantization.d.ts +0 -107
  84. package/dist/browser/browser/ProductQuantization.d.ts.map +0 -1
  85. package/dist/browser/browser/ProductQuantization.js +0 -348
  86. package/dist/browser/browser/index.d.ts +0 -223
  87. package/dist/browser/browser/index.d.ts.map +0 -1
  88. package/dist/browser/browser/index.js +0 -233
  89. package/dist/browser/index.d.ts +0 -223
  90. package/dist/browser/index.d.ts.map +0 -1
  91. package/dist/browser/index.js +0 -225
  92. package/dist/browser/index.js.map +0 -1
  93. package/dist/cli/agentdb-cli.d.ts +0 -154
  94. package/dist/cli/agentdb-cli.d.ts.map +0 -1
  95. package/dist/cli/agentdb-cli.js +0 -2273
  96. package/dist/cli/agentdb-cli.js.map +0 -1
  97. package/dist/cli/agentdb.db +0 -0
  98. package/dist/cli/commands/init.d.ts +0 -12
  99. package/dist/cli/commands/init.d.ts.map +0 -1
  100. package/dist/cli/commands/init.js +0 -115
  101. package/dist/cli/commands/init.js.map +0 -1
  102. package/dist/cli/commands/install-embeddings.d.ts +0 -10
  103. package/dist/cli/commands/install-embeddings.d.ts.map +0 -1
  104. package/dist/cli/commands/install-embeddings.js +0 -68
  105. package/dist/cli/commands/install-embeddings.js.map +0 -1
  106. package/dist/cli/commands/migrate.d.ts +0 -15
  107. package/dist/cli/commands/migrate.d.ts.map +0 -1
  108. package/dist/cli/commands/migrate.js +0 -425
  109. package/dist/cli/commands/migrate.js.map +0 -1
  110. package/dist/cli/commands/status.d.ts +0 -10
  111. package/dist/cli/commands/status.d.ts.map +0 -1
  112. package/dist/cli/commands/status.js +0 -129
  113. package/dist/cli/commands/status.js.map +0 -1
  114. package/dist/controllers/CausalMemoryGraph.d.ts +0 -126
  115. package/dist/controllers/CausalMemoryGraph.d.ts.map +0 -1
  116. package/dist/controllers/CausalMemoryGraph.js +0 -323
  117. package/dist/controllers/CausalMemoryGraph.js.map +0 -1
  118. package/dist/controllers/CausalRecall.d.ts +0 -139
  119. package/dist/controllers/CausalRecall.d.ts.map +0 -1
  120. package/dist/controllers/CausalRecall.js +0 -356
  121. package/dist/controllers/CausalRecall.js.map +0 -1
  122. package/dist/controllers/ContextSynthesizer.d.ts +0 -65
  123. package/dist/controllers/ContextSynthesizer.d.ts.map +0 -1
  124. package/dist/controllers/ContextSynthesizer.js +0 -208
  125. package/dist/controllers/ContextSynthesizer.js.map +0 -1
  126. package/dist/controllers/EmbeddingService.d.ts +0 -37
  127. package/dist/controllers/EmbeddingService.d.ts.map +0 -1
  128. package/dist/controllers/EmbeddingService.js +0 -136
  129. package/dist/controllers/EmbeddingService.js.map +0 -1
  130. package/dist/controllers/EnhancedEmbeddingService.d.ts +0 -50
  131. package/dist/controllers/EnhancedEmbeddingService.d.ts.map +0 -1
  132. package/dist/controllers/EnhancedEmbeddingService.js +0 -119
  133. package/dist/controllers/EnhancedEmbeddingService.js.map +0 -1
  134. package/dist/controllers/ExplainableRecall.d.ts +0 -163
  135. package/dist/controllers/ExplainableRecall.d.ts.map +0 -1
  136. package/dist/controllers/ExplainableRecall.js +0 -485
  137. package/dist/controllers/ExplainableRecall.js.map +0 -1
  138. package/dist/controllers/HNSWIndex.d.ts +0 -128
  139. package/dist/controllers/HNSWIndex.d.ts.map +0 -1
  140. package/dist/controllers/HNSWIndex.js +0 -361
  141. package/dist/controllers/HNSWIndex.js.map +0 -1
  142. package/dist/controllers/LearningSystem.d.ts +0 -195
  143. package/dist/controllers/LearningSystem.d.ts.map +0 -1
  144. package/dist/controllers/LearningSystem.js +0 -929
  145. package/dist/controllers/LearningSystem.js.map +0 -1
  146. package/dist/controllers/MMRDiversityRanker.d.ts +0 -50
  147. package/dist/controllers/MMRDiversityRanker.d.ts.map +0 -1
  148. package/dist/controllers/MMRDiversityRanker.js +0 -130
  149. package/dist/controllers/MMRDiversityRanker.js.map +0 -1
  150. package/dist/controllers/MetadataFilter.d.ts +0 -70
  151. package/dist/controllers/MetadataFilter.d.ts.map +0 -1
  152. package/dist/controllers/MetadataFilter.js +0 -243
  153. package/dist/controllers/MetadataFilter.js.map +0 -1
  154. package/dist/controllers/NightlyLearner.d.ts +0 -114
  155. package/dist/controllers/NightlyLearner.d.ts.map +0 -1
  156. package/dist/controllers/NightlyLearner.js +0 -394
  157. package/dist/controllers/NightlyLearner.js.map +0 -1
  158. package/dist/controllers/QUICClient.d.ts +0 -109
  159. package/dist/controllers/QUICClient.d.ts.map +0 -1
  160. package/dist/controllers/QUICClient.js +0 -299
  161. package/dist/controllers/QUICClient.js.map +0 -1
  162. package/dist/controllers/QUICServer.d.ts +0 -121
  163. package/dist/controllers/QUICServer.d.ts.map +0 -1
  164. package/dist/controllers/QUICServer.js +0 -383
  165. package/dist/controllers/QUICServer.js.map +0 -1
  166. package/dist/controllers/ReasoningBank.d.ts +0 -196
  167. package/dist/controllers/ReasoningBank.d.ts.map +0 -1
  168. package/dist/controllers/ReasoningBank.js +0 -494
  169. package/dist/controllers/ReasoningBank.js.map +0 -1
  170. package/dist/controllers/ReflexionMemory.d.ts +0 -125
  171. package/dist/controllers/ReflexionMemory.d.ts.map +0 -1
  172. package/dist/controllers/ReflexionMemory.js +0 -521
  173. package/dist/controllers/ReflexionMemory.js.map +0 -1
  174. package/dist/controllers/SkillLibrary.d.ts +0 -149
  175. package/dist/controllers/SkillLibrary.d.ts.map +0 -1
  176. package/dist/controllers/SkillLibrary.js +0 -547
  177. package/dist/controllers/SkillLibrary.js.map +0 -1
  178. package/dist/controllers/SyncCoordinator.d.ts +0 -120
  179. package/dist/controllers/SyncCoordinator.d.ts.map +0 -1
  180. package/dist/controllers/SyncCoordinator.js +0 -441
  181. package/dist/controllers/SyncCoordinator.js.map +0 -1
  182. package/dist/controllers/WASMVectorSearch.d.ts +0 -89
  183. package/dist/controllers/WASMVectorSearch.d.ts.map +0 -1
  184. package/dist/controllers/WASMVectorSearch.js +0 -234
  185. package/dist/controllers/WASMVectorSearch.js.map +0 -1
  186. package/dist/controllers/frontier-index.d.ts +0 -14
  187. package/dist/controllers/frontier-index.d.ts.map +0 -1
  188. package/dist/controllers/frontier-index.js +0 -10
  189. package/dist/controllers/frontier-index.js.map +0 -1
  190. package/dist/controllers/index.d.ts +0 -30
  191. package/dist/controllers/index.d.ts.map +0 -1
  192. package/dist/controllers/index.js +0 -18
  193. package/dist/controllers/index.js.map +0 -1
  194. package/dist/db-fallback.d.ts +0 -26
  195. package/dist/db-fallback.d.ts.map +0 -1
  196. package/dist/db-fallback.js +0 -264
  197. package/dist/db-fallback.js.map +0 -1
  198. package/dist/db-test.d.ts +0 -13
  199. package/dist/db-test.d.ts.map +0 -1
  200. package/dist/db-test.js +0 -55
  201. package/dist/db-test.js.map +0 -1
  202. package/dist/db-unified.d.ts +0 -76
  203. package/dist/db-unified.d.ts.map +0 -1
  204. package/dist/db-unified.js +0 -278
  205. package/dist/db-unified.js.map +0 -1
  206. package/dist/examples/quic-sync-example.d.ts +0 -9
  207. package/dist/examples/quic-sync-example.d.ts.map +0 -1
  208. package/dist/examples/quic-sync-example.js +0 -169
  209. package/dist/examples/quic-sync-example.js.map +0 -1
  210. package/dist/examples/wasm-vector-usage.d.ts +0 -12
  211. package/dist/examples/wasm-vector-usage.d.ts.map +0 -1
  212. package/dist/examples/wasm-vector-usage.js +0 -190
  213. package/dist/examples/wasm-vector-usage.js.map +0 -1
  214. package/dist/index.d.ts +0 -28
  215. package/dist/index.d.ts.map +0 -1
  216. package/dist/index.js +0 -35
  217. package/dist/index.js.map +0 -1
  218. package/dist/malp/core/ccc.d.ts +0 -99
  219. package/dist/malp/core/ccc.d.ts.map +0 -1
  220. package/dist/malp/core/ccc.js +0 -181
  221. package/dist/malp/core/ccc.js.map +0 -1
  222. package/dist/malp/core/index.d.ts +0 -9
  223. package/dist/malp/core/index.d.ts.map +0 -1
  224. package/dist/malp/core/index.js +0 -9
  225. package/dist/malp/core/index.js.map +0 -1
  226. package/dist/malp/core/linalg.d.ts +0 -101
  227. package/dist/malp/core/linalg.d.ts.map +0 -1
  228. package/dist/malp/core/linalg.js +0 -278
  229. package/dist/malp/core/linalg.js.map +0 -1
  230. package/dist/malp/core/optimizer.d.ts +0 -68
  231. package/dist/malp/core/optimizer.d.ts.map +0 -1
  232. package/dist/malp/core/optimizer.js +0 -160
  233. package/dist/malp/core/optimizer.js.map +0 -1
  234. package/dist/malp/index.d.ts +0 -33
  235. package/dist/malp/index.d.ts.map +0 -1
  236. package/dist/malp/index.js +0 -37
  237. package/dist/malp/index.js.map +0 -1
  238. package/dist/malp/metrics/agreement.d.ts +0 -106
  239. package/dist/malp/metrics/agreement.d.ts.map +0 -1
  240. package/dist/malp/metrics/agreement.js +0 -199
  241. package/dist/malp/metrics/agreement.js.map +0 -1
  242. package/dist/malp/metrics/comparison.d.ts +0 -93
  243. package/dist/malp/metrics/comparison.d.ts.map +0 -1
  244. package/dist/malp/metrics/comparison.js +0 -256
  245. package/dist/malp/metrics/comparison.js.map +0 -1
  246. package/dist/malp/metrics/index.d.ts +0 -8
  247. package/dist/malp/metrics/index.d.ts.map +0 -1
  248. package/dist/malp/metrics/index.js +0 -8
  249. package/dist/malp/metrics/index.js.map +0 -1
  250. package/dist/malp/metrics/performance.d.ts +0 -61
  251. package/dist/malp/metrics/performance.d.ts.map +0 -1
  252. package/dist/malp/metrics/performance.js +0 -190
  253. package/dist/malp/metrics/performance.js.map +0 -1
  254. package/dist/malp/models/index.d.ts +0 -7
  255. package/dist/malp/models/index.d.ts.map +0 -1
  256. package/dist/malp/models/index.js +0 -7
  257. package/dist/malp/models/index.js.map +0 -1
  258. package/dist/malp/models/malp.d.ts +0 -116
  259. package/dist/malp/models/malp.d.ts.map +0 -1
  260. package/dist/malp/models/malp.js +0 -206
  261. package/dist/malp/models/malp.js.map +0 -1
  262. package/dist/malp/models/regressor.d.ts +0 -80
  263. package/dist/malp/models/regressor.d.ts.map +0 -1
  264. package/dist/malp/models/regressor.js +0 -229
  265. package/dist/malp/models/regressor.js.map +0 -1
  266. package/dist/malp/reasoningbank_validator.d.ts +0 -187
  267. package/dist/malp/reasoningbank_validator.d.ts.map +0 -1
  268. package/dist/malp/reasoningbank_validator.js +0 -246
  269. package/dist/malp/reasoningbank_validator.js.map +0 -1
  270. package/dist/malp/wasm_bindings.d.ts +0 -344
  271. package/dist/malp/wasm_bindings.d.ts.map +0 -1
  272. package/dist/malp/wasm_bindings.js +0 -9
  273. package/dist/malp/wasm_bindings.js.map +0 -1
  274. package/dist/mcp/agentdb-mcp-server.d.ts +0 -8
  275. package/dist/mcp/agentdb-mcp-server.d.ts.map +0 -1
  276. package/dist/mcp/agentdb-mcp-server.js +0 -2116
  277. package/dist/mcp/agentdb-mcp-server.js.map +0 -1
  278. package/dist/mcp/learning-tools-handlers.d.ts +0 -16
  279. package/dist/mcp/learning-tools-handlers.d.ts.map +0 -1
  280. package/dist/mcp/learning-tools-handlers.js +0 -105
  281. package/dist/mcp/learning-tools-handlers.js.map +0 -1
  282. package/dist/optimizations/BatchOperations.d.ts +0 -109
  283. package/dist/optimizations/BatchOperations.d.ts.map +0 -1
  284. package/dist/optimizations/BatchOperations.js +0 -407
  285. package/dist/optimizations/BatchOperations.js.map +0 -1
  286. package/dist/optimizations/QueryOptimizer.d.ts +0 -83
  287. package/dist/optimizations/QueryOptimizer.d.ts.map +0 -1
  288. package/dist/optimizations/QueryOptimizer.js +0 -228
  289. package/dist/optimizations/QueryOptimizer.js.map +0 -1
  290. package/dist/optimizations/ToolCache.d.ts +0 -137
  291. package/dist/optimizations/ToolCache.d.ts.map +0 -1
  292. package/dist/optimizations/ToolCache.js +0 -281
  293. package/dist/optimizations/ToolCache.js.map +0 -1
  294. package/dist/optimizations/index.d.ts +0 -10
  295. package/dist/optimizations/index.d.ts.map +0 -1
  296. package/dist/optimizations/index.js +0 -8
  297. package/dist/optimizations/index.js.map +0 -1
  298. package/dist/security/input-validation.d.ts +0 -109
  299. package/dist/security/input-validation.d.ts.map +0 -1
  300. package/dist/security/input-validation.js +0 -398
  301. package/dist/security/input-validation.js.map +0 -1
  302. package/dist/security/limits.d.ts +0 -150
  303. package/dist/security/limits.d.ts.map +0 -1
  304. package/dist/security/limits.js +0 -288
  305. package/dist/security/limits.js.map +0 -1
  306. package/dist/security/path-security.d.ts +0 -100
  307. package/dist/security/path-security.d.ts.map +0 -1
  308. package/dist/security/path-security.js +0 -337
  309. package/dist/security/path-security.js.map +0 -1
  310. package/dist/security/validation.d.ts +0 -95
  311. package/dist/security/validation.d.ts.map +0 -1
  312. package/dist/security/validation.js +0 -315
  313. package/dist/security/validation.js.map +0 -1
  314. package/dist/types/quic.d.ts +0 -518
  315. package/dist/types/quic.d.ts.map +0 -1
  316. package/dist/types/quic.js +0 -272
  317. 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"}