@cmdoss/memwal-sdk 0.6.2 → 0.8.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 (247) hide show
  1. package/ARCHITECTURE.md +547 -547
  2. package/BENCHMARKS.md +238 -238
  3. package/README.md +310 -181
  4. package/dist/ai-sdk/tools.d.ts +2 -2
  5. package/dist/ai-sdk/tools.js +2 -2
  6. package/dist/client/ClientMemoryManager.js +2 -2
  7. package/dist/client/ClientMemoryManager.js.map +1 -1
  8. package/dist/client/PersonalDataWallet.d.ts.map +1 -1
  9. package/dist/client/SimplePDWClient.d.ts +29 -1
  10. package/dist/client/SimplePDWClient.d.ts.map +1 -1
  11. package/dist/client/SimplePDWClient.js +45 -13
  12. package/dist/client/SimplePDWClient.js.map +1 -1
  13. package/dist/client/namespaces/EmbeddingsNamespace.d.ts +1 -1
  14. package/dist/client/namespaces/EmbeddingsNamespace.js +1 -1
  15. package/dist/client/namespaces/MemoryNamespace.d.ts +31 -0
  16. package/dist/client/namespaces/MemoryNamespace.d.ts.map +1 -1
  17. package/dist/client/namespaces/MemoryNamespace.js +272 -39
  18. package/dist/client/namespaces/MemoryNamespace.js.map +1 -1
  19. package/dist/client/namespaces/consolidated/AINamespace.d.ts +2 -2
  20. package/dist/client/namespaces/consolidated/AINamespace.js +2 -2
  21. package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts +12 -2
  22. package/dist/client/namespaces/consolidated/BlockchainNamespace.d.ts.map +1 -1
  23. package/dist/client/namespaces/consolidated/BlockchainNamespace.js +62 -4
  24. package/dist/client/namespaces/consolidated/BlockchainNamespace.js.map +1 -1
  25. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts +67 -2
  26. package/dist/client/namespaces/consolidated/StorageNamespace.d.ts.map +1 -1
  27. package/dist/client/namespaces/consolidated/StorageNamespace.js +549 -16
  28. package/dist/client/namespaces/consolidated/StorageNamespace.js.map +1 -1
  29. package/dist/config/ConfigurationHelper.js +61 -61
  30. package/dist/config/defaults.js +2 -2
  31. package/dist/config/defaults.js.map +1 -1
  32. package/dist/graph/GraphService.js +21 -21
  33. package/dist/graph/GraphService.js.map +1 -1
  34. package/dist/index.d.ts +3 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +3 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/infrastructure/seal/EncryptionService.d.ts +9 -5
  39. package/dist/infrastructure/seal/EncryptionService.d.ts.map +1 -1
  40. package/dist/infrastructure/seal/EncryptionService.js +37 -15
  41. package/dist/infrastructure/seal/EncryptionService.js.map +1 -1
  42. package/dist/infrastructure/seal/SealService.d.ts +13 -5
  43. package/dist/infrastructure/seal/SealService.d.ts.map +1 -1
  44. package/dist/infrastructure/seal/SealService.js +36 -34
  45. package/dist/infrastructure/seal/SealService.js.map +1 -1
  46. package/dist/langchain/createPDWRAG.js +30 -30
  47. package/dist/retrieval/MemoryDecryptionPipeline.d.ts.map +1 -1
  48. package/dist/retrieval/MemoryDecryptionPipeline.js +2 -1
  49. package/dist/retrieval/MemoryDecryptionPipeline.js.map +1 -1
  50. package/dist/retrieval/MemoryRetrievalService.d.ts +31 -0
  51. package/dist/retrieval/MemoryRetrievalService.d.ts.map +1 -1
  52. package/dist/retrieval/MemoryRetrievalService.js +44 -4
  53. package/dist/retrieval/MemoryRetrievalService.js.map +1 -1
  54. package/dist/services/CapabilityService.d.ts.map +1 -1
  55. package/dist/services/CapabilityService.js +30 -14
  56. package/dist/services/CapabilityService.js.map +1 -1
  57. package/dist/services/CrossContextPermissionService.d.ts.map +1 -1
  58. package/dist/services/CrossContextPermissionService.js +9 -7
  59. package/dist/services/CrossContextPermissionService.js.map +1 -1
  60. package/dist/services/EmbeddingService.d.ts +28 -1
  61. package/dist/services/EmbeddingService.d.ts.map +1 -1
  62. package/dist/services/EmbeddingService.js +54 -0
  63. package/dist/services/EmbeddingService.js.map +1 -1
  64. package/dist/services/EncryptionService.d.ts.map +1 -1
  65. package/dist/services/EncryptionService.js +6 -5
  66. package/dist/services/EncryptionService.js.map +1 -1
  67. package/dist/services/GeminiAIService.js +309 -309
  68. package/dist/services/IndexManager.d.ts +5 -1
  69. package/dist/services/IndexManager.d.ts.map +1 -1
  70. package/dist/services/IndexManager.js +17 -40
  71. package/dist/services/IndexManager.js.map +1 -1
  72. package/dist/services/QueryService.js +1 -1
  73. package/dist/services/QueryService.js.map +1 -1
  74. package/dist/services/StorageService.d.ts +11 -0
  75. package/dist/services/StorageService.d.ts.map +1 -1
  76. package/dist/services/StorageService.js +73 -10
  77. package/dist/services/StorageService.js.map +1 -1
  78. package/dist/services/TransactionService.d.ts +20 -0
  79. package/dist/services/TransactionService.d.ts.map +1 -1
  80. package/dist/services/TransactionService.js +43 -0
  81. package/dist/services/TransactionService.js.map +1 -1
  82. package/dist/services/ViewService.js +2 -2
  83. package/dist/services/ViewService.js.map +1 -1
  84. package/dist/services/storage/QuiltBatchManager.d.ts +101 -1
  85. package/dist/services/storage/QuiltBatchManager.d.ts.map +1 -1
  86. package/dist/services/storage/QuiltBatchManager.js +410 -20
  87. package/dist/services/storage/QuiltBatchManager.js.map +1 -1
  88. package/dist/services/storage/index.d.ts +1 -1
  89. package/dist/services/storage/index.d.ts.map +1 -1
  90. package/dist/services/storage/index.js.map +1 -1
  91. package/dist/utils/LRUCache.d.ts +106 -0
  92. package/dist/utils/LRUCache.d.ts.map +1 -0
  93. package/dist/utils/LRUCache.js +281 -0
  94. package/dist/utils/LRUCache.js.map +1 -0
  95. package/dist/utils/index.d.ts +1 -0
  96. package/dist/utils/index.d.ts.map +1 -1
  97. package/dist/utils/index.js +2 -0
  98. package/dist/utils/index.js.map +1 -1
  99. package/dist/utils/memoryIndexOnChain.d.ts +212 -0
  100. package/dist/utils/memoryIndexOnChain.d.ts.map +1 -0
  101. package/dist/utils/memoryIndexOnChain.js +312 -0
  102. package/dist/utils/memoryIndexOnChain.js.map +1 -0
  103. package/dist/utils/rebuildIndexNode.d.ts +29 -0
  104. package/dist/utils/rebuildIndexNode.d.ts.map +1 -1
  105. package/dist/utils/rebuildIndexNode.js +366 -98
  106. package/dist/utils/rebuildIndexNode.js.map +1 -1
  107. package/dist/vector/HnswWasmService.d.ts +20 -5
  108. package/dist/vector/HnswWasmService.d.ts.map +1 -1
  109. package/dist/vector/HnswWasmService.js +73 -40
  110. package/dist/vector/HnswWasmService.js.map +1 -1
  111. package/dist/vector/IHnswService.d.ts +10 -1
  112. package/dist/vector/IHnswService.d.ts.map +1 -1
  113. package/dist/vector/IHnswService.js.map +1 -1
  114. package/dist/vector/NodeHnswService.d.ts +16 -0
  115. package/dist/vector/NodeHnswService.d.ts.map +1 -1
  116. package/dist/vector/NodeHnswService.js +84 -5
  117. package/dist/vector/NodeHnswService.js.map +1 -1
  118. package/dist/vector/createHnswService.d.ts +1 -1
  119. package/dist/vector/createHnswService.js +1 -1
  120. package/dist/vector/index.d.ts +1 -1
  121. package/dist/vector/index.js +1 -1
  122. package/package.json +157 -157
  123. package/src/access/PermissionService.ts +635 -635
  124. package/src/aggregation/AggregationService.ts +389 -389
  125. package/src/ai-sdk/PDWVectorStore.ts +715 -715
  126. package/src/ai-sdk/index.ts +65 -65
  127. package/src/ai-sdk/tools.ts +460 -460
  128. package/src/ai-sdk/types.ts +404 -404
  129. package/src/batch/BatchManager.ts +597 -597
  130. package/src/batch/BatchingService.ts +429 -429
  131. package/src/batch/MemoryProcessingCache.ts +492 -492
  132. package/src/batch/index.ts +30 -30
  133. package/src/browser.ts +200 -200
  134. package/src/client/ClientMemoryManager.ts +987 -987
  135. package/src/client/PersonalDataWallet.ts +345 -345
  136. package/src/client/SimplePDWClient.ts +1289 -1222
  137. package/src/client/factory.ts +154 -154
  138. package/src/client/namespaces/AnalyticsNamespace.ts +377 -377
  139. package/src/client/namespaces/BatchNamespace.ts +356 -356
  140. package/src/client/namespaces/CacheNamespace.ts +123 -123
  141. package/src/client/namespaces/CapabilityNamespace.ts +217 -217
  142. package/src/client/namespaces/ClassifyNamespace.ts +169 -169
  143. package/src/client/namespaces/ContextNamespace.ts +297 -297
  144. package/src/client/namespaces/EmbeddingsNamespace.ts +99 -99
  145. package/src/client/namespaces/EncryptionNamespace.ts +221 -221
  146. package/src/client/namespaces/GraphNamespace.ts +468 -468
  147. package/src/client/namespaces/IndexNamespace.ts +361 -361
  148. package/src/client/namespaces/MemoryNamespace.ts +1422 -1135
  149. package/src/client/namespaces/PermissionsNamespace.ts +254 -254
  150. package/src/client/namespaces/PipelineNamespace.ts +220 -220
  151. package/src/client/namespaces/SearchNamespace.ts +1049 -1049
  152. package/src/client/namespaces/StorageNamespace.ts +458 -458
  153. package/src/client/namespaces/TxNamespace.ts +260 -260
  154. package/src/client/namespaces/WalletNamespace.ts +243 -243
  155. package/src/client/namespaces/consolidated/AINamespace.ts +449 -449
  156. package/src/client/namespaces/consolidated/BlockchainNamespace.ts +607 -546
  157. package/src/client/namespaces/consolidated/SecurityNamespace.ts +648 -648
  158. package/src/client/namespaces/consolidated/StorageNamespace.ts +1141 -497
  159. package/src/client/namespaces/consolidated/index.ts +39 -39
  160. package/src/client/signers/KeypairSigner.ts +108 -108
  161. package/src/client/signers/UnifiedSigner.ts +110 -110
  162. package/src/client/signers/WalletAdapterSigner.ts +159 -159
  163. package/src/client/signers/index.ts +26 -26
  164. package/src/config/ConfigurationHelper.ts +412 -412
  165. package/src/config/defaults.ts +51 -51
  166. package/src/config/index.ts +8 -8
  167. package/src/config/validation.ts +70 -70
  168. package/src/core/index.ts +14 -14
  169. package/src/core/interfaces/IService.ts +307 -307
  170. package/src/core/interfaces/index.ts +8 -8
  171. package/src/core/types/capability.ts +297 -297
  172. package/src/core/types/index.ts +870 -870
  173. package/src/core/types/wallet.ts +270 -270
  174. package/src/core/types.ts +9 -9
  175. package/src/core/wallet.ts +222 -222
  176. package/src/embedding/index.ts +19 -19
  177. package/src/embedding/types.ts +357 -357
  178. package/src/errors/index.ts +602 -602
  179. package/src/errors/recovery.ts +461 -461
  180. package/src/errors/validation.ts +567 -567
  181. package/src/generated/pdw/capability.ts +319 -319
  182. package/src/graph/GraphService.ts +887 -887
  183. package/src/graph/KnowledgeGraphManager.ts +728 -728
  184. package/src/graph/index.ts +25 -25
  185. package/src/index.ts +498 -474
  186. package/src/infrastructure/index.ts +22 -22
  187. package/src/infrastructure/seal/EncryptionService.ts +628 -603
  188. package/src/infrastructure/seal/SealService.ts +613 -615
  189. package/src/infrastructure/seal/index.ts +9 -9
  190. package/src/infrastructure/sui/BlockchainManager.ts +627 -627
  191. package/src/infrastructure/sui/SuiService.ts +888 -888
  192. package/src/infrastructure/sui/index.ts +9 -9
  193. package/src/infrastructure/walrus/StorageManager.ts +604 -604
  194. package/src/infrastructure/walrus/WalrusStorageService.ts +612 -612
  195. package/src/infrastructure/walrus/index.ts +9 -9
  196. package/src/langchain/PDWEmbeddings.ts +145 -145
  197. package/src/langchain/PDWVectorStore.ts +456 -456
  198. package/src/langchain/createPDWRAG.ts +303 -303
  199. package/src/langchain/index.ts +47 -47
  200. package/src/permissions/ConsentRepository.browser.ts +249 -249
  201. package/src/permissions/ConsentRepository.ts +364 -364
  202. package/src/pipeline/MemoryPipeline.ts +862 -862
  203. package/src/pipeline/PipelineManager.ts +683 -683
  204. package/src/pipeline/index.ts +26 -26
  205. package/src/retrieval/AdvancedSearchService.ts +629 -629
  206. package/src/retrieval/MemoryAnalyticsService.ts +711 -711
  207. package/src/retrieval/MemoryDecryptionPipeline.ts +825 -824
  208. package/src/retrieval/MemoryRetrievalService.ts +904 -830
  209. package/src/retrieval/index.ts +42 -42
  210. package/src/services/BatchService.ts +352 -352
  211. package/src/services/CapabilityService.ts +464 -448
  212. package/src/services/ClassifierService.ts +465 -465
  213. package/src/services/CrossContextPermissionService.ts +486 -484
  214. package/src/services/EmbeddingService.ts +771 -706
  215. package/src/services/EncryptionService.ts +712 -711
  216. package/src/services/GeminiAIService.ts +753 -753
  217. package/src/services/IndexManager.ts +977 -1004
  218. package/src/services/MemoryIndexService.ts +1003 -1003
  219. package/src/services/MemoryService.ts +369 -369
  220. package/src/services/QueryService.ts +890 -890
  221. package/src/services/StorageService.ts +1182 -1111
  222. package/src/services/TransactionService.ts +838 -790
  223. package/src/services/VectorService.ts +462 -462
  224. package/src/services/ViewService.ts +484 -484
  225. package/src/services/index.ts +25 -25
  226. package/src/services/storage/BlobAttributesManager.ts +333 -333
  227. package/src/services/storage/KnowledgeGraphManager.ts +425 -425
  228. package/src/services/storage/MemorySearchManager.ts +387 -387
  229. package/src/services/storage/QuiltBatchManager.ts +1130 -660
  230. package/src/services/storage/WalrusMetadataManager.ts +268 -268
  231. package/src/services/storage/WalrusStorageManager.ts +287 -287
  232. package/src/services/storage/index.ts +57 -52
  233. package/src/types/index.ts +13 -13
  234. package/src/utils/LRUCache.ts +378 -0
  235. package/src/utils/index.ts +76 -68
  236. package/src/utils/memoryIndexOnChain.ts +507 -0
  237. package/src/utils/rebuildIndex.ts +290 -290
  238. package/src/utils/rebuildIndexNode.ts +771 -424
  239. package/src/vector/BrowserHnswIndexService.ts +758 -758
  240. package/src/vector/HnswWasmService.ts +731 -679
  241. package/src/vector/IHnswService.ts +233 -224
  242. package/src/vector/NodeHnswService.ts +833 -735
  243. package/src/vector/VectorManager.ts +478 -478
  244. package/src/vector/createHnswService.ts +135 -135
  245. package/src/vector/index.ts +56 -56
  246. package/src/wallet/ContextWalletService.ts +656 -656
  247. package/src/wallet/MainWalletService.ts +317 -317
package/BENCHMARKS.md CHANGED
@@ -1,238 +1,238 @@
1
- # MemWal SDK Performance Benchmarks
2
-
3
- Benchmark results for `@cmdoss/memwal-sdk` measured on Sui testnet.
4
-
5
- ## Quick Summary
6
-
7
- | Operation | Latency | Notes |
8
- |-----------|---------|-------|
9
- | Vector Search + RAG | ~2.3s | With content retrieval |
10
- | Create Memory | ~2.3s | Classify + embed + upload + index |
11
- | AI Classification | ~2.3s | OpenRouter API |
12
- | Batch Upload (2 items) | ~2.3s | Quilt batching |
13
- | HNSW Search | <100ms | 3072-dim vectors, local |
14
- | Blockchain Query | ~2.3s | List memories from Sui |
15
-
16
- **Average query time: ~2.3s** (with OpenRouter API latency)
17
-
18
- ---
19
-
20
- ## Speed Metrics
21
-
22
- ### AI Operations
23
-
24
- | Operation | Avg Latency | Notes |
25
- |-----------|-------------|-------|
26
- | **Embedding (single)** | ~300ms | OpenRouter text-embedding-3-large |
27
- | **Embedding (batch 5)** | ~400ms | 12.5 texts/sec |
28
- | **Embedding (batch 10)** | ~500ms | 20 texts/sec |
29
- | **shouldSave** | ~200ms | Cached after first call |
30
- | **classify** | ~200ms | Cached responses |
31
- | **Knowledge Graph** | ~3-6s | Entity extraction (Gemini) |
32
-
33
- ### Storage Operations
34
-
35
- | Operation | Latency | Notes |
36
- |-----------|---------|-------|
37
- | **Walrus Upload (single)** | ~2,000ms | Single memory package |
38
- | **Walrus Upload (Quilt batch)** | ~2,500ms | Multiple memories, single tx |
39
- | **Walrus Download** | ~500-1,000ms | Depends on size |
40
- | **Content Cache Hit** | <10ms | Local cache |
41
-
42
- ### Search Operations
43
-
44
- | Operation | Avg Latency | Notes |
45
- |-----------|-------------|-------|
46
- | **HNSW Search (Node.js)** | <50ms | hnswlib-node, 3072-dim |
47
- | **HNSW Search (Browser)** | ~100ms | hnswlib-wasm, 3072-dim |
48
- | **Similarity Calculation** | 0.001ms | 909K calculations/sec |
49
- | **Vector + Content Fetch** | ~2.3s | Search + Walrus retrieval |
50
-
51
- ### Blockchain Operations
52
-
53
- | Operation | Latency | Notes |
54
- |-----------|---------|-------|
55
- | **Memory Create (on-chain)** | ~7,000ms | Includes gas estimation |
56
- | **Memory Update** | ~5,000ms | |
57
- | **Memory Delete** | ~3,000ms | |
58
- | **Batch Create (Quilt)** | ~8,000ms | Multiple memories, single tx |
59
-
60
- ---
61
-
62
- ## Full Pipeline Breakdown
63
-
64
- Complete memory creation pipeline:
65
-
66
- ```text
67
- ┌────────────────────────────────────────────────────────────────┐
68
- │ Memory Creation Pipeline │
69
- ├────────────────────────────────────────────────────────────────┤
70
- │ Step │ Latency │ % of Total │
71
- ├─────────────────────────┼──────────────┼───────────────────────┤
72
- │ 1. shouldSave check │ ~200ms │ 2% │
73
- │ 2. Classification │ ~200ms │ 2% │
74
- │ 3. Embedding (3072-dim) │ ~300ms │ 3% │
75
- │ 4. Walrus Upload │ ~2,000ms │ 20% │
76
- │ 5. On-chain Transaction │ ~7,000ms │ 70% │
77
- │ 6. HNSW Indexing │ ~50ms │ <1% │
78
- ├─────────────────────────┼──────────────┼───────────────────────┤
79
- │ TOTAL │ ~10,000ms │ 100% │
80
- └─────────────────────────┴──────────────┴───────────────────────┘
81
-
82
- With Knowledge Graph extraction: +3-6s
83
- ```
84
-
85
- ### Optimization Tips
86
-
87
- 1. **Skip Knowledge Graph** - Disable if not needed (saves 3-6s)
88
- 2. **Batch Operations** - Use `pdw.memory.createBatch()` with Quilt (~90% gas savings)
89
- 3. **Use hnswlib-node** - Native C++ is 2x faster than WASM
90
- 4. **Cache embeddings** - Reuse embeddings for duplicate content
91
-
92
- ---
93
-
94
- ## Size Metrics
95
-
96
- ### Data Sizes
97
-
98
- | Component | Size | Notes |
99
- |-----------|------|-------|
100
- | **Embedding Vector** | 12,288 bytes | 3072 dimensions × 4 bytes (Float32) |
101
- | **Memory Package** | ~15-20 KB | Content + metadata + embedding |
102
- | **Knowledge Graph** | ~1-5 KB | Entities + relationships JSON |
103
- | **HNSW Index Entry** | ~50 bytes | Per vector (plus metadata) |
104
-
105
- ### Bundle Sizes
106
-
107
- | Build | Size | Notes |
108
- |-------|------|-------|
109
- | **Browser Bundle** | ~2.5 MB | Includes hnswlib-wasm |
110
- | **Node.js Bundle** | ~1.8 MB | Uses hnswlib-node |
111
- | **Minified** | ~800 KB | Gzipped |
112
-
113
- ### Index Capacity
114
-
115
- | Parameter | Value |
116
- |-----------|-------|
117
- | Max Elements | 10,000 |
118
- | Dimensions | 3072 |
119
- | M (connections) | 16 |
120
- | efConstruction | 200 |
121
- | Memory per 1K vectors | ~120 KB |
122
-
123
- ---
124
-
125
- ## Batch Upload (Quilt) Performance
126
-
127
- Walrus Quilt batching provides significant gas savings:
128
-
129
- | Batch Size | Individual Gas | Quilt Gas | Savings |
130
- |------------|----------------|-----------|---------|
131
- | 2 memories | 0.006 SUI | 0.004 SUI | ~33% |
132
- | 5 memories | 0.015 SUI | 0.005 SUI | ~67% |
133
- | 10 memories | 0.030 SUI | 0.006 SUI | ~80% |
134
- | 20 memories | 0.060 SUI | 0.008 SUI | ~87% |
135
-
136
- **Recommendation**: Always use `createBatch()` for multiple memories.
137
-
138
- ---
139
-
140
- ## Cost Estimates
141
-
142
- ### Sui Testnet Gas Costs
143
-
144
- | Operation | Gas Cost | USD Estimate* |
145
- |-----------|----------|---------------|
146
- | **Create Memory** | ~0.003 SUI | ~$0.01 |
147
- | **Create Batch (Quilt)** | ~0.005 SUI | ~$0.02 |
148
- | **Update Memory** | ~0.002 SUI | ~$0.007 |
149
- | **Delete Memory** | ~0.001 SUI | ~$0.003 |
150
-
151
- *Estimated at SUI = $3.50 (Dec 2024)
152
-
153
- ### AI API Costs
154
-
155
- | Provider | Operation | Cost |
156
- |----------|-----------|------|
157
- | **OpenRouter** | text-embedding-3-large | ~$0.00013/1K tokens |
158
- | **OpenRouter** | Classification (GPT-4) | ~$0.03/1K tokens |
159
- | **Gemini** | Knowledge Graph | ~$0.001/request |
160
-
161
- ---
162
-
163
- ## HNSW Performance Comparison
164
-
165
- | Implementation | Search (10K vectors) | Add Vector | Memory |
166
- |----------------|---------------------|------------|--------|
167
- | **hnswlib-node** | ~20ms | ~0.5ms | ~120MB |
168
- | **hnswlib-wasm** | ~50ms | ~1ms | ~120MB |
169
-
170
- **Recommendation**: Use Node.js for production workloads.
171
-
172
- ---
173
-
174
- ## Running Benchmarks
175
-
176
- ### Quick Run
177
-
178
- ```bash
179
- # Run all benchmarks
180
- npm run test:e2e -- benchmark.spec.ts
181
-
182
- # With verbose output
183
- npx playwright test benchmark.spec.ts --reporter=list
184
- ```
185
-
186
- ### Custom Benchmarks
187
-
188
- ```typescript
189
- import { SimplePDWClient } from '@cmdoss/memwal-sdk';
190
-
191
- const pdw = new SimplePDWClient({
192
- signer: keypair,
193
- network: 'testnet',
194
- packageId: '0x...',
195
- embedding: { provider: 'openrouter', apiKey: '...' }
196
- });
197
-
198
- await pdw.ready();
199
-
200
- // Measure embedding latency
201
- const start = performance.now();
202
- const embedding = await pdw.ai.embed('Test text');
203
- console.log(`Embedding: ${(performance.now() - start).toFixed(0)}ms`);
204
- console.log(`Dimensions: ${embedding.length}`); // 3072
205
-
206
- // Measure search latency
207
- const searchStart = performance.now();
208
- const results = await pdw.search.vector('query', { limit: 5 });
209
- console.log(`Search: ${(performance.now() - searchStart).toFixed(0)}ms`);
210
-
211
- // Measure batch create
212
- const batchStart = performance.now();
213
- const memories = await pdw.memory.createBatch([
214
- 'Memory 1', 'Memory 2', 'Memory 3'
215
- ]);
216
- console.log(`Batch create: ${(performance.now() - batchStart).toFixed(0)}ms`);
217
- ```
218
-
219
- ---
220
-
221
- ## Environment
222
-
223
- Benchmarks were run with:
224
-
225
- - **Runtime**: Node.js 20 / Chromium (Playwright)
226
- - **Network**: Sui Testnet
227
- - **Embedding**: OpenRouter (text-embedding-3-large, 3072 dims)
228
- - **Storage**: Walrus Testnet
229
- - **HNSW**: hnswlib-node (Node.js) / hnswlib-wasm (Browser)
230
- - **Machine**: Windows 11
231
-
232
- ---
233
-
234
- ## Related Documentation
235
-
236
- - [README.md](./README.md) - Quick start guide
237
- - [ARCHITECTURE.md](./ARCHITECTURE.md) - System architecture
238
- - [CHANGELOG.md](./CHANGELOG.md) - Version history
1
+ # MemWal SDK Performance Benchmarks
2
+
3
+ Benchmark results for `@cmdoss/memwal-sdk` measured on Sui testnet.
4
+
5
+ ## Quick Summary
6
+
7
+ | Operation | Latency | Notes |
8
+ |-----------|---------|-------|
9
+ | Vector Search + RAG | ~2.3s | With content retrieval |
10
+ | Create Memory | ~2.3s | Classify + embed + upload + index |
11
+ | AI Classification | ~2.3s | OpenRouter API |
12
+ | Batch Upload (2 items) | ~2.3s | Quilt batching |
13
+ | HNSW Search | <100ms | 3072-dim vectors, local |
14
+ | Blockchain Query | ~2.3s | List memories from Sui |
15
+
16
+ **Average query time: ~2.3s** (with OpenRouter API latency)
17
+
18
+ ---
19
+
20
+ ## Speed Metrics
21
+
22
+ ### AI Operations
23
+
24
+ | Operation | Avg Latency | Notes |
25
+ |-----------|-------------|-------|
26
+ | **Embedding (single)** | ~300ms | OpenRouter text-embedding-3-large |
27
+ | **Embedding (batch 5)** | ~400ms | 12.5 texts/sec |
28
+ | **Embedding (batch 10)** | ~500ms | 20 texts/sec |
29
+ | **shouldSave** | ~200ms | Cached after first call |
30
+ | **classify** | ~200ms | Cached responses |
31
+ | **Knowledge Graph** | ~3-6s | Entity extraction (Gemini) |
32
+
33
+ ### Storage Operations
34
+
35
+ | Operation | Latency | Notes |
36
+ |-----------|---------|-------|
37
+ | **Walrus Upload (single)** | ~2,000ms | Single memory package |
38
+ | **Walrus Upload (Quilt batch)** | ~2,500ms | Multiple memories, single tx |
39
+ | **Walrus Download** | ~500-1,000ms | Depends on size |
40
+ | **Content Cache Hit** | <10ms | Local cache |
41
+
42
+ ### Search Operations
43
+
44
+ | Operation | Avg Latency | Notes |
45
+ |-----------|-------------|-------|
46
+ | **HNSW Search (Node.js)** | <50ms | hnswlib-node, 3072-dim |
47
+ | **HNSW Search (Browser)** | ~100ms | hnswlib-wasm, 3072-dim |
48
+ | **Similarity Calculation** | 0.001ms | 909K calculations/sec |
49
+ | **Vector + Content Fetch** | ~2.3s | Search + Walrus retrieval |
50
+
51
+ ### Blockchain Operations
52
+
53
+ | Operation | Latency | Notes |
54
+ |-----------|---------|-------|
55
+ | **Memory Create (on-chain)** | ~7,000ms | Includes gas estimation |
56
+ | **Memory Update** | ~5,000ms | |
57
+ | **Memory Delete** | ~3,000ms | |
58
+ | **Batch Create (Quilt)** | ~8,000ms | Multiple memories, single tx |
59
+
60
+ ---
61
+
62
+ ## Full Pipeline Breakdown
63
+
64
+ Complete memory creation pipeline:
65
+
66
+ ```text
67
+ ┌────────────────────────────────────────────────────────────────┐
68
+ │ Memory Creation Pipeline │
69
+ ├────────────────────────────────────────────────────────────────┤
70
+ │ Step │ Latency │ % of Total │
71
+ ├─────────────────────────┼──────────────┼───────────────────────┤
72
+ │ 1. shouldSave check │ ~200ms │ 2% │
73
+ │ 2. Classification │ ~200ms │ 2% │
74
+ │ 3. Embedding (3072-dim) │ ~300ms │ 3% │
75
+ │ 4. Walrus Upload │ ~2,000ms │ 20% │
76
+ │ 5. On-chain Transaction │ ~7,000ms │ 70% │
77
+ │ 6. HNSW Indexing │ ~50ms │ <1% │
78
+ ├─────────────────────────┼──────────────┼───────────────────────┤
79
+ │ TOTAL │ ~10,000ms │ 100% │
80
+ └─────────────────────────┴──────────────┴───────────────────────┘
81
+
82
+ With Knowledge Graph extraction: +3-6s
83
+ ```
84
+
85
+ ### Optimization Tips
86
+
87
+ 1. **Skip Knowledge Graph** - Disable if not needed (saves 3-6s)
88
+ 2. **Batch Operations** - Use `pdw.memory.createBatch()` with Quilt (~90% gas savings)
89
+ 3. **Use hnswlib-node** - Native C++ is 2x faster than WASM
90
+ 4. **Cache embeddings** - Reuse embeddings for duplicate content
91
+
92
+ ---
93
+
94
+ ## Size Metrics
95
+
96
+ ### Data Sizes
97
+
98
+ | Component | Size | Notes |
99
+ |-----------|------|-------|
100
+ | **Embedding Vector** | 12,288 bytes | 3072 dimensions × 4 bytes (Float32) |
101
+ | **Memory Package** | ~15-20 KB | Content + metadata + embedding |
102
+ | **Knowledge Graph** | ~1-5 KB | Entities + relationships JSON |
103
+ | **HNSW Index Entry** | ~50 bytes | Per vector (plus metadata) |
104
+
105
+ ### Bundle Sizes
106
+
107
+ | Build | Size | Notes |
108
+ |-------|------|-------|
109
+ | **Browser Bundle** | ~2.5 MB | Includes hnswlib-wasm |
110
+ | **Node.js Bundle** | ~1.8 MB | Uses hnswlib-node |
111
+ | **Minified** | ~800 KB | Gzipped |
112
+
113
+ ### Index Capacity
114
+
115
+ | Parameter | Value |
116
+ |-----------|-------|
117
+ | Max Elements | 10,000 |
118
+ | Dimensions | 3072 |
119
+ | M (connections) | 16 |
120
+ | efConstruction | 200 |
121
+ | Memory per 1K vectors | ~120 KB |
122
+
123
+ ---
124
+
125
+ ## Batch Upload (Quilt) Performance
126
+
127
+ Walrus Quilt batching provides significant gas savings:
128
+
129
+ | Batch Size | Individual Gas | Quilt Gas | Savings |
130
+ |------------|----------------|-----------|---------|
131
+ | 2 memories | 0.006 SUI | 0.004 SUI | ~33% |
132
+ | 5 memories | 0.015 SUI | 0.005 SUI | ~67% |
133
+ | 10 memories | 0.030 SUI | 0.006 SUI | ~80% |
134
+ | 20 memories | 0.060 SUI | 0.008 SUI | ~87% |
135
+
136
+ **Recommendation**: Always use `createBatch()` for multiple memories.
137
+
138
+ ---
139
+
140
+ ## Cost Estimates
141
+
142
+ ### Sui Testnet Gas Costs
143
+
144
+ | Operation | Gas Cost | USD Estimate* |
145
+ |-----------|----------|---------------|
146
+ | **Create Memory** | ~0.003 SUI | ~$0.01 |
147
+ | **Create Batch (Quilt)** | ~0.005 SUI | ~$0.02 |
148
+ | **Update Memory** | ~0.002 SUI | ~$0.007 |
149
+ | **Delete Memory** | ~0.001 SUI | ~$0.003 |
150
+
151
+ *Estimated at SUI = $3.50 (Dec 2024)
152
+
153
+ ### AI API Costs
154
+
155
+ | Provider | Operation | Cost |
156
+ |----------|-----------|------|
157
+ | **OpenRouter** | text-embedding-3-large | ~$0.00013/1K tokens |
158
+ | **OpenRouter** | Classification (GPT-4) | ~$0.03/1K tokens |
159
+ | **Gemini** | Knowledge Graph | ~$0.001/request |
160
+
161
+ ---
162
+
163
+ ## HNSW Performance Comparison
164
+
165
+ | Implementation | Search (10K vectors) | Add Vector | Memory |
166
+ |----------------|---------------------|------------|--------|
167
+ | **hnswlib-node** | ~20ms | ~0.5ms | ~120MB |
168
+ | **hnswlib-wasm** | ~50ms | ~1ms | ~120MB |
169
+
170
+ **Recommendation**: Use Node.js for production workloads.
171
+
172
+ ---
173
+
174
+ ## Running Benchmarks
175
+
176
+ ### Quick Run
177
+
178
+ ```bash
179
+ # Run all benchmarks
180
+ npm run test:e2e -- benchmark.spec.ts
181
+
182
+ # With verbose output
183
+ npx playwright test benchmark.spec.ts --reporter=list
184
+ ```
185
+
186
+ ### Custom Benchmarks
187
+
188
+ ```typescript
189
+ import { SimplePDWClient } from '@cmdoss/memwal-sdk';
190
+
191
+ const pdw = new SimplePDWClient({
192
+ signer: keypair,
193
+ network: 'testnet',
194
+ packageId: '0x...',
195
+ embedding: { provider: 'openrouter', apiKey: '...' }
196
+ });
197
+
198
+ await pdw.ready();
199
+
200
+ // Measure embedding latency
201
+ const start = performance.now();
202
+ const embedding = await pdw.ai.embed('Test text');
203
+ console.log(`Embedding: ${(performance.now() - start).toFixed(0)}ms`);
204
+ console.log(`Dimensions: ${embedding.length}`); // 3072
205
+
206
+ // Measure search latency
207
+ const searchStart = performance.now();
208
+ const results = await pdw.search.vector('query', { limit: 5 });
209
+ console.log(`Search: ${(performance.now() - searchStart).toFixed(0)}ms`);
210
+
211
+ // Measure batch create
212
+ const batchStart = performance.now();
213
+ const memories = await pdw.memory.createBatch([
214
+ 'Memory 1', 'Memory 2', 'Memory 3'
215
+ ]);
216
+ console.log(`Batch create: ${(performance.now() - batchStart).toFixed(0)}ms`);
217
+ ```
218
+
219
+ ---
220
+
221
+ ## Environment
222
+
223
+ Benchmarks were run with:
224
+
225
+ - **Runtime**: Node.js 20 / Chromium (Playwright)
226
+ - **Network**: Sui Testnet
227
+ - **Embedding**: OpenRouter (text-embedding-3-large, 3072 dims)
228
+ - **Storage**: Walrus Testnet
229
+ - **HNSW**: hnswlib-node (Node.js) / hnswlib-wasm (Browser)
230
+ - **Machine**: Windows 11
231
+
232
+ ---
233
+
234
+ ## Related Documentation
235
+
236
+ - [README.md](./README.md) - Quick start guide
237
+ - [ARCHITECTURE.md](./ARCHITECTURE.md) - System architecture
238
+ - [CHANGELOG.md](./CHANGELOG.md) - Version history