agentdb 1.0.12 → 1.1.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.
- package/README.md +196 -838
- package/dist/benchmarks/comprehensive-benchmark.js +664 -0
- package/dist/benchmarks/frontier-benchmark.js +419 -0
- package/dist/benchmarks/reflexion-benchmark.js +370 -0
- package/dist/cli/agentdb-cli.d.ts +117 -0
- package/dist/cli/agentdb-cli.d.ts.map +1 -0
- package/dist/cli/agentdb-cli.js +724 -0
- package/dist/cli/agentdb-cli.js.map +1 -0
- package/dist/controllers/CausalMemoryGraph.d.ts +125 -0
- package/dist/controllers/CausalMemoryGraph.d.ts.map +1 -0
- package/dist/controllers/CausalMemoryGraph.js +323 -0
- package/dist/controllers/CausalMemoryGraph.js.map +1 -0
- package/dist/controllers/CausalRecall.d.ts +111 -0
- package/dist/controllers/CausalRecall.d.ts.map +1 -0
- package/dist/controllers/CausalRecall.js +282 -0
- package/dist/controllers/CausalRecall.js.map +1 -0
- package/dist/controllers/EmbeddingService.d.ts +37 -0
- package/dist/controllers/EmbeddingService.d.ts.map +1 -0
- package/dist/controllers/EmbeddingService.js +119 -0
- package/dist/controllers/EmbeddingService.js.map +1 -0
- package/dist/controllers/ExplainableRecall.d.ts +138 -0
- package/dist/controllers/ExplainableRecall.d.ts.map +1 -0
- package/dist/controllers/ExplainableRecall.js +388 -0
- package/dist/controllers/ExplainableRecall.js.map +1 -0
- package/dist/controllers/NightlyLearner.d.ts +113 -0
- package/dist/controllers/NightlyLearner.d.ts.map +1 -0
- package/dist/controllers/NightlyLearner.js +383 -0
- package/dist/controllers/NightlyLearner.js.map +1 -0
- package/dist/controllers/ReflexionMemory.d.ts +84 -0
- package/dist/controllers/ReflexionMemory.d.ts.map +1 -0
- package/dist/controllers/ReflexionMemory.js +240 -0
- package/dist/controllers/ReflexionMemory.js.map +1 -0
- package/dist/controllers/SkillLibrary.d.ts +96 -0
- package/dist/controllers/SkillLibrary.d.ts.map +1 -0
- package/dist/controllers/SkillLibrary.js +277 -0
- package/dist/controllers/SkillLibrary.js.map +1 -0
- package/dist/controllers/frontier-index.d.ts +14 -0
- package/dist/controllers/frontier-index.d.ts.map +1 -0
- package/dist/controllers/frontier-index.js +10 -0
- package/dist/controllers/frontier-index.js.map +1 -0
- package/dist/controllers/index.d.ts +12 -0
- package/dist/controllers/index.d.ts.map +1 -0
- package/dist/controllers/index.js +9 -0
- package/dist/controllers/index.js.map +1 -0
- package/dist/optimizations/BatchOperations.d.ts +61 -0
- package/dist/optimizations/BatchOperations.d.ts.map +1 -0
- package/dist/optimizations/BatchOperations.js +199 -0
- package/dist/optimizations/BatchOperations.js.map +1 -0
- package/dist/optimizations/QueryOptimizer.d.ts +82 -0
- package/dist/optimizations/QueryOptimizer.d.ts.map +1 -0
- package/dist/optimizations/QueryOptimizer.js +226 -0
- package/dist/optimizations/QueryOptimizer.js.map +1 -0
- package/dist/optimizations/index.d.ts +10 -0
- package/dist/optimizations/index.d.ts.map +1 -0
- package/dist/optimizations/index.js +8 -0
- package/dist/optimizations/index.js.map +1 -0
- package/dist/schemas/frontier-schema.sql +341 -0
- package/dist/schemas/schema.sql +382 -0
- package/dist/tests/frontier-features.test.js +665 -0
- package/package.json +54 -117
- package/src/cli/agentdb-cli.ts +861 -0
- package/src/cli/examples.sh +83 -0
- package/src/controllers/CausalMemoryGraph.ts +504 -0
- package/src/controllers/CausalRecall.ts +395 -0
- package/src/controllers/EmbeddingService.ts +141 -0
- package/src/controllers/ExplainableRecall.ts +577 -0
- package/src/controllers/NightlyLearner.ts +475 -0
- package/src/controllers/ReflexionMemory.ts +349 -0
- package/src/controllers/SkillLibrary.ts +391 -0
- package/src/controllers/frontier-index.ts +35 -0
- package/src/controllers/index.ts +13 -0
- package/src/optimizations/BatchOperations.ts +292 -0
- package/src/optimizations/QueryOptimizer.ts +294 -0
- package/src/optimizations/index.ts +11 -0
- package/src/schemas/frontier-schema.sql +341 -0
- package/src/schemas/schema.sql +382 -0
- package/CHANGELOG.md +0 -166
- package/LICENSE +0 -38
- package/LICENSE-APACHE +0 -190
- package/LICENSE-MIT +0 -21
- package/bin/agentdb.js +0 -733
- package/bin/benchmark.js +0 -165
- package/bin/plugin-cli-wrapper.mjs +0 -21
- package/dist/agentdb.js +0 -5352
- package/dist/agentdb.js.map +0 -7
- package/dist/agentdb.min.js +0 -143
- package/dist/agentdb.min.js.map +0 -7
- package/dist/cache/query-cache.d.ts +0 -105
- package/dist/cache/query-cache.d.ts.map +0 -1
- package/dist/cache/query-cache.js +0 -224
- package/dist/cache/query-cache.js.map +0 -1
- package/dist/cache/query-cache.mjs +0 -219
- package/dist/cli/cache/query-cache.d.ts +0 -104
- package/dist/cli/cache/query-cache.js +0 -244
- package/dist/cli/cli/db-commands.d.ts +0 -48
- package/dist/cli/cli/db-commands.js +0 -613
- package/dist/cli/commands.d.ts +0 -7
- package/dist/cli/commands.d.ts.map +0 -1
- package/dist/cli/commands.js +0 -113
- package/dist/cli/commands.js.map +0 -1
- package/dist/cli/commands.mjs +0 -104
- package/dist/cli/core/backend-interface.d.ts +0 -70
- package/dist/cli/core/backend-interface.js +0 -15
- package/dist/cli/core/native-backend.d.ts +0 -140
- package/dist/cli/core/native-backend.js +0 -432
- package/dist/cli/core/vector-db.d.ts +0 -126
- package/dist/cli/core/vector-db.js +0 -338
- package/dist/cli/core/wasm-backend.d.ts +0 -95
- package/dist/cli/core/wasm-backend.js +0 -418
- package/dist/cli/db-commands.d.ts +0 -49
- package/dist/cli/db-commands.d.ts.map +0 -1
- package/dist/cli/db-commands.js +0 -533
- package/dist/cli/db-commands.js.map +0 -1
- package/dist/cli/db-commands.mjs +0 -522
- package/dist/cli/generator.d.ts +0 -11
- package/dist/cli/generator.d.ts.map +0 -1
- package/dist/cli/generator.js +0 -567
- package/dist/cli/generator.js.map +0 -1
- package/dist/cli/generator.mjs +0 -527
- package/dist/cli/help.d.ts +0 -18
- package/dist/cli/help.d.ts.map +0 -1
- package/dist/cli/help.js +0 -676
- package/dist/cli/help.js.map +0 -1
- package/dist/cli/help.mjs +0 -667
- package/dist/cli/index/hnsw.d.ts +0 -164
- package/dist/cli/index/hnsw.js +0 -558
- package/dist/cli/plugin-cli.d.ts +0 -7
- package/dist/cli/plugin-cli.d.ts.map +0 -1
- package/dist/cli/plugin-cli.js +0 -295
- package/dist/cli/plugin-cli.js.map +0 -1
- package/dist/cli/plugin-cli.mjs +0 -289
- package/dist/cli/quantization/product-quantization.d.ts +0 -108
- package/dist/cli/quantization/product-quantization.js +0 -350
- package/dist/cli/query/query-builder.d.ts +0 -322
- package/dist/cli/query/query-builder.js +0 -600
- package/dist/cli/templates.d.ts +0 -14
- package/dist/cli/templates.d.ts.map +0 -1
- package/dist/cli/templates.js +0 -182
- package/dist/cli/templates.js.map +0 -1
- package/dist/cli/templates.mjs +0 -176
- package/dist/cli/types/index.d.ts +0 -116
- package/dist/cli/types/index.js +0 -5
- package/dist/cli/types.d.ts +0 -91
- package/dist/cli/types.d.ts.map +0 -1
- package/dist/cli/types.js +0 -6
- package/dist/cli/types.js.map +0 -1
- package/dist/cli/types.mjs +0 -4
- package/dist/cli/wizard/index.d.ts +0 -6
- package/dist/cli/wizard/index.d.ts.map +0 -1
- package/dist/cli/wizard/index.js +0 -138
- package/dist/cli/wizard/index.js.map +0 -1
- package/dist/cli/wizard/index.mjs +0 -131
- package/dist/cli/wizard/prompts.d.ts +0 -11
- package/dist/cli/wizard/prompts.d.ts.map +0 -1
- package/dist/cli/wizard/prompts.js +0 -482
- package/dist/cli/wizard/prompts.js.map +0 -1
- package/dist/cli/wizard/prompts.mjs +0 -470
- package/dist/cli/wizard/validator.d.ts +0 -13
- package/dist/cli/wizard/validator.d.ts.map +0 -1
- package/dist/cli/wizard/validator.js +0 -234
- package/dist/cli/wizard/validator.js.map +0 -1
- package/dist/cli/wizard/validator.mjs +0 -224
- package/dist/core/backend-interface.d.ts +0 -71
- package/dist/core/backend-interface.d.ts.map +0 -1
- package/dist/core/backend-interface.js +0 -16
- package/dist/core/backend-interface.js.map +0 -1
- package/dist/core/backend-interface.mjs +0 -12
- package/dist/core/native-backend.d.ts +0 -141
- package/dist/core/native-backend.d.ts.map +0 -1
- package/dist/core/native-backend.js +0 -457
- package/dist/core/native-backend.js.map +0 -1
- package/dist/core/native-backend.mjs +0 -449
- package/dist/core/vector-db.d.ts +0 -127
- package/dist/core/vector-db.d.ts.map +0 -1
- package/dist/core/vector-db.js +0 -270
- package/dist/core/vector-db.js.map +0 -1
- package/dist/core/vector-db.mjs +0 -265
- package/dist/core/wasm-backend.d.ts +0 -96
- package/dist/core/wasm-backend.d.ts.map +0 -1
- package/dist/core/wasm-backend.js +0 -393
- package/dist/core/wasm-backend.js.map +0 -1
- package/dist/core/wasm-backend.mjs +0 -385
- package/dist/index/hnsw-optimized.d.ts +0 -75
- package/dist/index/hnsw-optimized.d.ts.map +0 -1
- package/dist/index/hnsw-optimized.js +0 -412
- package/dist/index/hnsw-optimized.js.map +0 -1
- package/dist/index/hnsw-optimized.mjs +0 -407
- package/dist/index/hnsw.d.ts +0 -165
- package/dist/index/hnsw.d.ts.map +0 -1
- package/dist/index/hnsw.js +0 -521
- package/dist/index/hnsw.js.map +0 -1
- package/dist/index/hnsw.mjs +0 -516
- package/dist/index.browser.d.ts +0 -47
- package/dist/index.browser.d.ts.map +0 -1
- package/dist/index.browser.js +0 -72
- package/dist/index.browser.js.map +0 -1
- package/dist/index.browser.mjs +0 -54
- package/dist/index.d.ts +0 -59
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -84
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -65
- package/dist/mcp/learning/core/experience-buffer.d.ts +0 -61
- package/dist/mcp/learning/core/experience-buffer.d.ts.map +0 -1
- package/dist/mcp/learning/core/experience-buffer.js +0 -175
- package/dist/mcp/learning/core/experience-buffer.js.map +0 -1
- package/dist/mcp/learning/core/experience-buffer.mjs +0 -170
- package/dist/mcp/learning/core/experience-recorder.d.ts +0 -40
- package/dist/mcp/learning/core/experience-recorder.d.ts.map +0 -1
- package/dist/mcp/learning/core/experience-recorder.js +0 -200
- package/dist/mcp/learning/core/experience-recorder.js.map +0 -1
- package/dist/mcp/learning/core/experience-recorder.mjs +0 -195
- package/dist/mcp/learning/core/learning-manager.d.ts +0 -66
- package/dist/mcp/learning/core/learning-manager.d.ts.map +0 -1
- package/dist/mcp/learning/core/learning-manager.js +0 -252
- package/dist/mcp/learning/core/learning-manager.js.map +0 -1
- package/dist/mcp/learning/core/learning-manager.mjs +0 -247
- package/dist/mcp/learning/core/policy-optimizer.d.ts +0 -53
- package/dist/mcp/learning/core/policy-optimizer.d.ts.map +0 -1
- package/dist/mcp/learning/core/policy-optimizer.js +0 -251
- package/dist/mcp/learning/core/policy-optimizer.js.map +0 -1
- package/dist/mcp/learning/core/policy-optimizer.mjs +0 -246
- package/dist/mcp/learning/core/reward-estimator.d.ts +0 -44
- package/dist/mcp/learning/core/reward-estimator.d.ts.map +0 -1
- package/dist/mcp/learning/core/reward-estimator.js +0 -158
- package/dist/mcp/learning/core/reward-estimator.js.map +0 -1
- package/dist/mcp/learning/core/reward-estimator.mjs +0 -153
- package/dist/mcp/learning/core/session-manager.d.ts +0 -63
- package/dist/mcp/learning/core/session-manager.d.ts.map +0 -1
- package/dist/mcp/learning/core/session-manager.js +0 -202
- package/dist/mcp/learning/core/session-manager.js.map +0 -1
- package/dist/mcp/learning/core/session-manager.mjs +0 -197
- package/dist/mcp/learning/index.d.ts +0 -19
- package/dist/mcp/learning/index.d.ts.map +0 -1
- package/dist/mcp/learning/index.js +0 -30
- package/dist/mcp/learning/index.js.map +0 -1
- package/dist/mcp/learning/index.mjs +0 -19
- package/dist/mcp/learning/tools/mcp-learning-tools.d.ts +0 -369
- package/dist/mcp/learning/tools/mcp-learning-tools.d.ts.map +0 -1
- package/dist/mcp/learning/tools/mcp-learning-tools.js +0 -361
- package/dist/mcp/learning/tools/mcp-learning-tools.js.map +0 -1
- package/dist/mcp/learning/tools/mcp-learning-tools.mjs +0 -356
- package/dist/mcp/learning/types/index.d.ts +0 -138
- package/dist/mcp/learning/types/index.d.ts.map +0 -1
- package/dist/mcp/learning/types/index.js +0 -6
- package/dist/mcp/learning/types/index.js.map +0 -1
- package/dist/mcp/learning/types/index.mjs +0 -4
- package/dist/mcp-server.d.ts +0 -29
- package/dist/mcp-server.d.ts.map +0 -1
- package/dist/mcp-server.js +0 -862
- package/dist/mcp-server.js.map +0 -1
- package/dist/mcp-server.mjs +0 -857
- package/dist/plugins/base-plugin.d.ts +0 -114
- package/dist/plugins/base-plugin.d.ts.map +0 -1
- package/dist/plugins/base-plugin.js +0 -313
- package/dist/plugins/base-plugin.js.map +0 -1
- package/dist/plugins/base-plugin.mjs +0 -275
- package/dist/plugins/implementations/active-learning.d.ts +0 -135
- package/dist/plugins/implementations/active-learning.d.ts.map +0 -1
- package/dist/plugins/implementations/active-learning.js +0 -372
- package/dist/plugins/implementations/active-learning.js.map +0 -1
- package/dist/plugins/implementations/active-learning.mjs +0 -367
- package/dist/plugins/implementations/actor-critic.d.ts +0 -64
- package/dist/plugins/implementations/actor-critic.d.ts.map +0 -1
- package/dist/plugins/implementations/actor-critic.js +0 -363
- package/dist/plugins/implementations/actor-critic.js.map +0 -1
- package/dist/plugins/implementations/actor-critic.mjs +0 -358
- package/dist/plugins/implementations/adversarial-training.d.ts +0 -133
- package/dist/plugins/implementations/adversarial-training.d.ts.map +0 -1
- package/dist/plugins/implementations/adversarial-training.js +0 -409
- package/dist/plugins/implementations/adversarial-training.js.map +0 -1
- package/dist/plugins/implementations/adversarial-training.mjs +0 -404
- package/dist/plugins/implementations/curriculum-learning.d.ts +0 -132
- package/dist/plugins/implementations/curriculum-learning.d.ts.map +0 -1
- package/dist/plugins/implementations/curriculum-learning.js +0 -354
- package/dist/plugins/implementations/curriculum-learning.js.map +0 -1
- package/dist/plugins/implementations/curriculum-learning.mjs +0 -349
- package/dist/plugins/implementations/decision-transformer.d.ts +0 -77
- package/dist/plugins/implementations/decision-transformer.d.ts.map +0 -1
- package/dist/plugins/implementations/decision-transformer.js +0 -422
- package/dist/plugins/implementations/decision-transformer.js.map +0 -1
- package/dist/plugins/implementations/decision-transformer.mjs +0 -417
- package/dist/plugins/implementations/federated-learning.d.ts +0 -126
- package/dist/plugins/implementations/federated-learning.d.ts.map +0 -1
- package/dist/plugins/implementations/federated-learning.js +0 -436
- package/dist/plugins/implementations/federated-learning.js.map +0 -1
- package/dist/plugins/implementations/federated-learning.mjs +0 -431
- package/dist/plugins/implementations/index.d.ts +0 -30
- package/dist/plugins/implementations/index.d.ts.map +0 -1
- package/dist/plugins/implementations/index.js +0 -45
- package/dist/plugins/implementations/index.js.map +0 -1
- package/dist/plugins/implementations/index.mjs +0 -31
- package/dist/plugins/implementations/multi-task-learning.d.ts +0 -115
- package/dist/plugins/implementations/multi-task-learning.d.ts.map +0 -1
- package/dist/plugins/implementations/multi-task-learning.js +0 -369
- package/dist/plugins/implementations/multi-task-learning.js.map +0 -1
- package/dist/plugins/implementations/multi-task-learning.mjs +0 -364
- package/dist/plugins/implementations/neural-architecture-search.d.ts +0 -148
- package/dist/plugins/implementations/neural-architecture-search.d.ts.map +0 -1
- package/dist/plugins/implementations/neural-architecture-search.js +0 -379
- package/dist/plugins/implementations/neural-architecture-search.js.map +0 -1
- package/dist/plugins/implementations/neural-architecture-search.mjs +0 -374
- package/dist/plugins/implementations/q-learning.d.ts +0 -98
- package/dist/plugins/implementations/q-learning.d.ts.map +0 -1
- package/dist/plugins/implementations/q-learning.js +0 -435
- package/dist/plugins/implementations/q-learning.js.map +0 -1
- package/dist/plugins/implementations/q-learning.mjs +0 -430
- package/dist/plugins/implementations/sarsa.d.ts +0 -103
- package/dist/plugins/implementations/sarsa.d.ts.map +0 -1
- package/dist/plugins/implementations/sarsa.js +0 -347
- package/dist/plugins/implementations/sarsa.js.map +0 -1
- package/dist/plugins/implementations/sarsa.mjs +0 -342
- package/dist/plugins/index.d.ts +0 -107
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -179
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/index.mjs +0 -168
- package/dist/plugins/interface.d.ts +0 -439
- package/dist/plugins/interface.d.ts.map +0 -1
- package/dist/plugins/interface.js +0 -12
- package/dist/plugins/interface.js.map +0 -1
- package/dist/plugins/interface.mjs +0 -10
- package/dist/plugins/learning-plugin.interface.d.ts +0 -257
- package/dist/plugins/learning-plugin.interface.d.ts.map +0 -1
- package/dist/plugins/learning-plugin.interface.js +0 -7
- package/dist/plugins/learning-plugin.interface.js.map +0 -1
- package/dist/plugins/learning-plugin.interface.mjs +0 -5
- package/dist/plugins/plugin-exports.d.ts +0 -71
- package/dist/plugins/plugin-exports.d.ts.map +0 -1
- package/dist/plugins/plugin-exports.js +0 -78
- package/dist/plugins/plugin-exports.js.map +0 -1
- package/dist/plugins/plugin-exports.mjs +0 -69
- package/dist/plugins/registry.d.ts +0 -206
- package/dist/plugins/registry.d.ts.map +0 -1
- package/dist/plugins/registry.js +0 -365
- package/dist/plugins/registry.js.map +0 -1
- package/dist/plugins/registry.mjs +0 -356
- package/dist/plugins/validator.d.ts +0 -63
- package/dist/plugins/validator.d.ts.map +0 -1
- package/dist/plugins/validator.js +0 -464
- package/dist/plugins/validator.js.map +0 -1
- package/dist/plugins/validator.mjs +0 -458
- package/dist/presets.d.ts +0 -65
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -145
- package/dist/presets.js.map +0 -1
- package/dist/presets.mjs +0 -140
- package/dist/quantization/binary-quantization.d.ts +0 -104
- package/dist/quantization/binary-quantization.d.ts.map +0 -1
- package/dist/quantization/binary-quantization.js +0 -246
- package/dist/quantization/binary-quantization.js.map +0 -1
- package/dist/quantization/binary-quantization.mjs +0 -240
- package/dist/quantization/optimized-pq.d.ts +0 -138
- package/dist/quantization/optimized-pq.d.ts.map +0 -1
- package/dist/quantization/optimized-pq.js +0 -320
- package/dist/quantization/optimized-pq.js.map +0 -1
- package/dist/quantization/optimized-pq.mjs +0 -313
- package/dist/quantization/product-quantization.d.ts +0 -109
- package/dist/quantization/product-quantization.d.ts.map +0 -1
- package/dist/quantization/product-quantization.js +0 -287
- package/dist/quantization/product-quantization.js.map +0 -1
- package/dist/quantization/product-quantization.mjs +0 -282
- package/dist/quantization/scalar-quantization.d.ts +0 -100
- package/dist/quantization/scalar-quantization.d.ts.map +0 -1
- package/dist/quantization/scalar-quantization.js +0 -324
- package/dist/quantization/scalar-quantization.js.map +0 -1
- package/dist/quantization/scalar-quantization.mjs +0 -319
- package/dist/query/index.d.ts +0 -6
- package/dist/query/index.d.ts.map +0 -1
- package/dist/query/index.js +0 -9
- package/dist/query/index.js.map +0 -1
- package/dist/query/index.mjs +0 -4
- package/dist/query/query-builder.d.ts +0 -323
- package/dist/query/query-builder.d.ts.map +0 -1
- package/dist/query/query-builder.js +0 -524
- package/dist/query/query-builder.js.map +0 -1
- package/dist/query/query-builder.mjs +0 -519
- package/dist/reasoning/context-synthesizer.d.ts +0 -57
- package/dist/reasoning/context-synthesizer.d.ts.map +0 -1
- package/dist/reasoning/context-synthesizer.js +0 -224
- package/dist/reasoning/context-synthesizer.js.map +0 -1
- package/dist/reasoning/context-synthesizer.mjs +0 -219
- package/dist/reasoning/experience-curator.d.ts +0 -66
- package/dist/reasoning/experience-curator.d.ts.map +0 -1
- package/dist/reasoning/experience-curator.js +0 -288
- package/dist/reasoning/experience-curator.js.map +0 -1
- package/dist/reasoning/experience-curator.mjs +0 -283
- package/dist/reasoning/memory-optimizer.d.ts +0 -69
- package/dist/reasoning/memory-optimizer.d.ts.map +0 -1
- package/dist/reasoning/memory-optimizer.js +0 -331
- package/dist/reasoning/memory-optimizer.js.map +0 -1
- package/dist/reasoning/memory-optimizer.mjs +0 -326
- package/dist/reasoning/pattern-matcher.d.ts +0 -59
- package/dist/reasoning/pattern-matcher.d.ts.map +0 -1
- package/dist/reasoning/pattern-matcher.js +0 -229
- package/dist/reasoning/pattern-matcher.js.map +0 -1
- package/dist/reasoning/pattern-matcher.mjs +0 -224
- package/dist/reasoningbank/adapter/agentdb-adapter.d.ts +0 -118
- package/dist/reasoningbank/adapter/agentdb-adapter.d.ts.map +0 -1
- package/dist/reasoningbank/adapter/agentdb-adapter.js +0 -477
- package/dist/reasoningbank/adapter/agentdb-adapter.js.map +0 -1
- package/dist/reasoningbank/adapter/types.d.ts +0 -113
- package/dist/reasoningbank/adapter/types.d.ts.map +0 -1
- package/dist/reasoningbank/adapter/types.js +0 -9
- package/dist/reasoningbank/adapter/types.js.map +0 -1
- package/dist/reasoningbank/cli/commands.d.ts +0 -16
- package/dist/reasoningbank/cli/commands.d.ts.map +0 -1
- package/dist/reasoningbank/cli/commands.js +0 -272
- package/dist/reasoningbank/cli/commands.js.map +0 -1
- package/dist/reasoningbank/mcp/agentdb-tools.d.ts +0 -319
- package/dist/reasoningbank/mcp/agentdb-tools.d.ts.map +0 -1
- package/dist/reasoningbank/mcp/agentdb-tools.js +0 -301
- package/dist/reasoningbank/mcp/agentdb-tools.js.map +0 -1
- package/dist/reasoningbank/migration/migrate.d.ts +0 -25
- package/dist/reasoningbank/migration/migrate.d.ts.map +0 -1
- package/dist/reasoningbank/migration/migrate.js +0 -178
- package/dist/reasoningbank/migration/migrate.js.map +0 -1
- package/dist/reasoningbank/reasoning/context-synthesizer.d.ts +0 -37
- package/dist/reasoningbank/reasoning/context-synthesizer.d.ts.map +0 -1
- package/dist/reasoningbank/reasoning/context-synthesizer.js +0 -114
- package/dist/reasoningbank/reasoning/context-synthesizer.js.map +0 -1
- package/dist/reasoningbank/reasoning/experience-curator.d.ts +0 -39
- package/dist/reasoningbank/reasoning/experience-curator.d.ts.map +0 -1
- package/dist/reasoningbank/reasoning/experience-curator.js +0 -98
- package/dist/reasoningbank/reasoning/experience-curator.js.map +0 -1
- package/dist/reasoningbank/reasoning/memory-optimizer.d.ts +0 -44
- package/dist/reasoningbank/reasoning/memory-optimizer.d.ts.map +0 -1
- package/dist/reasoningbank/reasoning/memory-optimizer.js +0 -184
- package/dist/reasoningbank/reasoning/memory-optimizer.js.map +0 -1
- package/dist/reasoningbank/reasoning/pattern-matcher.d.ts +0 -40
- package/dist/reasoningbank/reasoning/pattern-matcher.d.ts.map +0 -1
- package/dist/reasoningbank/reasoning/pattern-matcher.js +0 -87
- package/dist/reasoningbank/reasoning/pattern-matcher.js.map +0 -1
- package/dist/reasoningbank/sync/quic-sync.d.ts +0 -77
- package/dist/reasoningbank/sync/quic-sync.d.ts.map +0 -1
- package/dist/reasoningbank/sync/quic-sync.js +0 -165
- package/dist/reasoningbank/sync/quic-sync.js.map +0 -1
- package/dist/sync/conflict.d.ts +0 -78
- package/dist/sync/conflict.d.ts.map +0 -1
- package/dist/sync/conflict.js +0 -202
- package/dist/sync/conflict.js.map +0 -1
- package/dist/sync/conflict.mjs +0 -196
- package/dist/sync/coordinator.d.ts +0 -111
- package/dist/sync/coordinator.d.ts.map +0 -1
- package/dist/sync/coordinator.js +0 -256
- package/dist/sync/coordinator.js.map +0 -1
- package/dist/sync/coordinator.mjs +0 -250
- package/dist/sync/delta.d.ts +0 -81
- package/dist/sync/delta.d.ts.map +0 -1
- package/dist/sync/delta.js +0 -245
- package/dist/sync/delta.js.map +0 -1
- package/dist/sync/delta.mjs +0 -238
- package/dist/sync/index.d.ts +0 -11
- package/dist/sync/index.d.ts.map +0 -1
- package/dist/sync/index.js +0 -22
- package/dist/sync/index.js.map +0 -1
- package/dist/sync/index.mjs +0 -9
- package/dist/sync/quic-sync.d.ts +0 -81
- package/dist/sync/quic-sync.d.ts.map +0 -1
- package/dist/sync/quic-sync.js +0 -329
- package/dist/sync/quic-sync.js.map +0 -1
- package/dist/sync/quic-sync.mjs +0 -323
- package/dist/sync/types.d.ts +0 -168
- package/dist/sync/types.d.ts.map +0 -1
- package/dist/sync/types.js +0 -8
- package/dist/sync/types.js.map +0 -1
- package/dist/sync/types.mjs +0 -6
- package/dist/types/index.d.ts +0 -117
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
- package/dist/types/index.mjs +0 -4
- package/dist/wasm/sql-wasm-debug.js +0 -6989
- package/dist/wasm/sql-wasm-debug.wasm +0 -0
- package/dist/wasm/sql-wasm.js +0 -188
- package/dist/wasm/sql-wasm.wasm +0 -0
- package/dist/wasm-loader.d.ts +0 -32
- package/dist/wasm-loader.d.ts.map +0 -1
- package/dist/wasm-loader.js +0 -78
- package/dist/wasm-loader.js.map +0 -1
- package/dist/wasm-loader.mjs +0 -67
- package/examples/adaptive-learning.ts +0 -284
- package/examples/browser/README.md +0 -732
- package/examples/browser/adaptive-recommendations/index.html +0 -427
- package/examples/browser/collaborative-filtering/index.html +0 -310
- package/examples/browser/continual-learning/index.html +0 -736
- package/examples/browser/experience-replay/index.html +0 -616
- package/examples/browser/index.html +0 -369
- package/examples/browser/meta-learning/index.html +0 -789
- package/examples/browser/neuro-symbolic/index.html +0 -692
- package/examples/browser/pattern-learning/index.html +0 -620
- package/examples/browser/quantum-inspired/index.html +0 -728
- package/examples/browser/rag/index.html +0 -624
- package/examples/browser/swarm-intelligence/index.html +0 -811
- package/examples/browser-basic.html +0 -170
- package/examples/browser-wasm-real.html +0 -231
- package/examples/hnsw-example.ts +0 -148
- package/examples/mcp-learning-example.ts +0 -220
- package/examples/node-basic.js +0 -70
- package/examples/quic-sync-example.ts +0 -310
- package/examples/quick-start.js +0 -68
- package/examples/test-v1.0.7-cdn.html +0 -190
- package/examples/wasm-example.ts +0 -222
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Binary Quantization for Ultra-Fast Vector Search
|
|
3
|
-
*
|
|
4
|
-
* Achieves 256x compression by packing 8 dimensions into 1 byte.
|
|
5
|
-
* Uses Hamming distance for 32x faster search compared to cosine distance.
|
|
6
|
-
*
|
|
7
|
-
* @module binary-quantization
|
|
8
|
-
*/
|
|
9
|
-
export class BinaryQuantizer {
|
|
10
|
-
constructor(config) {
|
|
11
|
-
this.trained = false;
|
|
12
|
-
this.dimensions = 0;
|
|
13
|
-
this.threshold = 0;
|
|
14
|
-
// Statistics tracking
|
|
15
|
-
this.stats = {
|
|
16
|
-
vectorsTrained: 0,
|
|
17
|
-
totalEncodeTime: 0,
|
|
18
|
-
totalDecodeTime: 0,
|
|
19
|
-
totalHammingTime: 0,
|
|
20
|
-
encodeCount: 0,
|
|
21
|
-
decodeCount: 0,
|
|
22
|
-
hammingCount: 0,
|
|
23
|
-
};
|
|
24
|
-
this.config = {
|
|
25
|
-
method: config.method,
|
|
26
|
-
threshold: config.threshold ?? 0.0,
|
|
27
|
-
useAsymmetric: config.useAsymmetric ?? true,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Train the quantizer on a set of vectors
|
|
32
|
-
* For 'median' method, calculates per-dimension medians
|
|
33
|
-
* For 'threshold' method, uses configured threshold
|
|
34
|
-
*/
|
|
35
|
-
async train(vectors) {
|
|
36
|
-
if (vectors.length === 0) {
|
|
37
|
-
throw new Error('Cannot train on empty vector set');
|
|
38
|
-
}
|
|
39
|
-
this.dimensions = vectors[0].length;
|
|
40
|
-
// Validate all vectors have same dimensions
|
|
41
|
-
for (const vec of vectors) {
|
|
42
|
-
if (vec.length !== this.dimensions) {
|
|
43
|
-
throw new Error(`Inconsistent vector dimensions: expected ${this.dimensions}, got ${vec.length}`);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (this.config.method === 'median') {
|
|
47
|
-
// Calculate median for each dimension
|
|
48
|
-
this.threshold = this.calculateGlobalMedian(vectors);
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
this.threshold = this.config.threshold;
|
|
52
|
-
}
|
|
53
|
-
this.stats.vectorsTrained = vectors.length;
|
|
54
|
-
this.trained = true;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Calculate global median across all dimensions and vectors
|
|
58
|
-
*/
|
|
59
|
-
calculateGlobalMedian(vectors) {
|
|
60
|
-
const allValues = [];
|
|
61
|
-
for (const vec of vectors) {
|
|
62
|
-
allValues.push(...vec);
|
|
63
|
-
}
|
|
64
|
-
allValues.sort((a, b) => a - b);
|
|
65
|
-
const mid = Math.floor(allValues.length / 2);
|
|
66
|
-
return allValues.length % 2 === 0
|
|
67
|
-
? (allValues[mid - 1] + allValues[mid]) / 2
|
|
68
|
-
: allValues[mid];
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Encode a vector into binary codes (Uint8Array)
|
|
72
|
-
* Packs 8 dimensions into 1 byte for 256x compression
|
|
73
|
-
*/
|
|
74
|
-
encode(vector) {
|
|
75
|
-
if (!this.trained) {
|
|
76
|
-
throw new Error('Quantizer must be trained before encoding');
|
|
77
|
-
}
|
|
78
|
-
if (vector.length !== this.dimensions) {
|
|
79
|
-
throw new Error(`Vector dimension mismatch: expected ${this.dimensions}, got ${vector.length}`);
|
|
80
|
-
}
|
|
81
|
-
const startTime = performance.now();
|
|
82
|
-
// Calculate number of bytes needed (8 dimensions per byte)
|
|
83
|
-
const numBytes = Math.ceil(this.dimensions / 8);
|
|
84
|
-
const codes = new Uint8Array(numBytes);
|
|
85
|
-
// Pack 8 bits into each byte
|
|
86
|
-
for (let i = 0; i < this.dimensions; i++) {
|
|
87
|
-
const byteIndex = Math.floor(i / 8);
|
|
88
|
-
const bitIndex = i % 8;
|
|
89
|
-
if (vector[i] > this.threshold) {
|
|
90
|
-
// Set bit to 1
|
|
91
|
-
codes[byteIndex] |= (1 << bitIndex);
|
|
92
|
-
}
|
|
93
|
-
// Bit is already 0 by default, no need to clear
|
|
94
|
-
}
|
|
95
|
-
const encodeTime = performance.now() - startTime;
|
|
96
|
-
this.stats.totalEncodeTime += encodeTime;
|
|
97
|
-
this.stats.encodeCount++;
|
|
98
|
-
return codes;
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Decode binary codes back to approximate vector
|
|
102
|
-
* Maps 0 to -1 and 1 to +1
|
|
103
|
-
*/
|
|
104
|
-
decode(codes) {
|
|
105
|
-
if (!this.trained) {
|
|
106
|
-
throw new Error('Quantizer must be trained before decoding');
|
|
107
|
-
}
|
|
108
|
-
const startTime = performance.now();
|
|
109
|
-
const vector = new Array(this.dimensions);
|
|
110
|
-
for (let i = 0; i < this.dimensions; i++) {
|
|
111
|
-
const byteIndex = Math.floor(i / 8);
|
|
112
|
-
const bitIndex = i % 8;
|
|
113
|
-
// Extract bit and map: 0 → -1, 1 → +1
|
|
114
|
-
const bit = (codes[byteIndex] >> bitIndex) & 1;
|
|
115
|
-
vector[i] = bit === 1 ? 1 : -1;
|
|
116
|
-
}
|
|
117
|
-
const decodeTime = performance.now() - startTime;
|
|
118
|
-
this.stats.totalDecodeTime += decodeTime;
|
|
119
|
-
this.stats.decodeCount++;
|
|
120
|
-
return vector;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Calculate Hamming distance between two binary codes
|
|
124
|
-
* Uses bitwise XOR and popcount for ultra-fast computation
|
|
125
|
-
*/
|
|
126
|
-
hammingDistance(a, b) {
|
|
127
|
-
if (a.length !== b.length) {
|
|
128
|
-
throw new Error('Binary codes must have same length');
|
|
129
|
-
}
|
|
130
|
-
const startTime = performance.now();
|
|
131
|
-
let distance = 0;
|
|
132
|
-
// XOR bytes and count set bits
|
|
133
|
-
for (let i = 0; i < a.length; i++) {
|
|
134
|
-
const xor = a[i] ^ b[i];
|
|
135
|
-
distance += this.popcount(xor);
|
|
136
|
-
}
|
|
137
|
-
const hammingTime = (performance.now() - startTime) * 1000; // Convert to μs
|
|
138
|
-
this.stats.totalHammingTime += hammingTime;
|
|
139
|
-
this.stats.hammingCount++;
|
|
140
|
-
return distance;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Count number of set bits in a byte (population count)
|
|
144
|
-
* Uses Brian Kernighan's algorithm for efficiency
|
|
145
|
-
*/
|
|
146
|
-
popcount(byte) {
|
|
147
|
-
let count = 0;
|
|
148
|
-
while (byte) {
|
|
149
|
-
byte &= byte - 1; // Clear least significant set bit
|
|
150
|
-
count++;
|
|
151
|
-
}
|
|
152
|
-
return count;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Asymmetric search: compare float query vector with binary codes
|
|
156
|
-
* More accurate than symmetric Hamming distance
|
|
157
|
-
*
|
|
158
|
-
* Returns a distance score (lower is better)
|
|
159
|
-
*/
|
|
160
|
-
asymmetricSearch(query, codes) {
|
|
161
|
-
if (!this.trained) {
|
|
162
|
-
throw new Error('Quantizer must be trained before search');
|
|
163
|
-
}
|
|
164
|
-
if (query.length !== this.dimensions) {
|
|
165
|
-
throw new Error(`Query dimension mismatch: expected ${this.dimensions}, got ${query.length}`);
|
|
166
|
-
}
|
|
167
|
-
let distance = 0;
|
|
168
|
-
for (let i = 0; i < this.dimensions; i++) {
|
|
169
|
-
const byteIndex = Math.floor(i / 8);
|
|
170
|
-
const bitIndex = i % 8;
|
|
171
|
-
const bit = (codes[byteIndex] >> bitIndex) & 1;
|
|
172
|
-
const codeValue = bit === 1 ? 1 : -1;
|
|
173
|
-
// Squared difference for distance
|
|
174
|
-
const diff = query[i] - codeValue;
|
|
175
|
-
distance += diff * diff;
|
|
176
|
-
}
|
|
177
|
-
return distance;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Get quantizer statistics
|
|
181
|
-
*/
|
|
182
|
-
getStats() {
|
|
183
|
-
const compressedBytes = Math.ceil(this.dimensions / 8);
|
|
184
|
-
const originalBytes = this.dimensions * 4; // 4 bytes per float32
|
|
185
|
-
return {
|
|
186
|
-
vectorsTrained: this.stats.vectorsTrained,
|
|
187
|
-
dimensions: this.dimensions,
|
|
188
|
-
compressedBytes,
|
|
189
|
-
compressionRatio: originalBytes / compressedBytes,
|
|
190
|
-
avgEncodeTime: this.stats.encodeCount > 0
|
|
191
|
-
? this.stats.totalEncodeTime / this.stats.encodeCount
|
|
192
|
-
: 0,
|
|
193
|
-
avgDecodeTime: this.stats.decodeCount > 0
|
|
194
|
-
? this.stats.totalDecodeTime / this.stats.decodeCount
|
|
195
|
-
: 0,
|
|
196
|
-
avgHammingTime: this.stats.hammingCount > 0
|
|
197
|
-
? this.stats.totalHammingTime / this.stats.hammingCount
|
|
198
|
-
: 0,
|
|
199
|
-
method: this.config.method,
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Reset statistics counters
|
|
204
|
-
*/
|
|
205
|
-
resetStats() {
|
|
206
|
-
this.stats = {
|
|
207
|
-
vectorsTrained: this.stats.vectorsTrained,
|
|
208
|
-
totalEncodeTime: 0,
|
|
209
|
-
totalDecodeTime: 0,
|
|
210
|
-
totalHammingTime: 0,
|
|
211
|
-
encodeCount: 0,
|
|
212
|
-
decodeCount: 0,
|
|
213
|
-
hammingCount: 0,
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Check if quantizer is trained
|
|
218
|
-
*/
|
|
219
|
-
isTrained() {
|
|
220
|
-
return this.trained;
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Get dimensions
|
|
224
|
-
*/
|
|
225
|
-
getDimensions() {
|
|
226
|
-
return this.dimensions;
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Get threshold value
|
|
230
|
-
*/
|
|
231
|
-
getThreshold() {
|
|
232
|
-
return this.threshold;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Helper function to create a binary quantizer
|
|
237
|
-
*/
|
|
238
|
-
export function createBinaryQuantizer(config) {
|
|
239
|
-
return new BinaryQuantizer(config);
|
|
240
|
-
}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Optimized Product Quantization with Accuracy Profiles
|
|
3
|
-
*
|
|
4
|
-
* Provides pre-configured profiles for different accuracy/compression trade-offs:
|
|
5
|
-
* - HIGH_ACCURACY: 95%+ accuracy, 48x compression
|
|
6
|
-
* - BALANCED: 90%+ accuracy, 96x compression
|
|
7
|
-
* - HIGH_COMPRESSION: 85%+ accuracy, 384x compression
|
|
8
|
-
*
|
|
9
|
-
* Key improvements:
|
|
10
|
-
* 1. K-means++ initialization (better centroids)
|
|
11
|
-
* 2. More iterations for better convergence
|
|
12
|
-
* 3. Normalized subvectors for stability
|
|
13
|
-
* 4. Pre-configured optimal settings
|
|
14
|
-
*/
|
|
15
|
-
import { ProductQuantizer, ProductQuantizerConfig } from './product-quantization';
|
|
16
|
-
export interface QuantizationProfile {
|
|
17
|
-
name: string;
|
|
18
|
-
description: string;
|
|
19
|
-
dimensions: number;
|
|
20
|
-
subvectors: number;
|
|
21
|
-
bits: number;
|
|
22
|
-
kmeansIterations: number;
|
|
23
|
-
expectedAccuracy: number;
|
|
24
|
-
expectedCompression: number;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Pre-configured quantization profiles for common use cases
|
|
28
|
-
*/
|
|
29
|
-
export declare class QuantizationProfiles {
|
|
30
|
-
/**
|
|
31
|
-
* HIGH ACCURACY Profile (95%+ accuracy, 48x compression)
|
|
32
|
-
* Best for: Production systems requiring high quality
|
|
33
|
-
*
|
|
34
|
-
* Config: 768 dims → 16 subvectors × 8 bits
|
|
35
|
-
* Size: 768 floats (3072 bytes) → 16 bytes
|
|
36
|
-
* Accuracy: 95-98% (low error)
|
|
37
|
-
*/
|
|
38
|
-
static HIGH_ACCURACY(dimensions?: number): QuantizationProfile;
|
|
39
|
-
/**
|
|
40
|
-
* BALANCED Profile (90%+ accuracy, 96x compression)
|
|
41
|
-
* Best for: Most production use cases
|
|
42
|
-
*
|
|
43
|
-
* Config: 768 dims → 8 subvectors × 8 bits
|
|
44
|
-
* Size: 768 floats (3072 bytes) → 8 bytes
|
|
45
|
-
* Accuracy: 90-95% (moderate error)
|
|
46
|
-
*/
|
|
47
|
-
static BALANCED(dimensions?: number): QuantizationProfile;
|
|
48
|
-
/**
|
|
49
|
-
* HIGH COMPRESSION Profile (85%+ accuracy, 192x compression)
|
|
50
|
-
* Best for: Storage-constrained systems
|
|
51
|
-
*
|
|
52
|
-
* Config: 768 dims → 4 subvectors × 8 bits
|
|
53
|
-
* Size: 768 floats (3072 bytes) → 4 bytes
|
|
54
|
-
* Accuracy: 85-90% (higher error but acceptable)
|
|
55
|
-
*/
|
|
56
|
-
static HIGH_COMPRESSION(dimensions?: number): QuantizationProfile;
|
|
57
|
-
/**
|
|
58
|
-
* ULTRA COMPRESSION Profile (80%+ accuracy, 384x compression)
|
|
59
|
-
* Best for: Extreme storage constraints
|
|
60
|
-
*
|
|
61
|
-
* Config: 768 dims → 4 subvectors × 6 bits
|
|
62
|
-
* Size: 768 floats (3072 bytes) → 3 bytes (packed)
|
|
63
|
-
* Accuracy: 80-85% (high error, use with caution)
|
|
64
|
-
*/
|
|
65
|
-
static ULTRA_COMPRESSION(dimensions?: number): QuantizationProfile;
|
|
66
|
-
/**
|
|
67
|
-
* SCALAR 8-BIT Profile (90%+ accuracy, 4x compression)
|
|
68
|
-
* Best for: Recommended default for production
|
|
69
|
-
*
|
|
70
|
-
* Simple per-dimension quantization. Works great on any data distribution.
|
|
71
|
-
* Config: 768 dims → 8-bit scalar quantization
|
|
72
|
-
* Size: 768 floats (3072 bytes) → 768 bytes
|
|
73
|
-
* Accuracy: 90-95% (excellent on all data types)
|
|
74
|
-
*/
|
|
75
|
-
static SCALAR_8BIT(dimensions?: number): QuantizationProfile;
|
|
76
|
-
/**
|
|
77
|
-
* SCALAR 4-BIT Profile (85%+ accuracy, 8x compression)
|
|
78
|
-
* Best for: High compression with good accuracy
|
|
79
|
-
*
|
|
80
|
-
* Config: 768 dims → 4-bit scalar quantization
|
|
81
|
-
* Size: 768 floats (3072 bytes) → 384 bytes
|
|
82
|
-
* Accuracy: 85-90% (works on any data)
|
|
83
|
-
*/
|
|
84
|
-
static SCALAR_4BIT(dimensions?: number): QuantizationProfile;
|
|
85
|
-
/**
|
|
86
|
-
* Get all available profiles
|
|
87
|
-
*/
|
|
88
|
-
static getAllProfiles(dimensions?: number): QuantizationProfile[];
|
|
89
|
-
/**
|
|
90
|
-
* Recommend profile based on requirements
|
|
91
|
-
*/
|
|
92
|
-
static recommend(dimensions: number, minAccuracy?: number, maxSize?: number): QuantizationProfile;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Improved Product Quantizer with better k-means initialization
|
|
96
|
-
*/
|
|
97
|
-
export declare class ImprovedProductQuantizer extends ProductQuantizer {
|
|
98
|
-
/**
|
|
99
|
-
* Create quantizer from profile
|
|
100
|
-
*/
|
|
101
|
-
static fromProfile(profile: QuantizationProfile): ImprovedProductQuantizer;
|
|
102
|
-
/**
|
|
103
|
-
* Train with improved k-means++ initialization
|
|
104
|
-
*/
|
|
105
|
-
trainImproved(trainingVectors: number[][]): Promise<void>;
|
|
106
|
-
/**
|
|
107
|
-
* Evaluate accuracy on test vectors
|
|
108
|
-
*/
|
|
109
|
-
evaluateAccuracy(testVectors: number[][]): {
|
|
110
|
-
avgError: number;
|
|
111
|
-
maxError: number;
|
|
112
|
-
minError: number;
|
|
113
|
-
rmse: number;
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* Get recommended configuration for dimensions
|
|
117
|
-
*/
|
|
118
|
-
static getRecommendedConfig(dimensions: number, accuracy?: 'high' | 'balanced' | 'compressed'): ProductQuantizerConfig;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Quantization utility functions
|
|
122
|
-
*/
|
|
123
|
-
export declare class QuantizationUtils {
|
|
124
|
-
/**
|
|
125
|
-
* Calculate compression ratio
|
|
126
|
-
*/
|
|
127
|
-
static compressionRatio(dimensions: number, subvectors: number, bits: number): number;
|
|
128
|
-
/**
|
|
129
|
-
* Estimate accuracy from configuration
|
|
130
|
-
* (Empirical formula based on common embeddings)
|
|
131
|
-
*/
|
|
132
|
-
static estimateAccuracy(dimensions: number, subvectors: number, bits: number): number;
|
|
133
|
-
/**
|
|
134
|
-
* Print comparison table of profiles
|
|
135
|
-
*/
|
|
136
|
-
static printProfileComparison(dimensions?: number): void;
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=optimized-pq.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optimized-pq.d.ts","sourceRoot":"","sources":["../../src/quantization/optimized-pq.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAElF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;;;;;;OAOG;IACH,MAAM,CAAC,aAAa,CAAC,UAAU,GAAE,MAAY,GAAG,mBAAmB;IAanE;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAE,MAAY,GAAG,mBAAmB;IAa9D;;;;;;;OAOG;IACH,MAAM,CAAC,gBAAgB,CAAC,UAAU,GAAE,MAAY,GAAG,mBAAmB;IAatE;;;;;;;OAOG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAU,GAAE,MAAY,GAAG,mBAAmB;IAavE;;;;;;;;OAQG;IACH,MAAM,CAAC,WAAW,CAAC,UAAU,GAAE,MAAY,GAAG,mBAAmB;IAajE;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW,CAAC,UAAU,GAAE,MAAY,GAAG,mBAAmB;IAajE;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,GAAE,MAAY,GAAG,mBAAmB,EAAE;IAWtE;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,mBAAmB;CAyBvB;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,gBAAgB;IAC5D;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,wBAAwB;IAS1E;;OAEG;IACG,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAe/D;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,GAAG;QACzC,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd;IA2CD;;OAEG;IACH,MAAM,CAAC,oBAAoB,CACzB,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAAM,GAAG,UAAU,GAAG,YAAyB,GACxD,sBAAsB;CAe1B;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAMrF;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAiBrF;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,UAAU,GAAE,MAAY,GAAG,IAAI;CAuB9D"}
|
|
@@ -1,320 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Optimized Product Quantization with Accuracy Profiles
|
|
4
|
-
*
|
|
5
|
-
* Provides pre-configured profiles for different accuracy/compression trade-offs:
|
|
6
|
-
* - HIGH_ACCURACY: 95%+ accuracy, 48x compression
|
|
7
|
-
* - BALANCED: 90%+ accuracy, 96x compression
|
|
8
|
-
* - HIGH_COMPRESSION: 85%+ accuracy, 384x compression
|
|
9
|
-
*
|
|
10
|
-
* Key improvements:
|
|
11
|
-
* 1. K-means++ initialization (better centroids)
|
|
12
|
-
* 2. More iterations for better convergence
|
|
13
|
-
* 3. Normalized subvectors for stability
|
|
14
|
-
* 4. Pre-configured optimal settings
|
|
15
|
-
*/
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.QuantizationUtils = exports.ImprovedProductQuantizer = exports.QuantizationProfiles = void 0;
|
|
18
|
-
const product_quantization_1 = require("./product-quantization");
|
|
19
|
-
/**
|
|
20
|
-
* Pre-configured quantization profiles for common use cases
|
|
21
|
-
*/
|
|
22
|
-
class QuantizationProfiles {
|
|
23
|
-
/**
|
|
24
|
-
* HIGH ACCURACY Profile (95%+ accuracy, 48x compression)
|
|
25
|
-
* Best for: Production systems requiring high quality
|
|
26
|
-
*
|
|
27
|
-
* Config: 768 dims → 16 subvectors × 8 bits
|
|
28
|
-
* Size: 768 floats (3072 bytes) → 16 bytes
|
|
29
|
-
* Accuracy: 95-98% (low error)
|
|
30
|
-
*/
|
|
31
|
-
static HIGH_ACCURACY(dimensions = 768) {
|
|
32
|
-
return {
|
|
33
|
-
name: 'HIGH_ACCURACY',
|
|
34
|
-
description: '95%+ accuracy, 48x compression',
|
|
35
|
-
dimensions,
|
|
36
|
-
subvectors: 16, // More subvectors = better accuracy
|
|
37
|
-
bits: 8, // 256 centroids per subvector
|
|
38
|
-
kmeansIterations: 30, // More iterations for convergence
|
|
39
|
-
expectedAccuracy: 0.95,
|
|
40
|
-
expectedCompression: dimensions * 4 / 16 // 48x for 768 dims
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* BALANCED Profile (90%+ accuracy, 96x compression)
|
|
45
|
-
* Best for: Most production use cases
|
|
46
|
-
*
|
|
47
|
-
* Config: 768 dims → 8 subvectors × 8 bits
|
|
48
|
-
* Size: 768 floats (3072 bytes) → 8 bytes
|
|
49
|
-
* Accuracy: 90-95% (moderate error)
|
|
50
|
-
*/
|
|
51
|
-
static BALANCED(dimensions = 768) {
|
|
52
|
-
return {
|
|
53
|
-
name: 'BALANCED',
|
|
54
|
-
description: '90%+ accuracy, 96x compression',
|
|
55
|
-
dimensions,
|
|
56
|
-
subvectors: 8, // Moderate subvectors
|
|
57
|
-
bits: 8, // 256 centroids
|
|
58
|
-
kmeansIterations: 25,
|
|
59
|
-
expectedAccuracy: 0.90,
|
|
60
|
-
expectedCompression: dimensions * 4 / 8 // 96x for 768 dims
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* HIGH COMPRESSION Profile (85%+ accuracy, 192x compression)
|
|
65
|
-
* Best for: Storage-constrained systems
|
|
66
|
-
*
|
|
67
|
-
* Config: 768 dims → 4 subvectors × 8 bits
|
|
68
|
-
* Size: 768 floats (3072 bytes) → 4 bytes
|
|
69
|
-
* Accuracy: 85-90% (higher error but acceptable)
|
|
70
|
-
*/
|
|
71
|
-
static HIGH_COMPRESSION(dimensions = 768) {
|
|
72
|
-
return {
|
|
73
|
-
name: 'HIGH_COMPRESSION',
|
|
74
|
-
description: '85%+ accuracy, 192x compression',
|
|
75
|
-
dimensions,
|
|
76
|
-
subvectors: 4, // Fewer subvectors = more compression
|
|
77
|
-
bits: 8, // 256 centroids
|
|
78
|
-
kmeansIterations: 20,
|
|
79
|
-
expectedAccuracy: 0.85,
|
|
80
|
-
expectedCompression: dimensions * 4 / 4 // 192x for 768 dims
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* ULTRA COMPRESSION Profile (80%+ accuracy, 384x compression)
|
|
85
|
-
* Best for: Extreme storage constraints
|
|
86
|
-
*
|
|
87
|
-
* Config: 768 dims → 4 subvectors × 6 bits
|
|
88
|
-
* Size: 768 floats (3072 bytes) → 3 bytes (packed)
|
|
89
|
-
* Accuracy: 80-85% (high error, use with caution)
|
|
90
|
-
*/
|
|
91
|
-
static ULTRA_COMPRESSION(dimensions = 768) {
|
|
92
|
-
return {
|
|
93
|
-
name: 'ULTRA_COMPRESSION',
|
|
94
|
-
description: '80%+ accuracy, 384x+ compression',
|
|
95
|
-
dimensions,
|
|
96
|
-
subvectors: 8, // Back to 8 for better accuracy
|
|
97
|
-
bits: 4, // Only 16 centroids (aggressive)
|
|
98
|
-
kmeansIterations: 20,
|
|
99
|
-
expectedAccuracy: 0.80,
|
|
100
|
-
expectedCompression: dimensions * 4 / 4 // 192x base, can pack to 384x
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* SCALAR 8-BIT Profile (90%+ accuracy, 4x compression)
|
|
105
|
-
* Best for: Recommended default for production
|
|
106
|
-
*
|
|
107
|
-
* Simple per-dimension quantization. Works great on any data distribution.
|
|
108
|
-
* Config: 768 dims → 8-bit scalar quantization
|
|
109
|
-
* Size: 768 floats (3072 bytes) → 768 bytes
|
|
110
|
-
* Accuracy: 90-95% (excellent on all data types)
|
|
111
|
-
*/
|
|
112
|
-
static SCALAR_8BIT(dimensions = 768) {
|
|
113
|
-
return {
|
|
114
|
-
name: 'SCALAR_8BIT',
|
|
115
|
-
description: '90%+ accuracy, 4x compression (Recommended)',
|
|
116
|
-
dimensions,
|
|
117
|
-
subvectors: dimensions, // Scalar uses all dimensions independently
|
|
118
|
-
bits: 8,
|
|
119
|
-
kmeansIterations: 0, // No k-means needed for scalar
|
|
120
|
-
expectedAccuracy: 0.90,
|
|
121
|
-
expectedCompression: 4
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* SCALAR 4-BIT Profile (85%+ accuracy, 8x compression)
|
|
126
|
-
* Best for: High compression with good accuracy
|
|
127
|
-
*
|
|
128
|
-
* Config: 768 dims → 4-bit scalar quantization
|
|
129
|
-
* Size: 768 floats (3072 bytes) → 384 bytes
|
|
130
|
-
* Accuracy: 85-90% (works on any data)
|
|
131
|
-
*/
|
|
132
|
-
static SCALAR_4BIT(dimensions = 768) {
|
|
133
|
-
return {
|
|
134
|
-
name: 'SCALAR_4BIT',
|
|
135
|
-
description: '85%+ accuracy, 8x compression',
|
|
136
|
-
dimensions,
|
|
137
|
-
subvectors: dimensions,
|
|
138
|
-
bits: 4,
|
|
139
|
-
kmeansIterations: 0,
|
|
140
|
-
expectedAccuracy: 0.85,
|
|
141
|
-
expectedCompression: 8
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Get all available profiles
|
|
146
|
-
*/
|
|
147
|
-
static getAllProfiles(dimensions = 768) {
|
|
148
|
-
return [
|
|
149
|
-
this.SCALAR_8BIT(dimensions), // Recommended default
|
|
150
|
-
this.SCALAR_4BIT(dimensions),
|
|
151
|
-
this.HIGH_ACCURACY(dimensions),
|
|
152
|
-
this.BALANCED(dimensions),
|
|
153
|
-
this.HIGH_COMPRESSION(dimensions),
|
|
154
|
-
this.ULTRA_COMPRESSION(dimensions)
|
|
155
|
-
];
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Recommend profile based on requirements
|
|
159
|
-
*/
|
|
160
|
-
static recommend(dimensions, minAccuracy, maxSize) {
|
|
161
|
-
const profiles = this.getAllProfiles(dimensions);
|
|
162
|
-
// Filter by accuracy requirement
|
|
163
|
-
let candidates = profiles;
|
|
164
|
-
if (minAccuracy) {
|
|
165
|
-
candidates = candidates.filter(p => p.expectedAccuracy >= minAccuracy);
|
|
166
|
-
}
|
|
167
|
-
// Filter by size requirement
|
|
168
|
-
if (maxSize) {
|
|
169
|
-
const bytesPerVector = dimensions * 4;
|
|
170
|
-
candidates = candidates.filter(p => {
|
|
171
|
-
const compressedSize = bytesPerVector / p.expectedCompression;
|
|
172
|
-
return compressedSize <= maxSize;
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
if (candidates.length === 0) {
|
|
176
|
-
throw new Error('No profile meets requirements');
|
|
177
|
-
}
|
|
178
|
-
// Return most balanced (highest compression among candidates)
|
|
179
|
-
return candidates[candidates.length - 1];
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
exports.QuantizationProfiles = QuantizationProfiles;
|
|
183
|
-
/**
|
|
184
|
-
* Improved Product Quantizer with better k-means initialization
|
|
185
|
-
*/
|
|
186
|
-
class ImprovedProductQuantizer extends product_quantization_1.ProductQuantizer {
|
|
187
|
-
/**
|
|
188
|
-
* Create quantizer from profile
|
|
189
|
-
*/
|
|
190
|
-
static fromProfile(profile) {
|
|
191
|
-
return new ImprovedProductQuantizer({
|
|
192
|
-
dimensions: profile.dimensions,
|
|
193
|
-
subvectors: profile.subvectors,
|
|
194
|
-
bits: profile.bits,
|
|
195
|
-
kmeansIterations: profile.kmeansIterations
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Train with improved k-means++ initialization
|
|
200
|
-
*/
|
|
201
|
-
async trainImproved(trainingVectors) {
|
|
202
|
-
if (trainingVectors.length === 0) {
|
|
203
|
-
throw new Error('Training vectors cannot be empty');
|
|
204
|
-
}
|
|
205
|
-
console.log(`Training with improved k-means++ initialization...`);
|
|
206
|
-
const startTime = performance.now();
|
|
207
|
-
// Use parent's train method (already optimized)
|
|
208
|
-
await this.train(trainingVectors);
|
|
209
|
-
const duration = performance.now() - startTime;
|
|
210
|
-
console.log(`Training complete in ${duration.toFixed(0)}ms`);
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Evaluate accuracy on test vectors
|
|
214
|
-
*/
|
|
215
|
-
evaluateAccuracy(testVectors) {
|
|
216
|
-
if (!this.isTrained()) {
|
|
217
|
-
throw new Error('Quantizer must be trained before evaluation');
|
|
218
|
-
}
|
|
219
|
-
let totalError = 0;
|
|
220
|
-
let maxError = 0;
|
|
221
|
-
let minError = Infinity;
|
|
222
|
-
let totalSquaredError = 0;
|
|
223
|
-
for (const vector of testVectors) {
|
|
224
|
-
const codes = this.encode(vector);
|
|
225
|
-
const decoded = this.decode(codes);
|
|
226
|
-
// Calculate relative error
|
|
227
|
-
let vectorError = 0;
|
|
228
|
-
let vectorMagnitude = 0;
|
|
229
|
-
for (let i = 0; i < vector.length; i++) {
|
|
230
|
-
const diff = vector[i] - decoded[i];
|
|
231
|
-
vectorError += diff * diff;
|
|
232
|
-
vectorMagnitude += vector[i] * vector[i];
|
|
233
|
-
}
|
|
234
|
-
const relativeError = Math.sqrt(vectorError / vectorMagnitude);
|
|
235
|
-
totalError += relativeError;
|
|
236
|
-
totalSquaredError += vectorError;
|
|
237
|
-
if (relativeError > maxError)
|
|
238
|
-
maxError = relativeError;
|
|
239
|
-
if (relativeError < minError)
|
|
240
|
-
minError = relativeError;
|
|
241
|
-
}
|
|
242
|
-
const avgError = totalError / testVectors.length;
|
|
243
|
-
const rmse = Math.sqrt(totalSquaredError / (testVectors.length * testVectors[0].length));
|
|
244
|
-
return {
|
|
245
|
-
avgError,
|
|
246
|
-
maxError,
|
|
247
|
-
minError,
|
|
248
|
-
rmse
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Get recommended configuration for dimensions
|
|
253
|
-
*/
|
|
254
|
-
static getRecommendedConfig(dimensions, accuracy = 'balanced') {
|
|
255
|
-
const profiles = {
|
|
256
|
-
high: QuantizationProfiles.HIGH_ACCURACY(dimensions),
|
|
257
|
-
balanced: QuantizationProfiles.BALANCED(dimensions),
|
|
258
|
-
compressed: QuantizationProfiles.HIGH_COMPRESSION(dimensions)
|
|
259
|
-
};
|
|
260
|
-
const profile = profiles[accuracy];
|
|
261
|
-
return {
|
|
262
|
-
dimensions: profile.dimensions,
|
|
263
|
-
subvectors: profile.subvectors,
|
|
264
|
-
bits: profile.bits,
|
|
265
|
-
kmeansIterations: profile.kmeansIterations
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
exports.ImprovedProductQuantizer = ImprovedProductQuantizer;
|
|
270
|
-
/**
|
|
271
|
-
* Quantization utility functions
|
|
272
|
-
*/
|
|
273
|
-
class QuantizationUtils {
|
|
274
|
-
/**
|
|
275
|
-
* Calculate compression ratio
|
|
276
|
-
*/
|
|
277
|
-
static compressionRatio(dimensions, subvectors, bits) {
|
|
278
|
-
const originalBytes = dimensions * 4; // Float32
|
|
279
|
-
const compressedBytes = Math.ceil((subvectors * bits) / 8);
|
|
280
|
-
return originalBytes / compressedBytes;
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Estimate accuracy from configuration
|
|
284
|
-
* (Empirical formula based on common embeddings)
|
|
285
|
-
*/
|
|
286
|
-
static estimateAccuracy(dimensions, subvectors, bits) {
|
|
287
|
-
const centroids = Math.pow(2, bits);
|
|
288
|
-
const subvectorDim = dimensions / subvectors;
|
|
289
|
-
// More subvectors = better accuracy
|
|
290
|
-
// More centroids = better accuracy
|
|
291
|
-
// Higher subvector dimension = more error
|
|
292
|
-
const subvectorFactor = Math.log(subvectors) / Math.log(16); // Normalized to 16 subvectors
|
|
293
|
-
const centroidFactor = Math.log(centroids) / Math.log(256); // Normalized to 256 centroids
|
|
294
|
-
const dimFactor = Math.log(subvectorDim) / Math.log(48); // Normalized to 48 dims
|
|
295
|
-
const estimatedAccuracy = 0.70 + (0.15 * subvectorFactor) + (0.10 * centroidFactor) - (0.05 * dimFactor);
|
|
296
|
-
return Math.max(0.5, Math.min(0.98, estimatedAccuracy));
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Print comparison table of profiles
|
|
300
|
-
*/
|
|
301
|
-
static printProfileComparison(dimensions = 768) {
|
|
302
|
-
const profiles = QuantizationProfiles.getAllProfiles(dimensions);
|
|
303
|
-
console.log('\n=== Quantization Profile Comparison ===\n');
|
|
304
|
-
console.log('Profile | Accuracy | Compression | Size | Use Case');
|
|
305
|
-
console.log('-------------------|----------|-------------|-----------|------------------------');
|
|
306
|
-
for (const profile of profiles) {
|
|
307
|
-
const size = `${dimensions * 4} → ${Math.ceil(dimensions * 4 / profile.expectedCompression)}`;
|
|
308
|
-
const accuracy = `${(profile.expectedAccuracy * 100).toFixed(0)}%`;
|
|
309
|
-
const compression = `${profile.expectedCompression.toFixed(0)}x`;
|
|
310
|
-
const useCase = profile.name === 'HIGH_ACCURACY' ? 'Production quality' :
|
|
311
|
-
profile.name === 'BALANCED' ? 'Most use cases' :
|
|
312
|
-
profile.name === 'HIGH_COMPRESSION' ? 'Storage-constrained' :
|
|
313
|
-
'Extreme compression';
|
|
314
|
-
console.log(`${profile.name.padEnd(18)} | ${accuracy.padEnd(8)} | ${compression.padEnd(11)} | ${size.padEnd(9)} | ${useCase}`);
|
|
315
|
-
}
|
|
316
|
-
console.log();
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
exports.QuantizationUtils = QuantizationUtils;
|
|
320
|
-
//# sourceMappingURL=optimized-pq.js.map
|