agentdb 2.0.0-alpha.2 → 2.0.0-alpha.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agentdb.min.js +4 -4
- package/dist/simulation/cli.js +0 -0
- package/dist/src/cli/agentdb-cli.d.ts.map +1 -1
- package/dist/src/cli/agentdb-cli.js +78 -0
- package/dist/src/cli/agentdb-cli.js.map +1 -1
- package/package.json +3 -3
- package/src/cli/agentdb-cli.ts +78 -0
- package/dist/agentdb-advanced.js +0 -2110
- package/dist/agentdb-advanced.min.js +0 -1
- package/dist/backends/GraphBackend.d.ts +0 -196
- package/dist/backends/GraphBackend.d.ts.map +0 -1
- package/dist/backends/GraphBackend.js +0 -33
- package/dist/backends/GraphBackend.js.map +0 -1
- package/dist/backends/LearningBackend.d.ts +0 -148
- package/dist/backends/LearningBackend.d.ts.map +0 -1
- package/dist/backends/LearningBackend.js +0 -27
- package/dist/backends/LearningBackend.js.map +0 -1
- package/dist/backends/VectorBackend.d.ts +0 -119
- package/dist/backends/VectorBackend.d.ts.map +0 -1
- package/dist/backends/VectorBackend.js +0 -14
- package/dist/backends/VectorBackend.js.map +0 -1
- package/dist/backends/detector.d.ts +0 -81
- package/dist/backends/detector.d.ts.map +0 -1
- package/dist/backends/detector.js +0 -192
- package/dist/backends/detector.js.map +0 -1
- package/dist/backends/factory.d.ts +0 -50
- package/dist/backends/factory.d.ts.map +0 -1
- package/dist/backends/factory.js +0 -161
- package/dist/backends/factory.js.map +0 -1
- package/dist/backends/graph/GraphDatabaseAdapter.d.ts +0 -139
- package/dist/backends/graph/GraphDatabaseAdapter.d.ts.map +0 -1
- package/dist/backends/graph/GraphDatabaseAdapter.js +0 -194
- package/dist/backends/graph/GraphDatabaseAdapter.js.map +0 -1
- package/dist/backends/hnswlib/HNSWLibBackend.d.ts +0 -92
- package/dist/backends/hnswlib/HNSWLibBackend.d.ts.map +0 -1
- package/dist/backends/hnswlib/HNSWLibBackend.js +0 -316
- package/dist/backends/hnswlib/HNSWLibBackend.js.map +0 -1
- package/dist/backends/hnswlib/index.d.ts +0 -7
- package/dist/backends/hnswlib/index.d.ts.map +0 -1
- package/dist/backends/hnswlib/index.js +0 -7
- package/dist/backends/hnswlib/index.js.map +0 -1
- package/dist/backends/index.d.ts +0 -14
- package/dist/backends/index.d.ts.map +0 -1
- package/dist/backends/index.js +0 -13
- package/dist/backends/index.js.map +0 -1
- package/dist/backends/ruvector/RuVectorBackend.d.ts +0 -75
- package/dist/backends/ruvector/RuVectorBackend.d.ts.map +0 -1
- package/dist/backends/ruvector/RuVectorBackend.js +0 -198
- package/dist/backends/ruvector/RuVectorBackend.js.map +0 -1
- package/dist/backends/ruvector/RuVectorLearning.d.ts +0 -104
- package/dist/backends/ruvector/RuVectorLearning.d.ts.map +0 -1
- package/dist/backends/ruvector/RuVectorLearning.js +0 -177
- package/dist/backends/ruvector/RuVectorLearning.js.map +0 -1
- package/dist/backends/ruvector/index.d.ts +0 -9
- package/dist/backends/ruvector/index.d.ts.map +0 -1
- package/dist/backends/ruvector/index.js +0 -8
- package/dist/backends/ruvector/index.js.map +0 -1
- package/dist/benchmarks/wasm-vector-benchmark.d.ts +0 -10
- package/dist/benchmarks/wasm-vector-benchmark.d.ts.map +0 -1
- package/dist/benchmarks/wasm-vector-benchmark.js +0 -196
- package/dist/benchmarks/wasm-vector-benchmark.js.map +0 -1
- package/dist/browser/AdvancedFeatures.d.ts +0 -144
- package/dist/browser/AdvancedFeatures.d.ts.map +0 -1
- package/dist/browser/AdvancedFeatures.js +0 -430
- package/dist/browser/AdvancedFeatures.js.map +0 -1
- package/dist/browser/HNSWIndex.d.ts +0 -117
- package/dist/browser/HNSWIndex.d.ts.map +0 -1
- package/dist/browser/HNSWIndex.js +0 -402
- package/dist/browser/HNSWIndex.js.map +0 -1
- package/dist/browser/ProductQuantization.d.ts +0 -107
- package/dist/browser/ProductQuantization.d.ts.map +0 -1
- package/dist/browser/ProductQuantization.js +0 -337
- package/dist/browser/ProductQuantization.js.map +0 -1
- package/dist/browser/browser/AdvancedFeatures.d.ts +0 -144
- package/dist/browser/browser/AdvancedFeatures.d.ts.map +0 -1
- package/dist/browser/browser/AdvancedFeatures.js +0 -427
- package/dist/browser/browser/HNSWIndex.d.ts +0 -117
- package/dist/browser/browser/HNSWIndex.d.ts.map +0 -1
- package/dist/browser/browser/HNSWIndex.js +0 -402
- package/dist/browser/browser/ProductQuantization.d.ts +0 -107
- package/dist/browser/browser/ProductQuantization.d.ts.map +0 -1
- package/dist/browser/browser/ProductQuantization.js +0 -348
- package/dist/browser/browser/index.d.ts +0 -223
- package/dist/browser/browser/index.d.ts.map +0 -1
- package/dist/browser/browser/index.js +0 -233
- package/dist/browser/index.d.ts +0 -223
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -225
- package/dist/browser/index.js.map +0 -1
- package/dist/cli/agentdb-cli.d.ts +0 -154
- package/dist/cli/agentdb-cli.d.ts.map +0 -1
- package/dist/cli/agentdb-cli.js +0 -2273
- package/dist/cli/agentdb-cli.js.map +0 -1
- package/dist/cli/agentdb.db +0 -0
- package/dist/cli/commands/init.d.ts +0 -12
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -115
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/install-embeddings.d.ts +0 -10
- package/dist/cli/commands/install-embeddings.d.ts.map +0 -1
- package/dist/cli/commands/install-embeddings.js +0 -68
- package/dist/cli/commands/install-embeddings.js.map +0 -1
- package/dist/cli/commands/migrate.d.ts +0 -15
- package/dist/cli/commands/migrate.d.ts.map +0 -1
- package/dist/cli/commands/migrate.js +0 -425
- package/dist/cli/commands/migrate.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -10
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -129
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/controllers/CausalMemoryGraph.d.ts +0 -126
- package/dist/controllers/CausalMemoryGraph.d.ts.map +0 -1
- package/dist/controllers/CausalMemoryGraph.js +0 -323
- package/dist/controllers/CausalMemoryGraph.js.map +0 -1
- package/dist/controllers/CausalRecall.d.ts +0 -139
- package/dist/controllers/CausalRecall.d.ts.map +0 -1
- package/dist/controllers/CausalRecall.js +0 -356
- package/dist/controllers/CausalRecall.js.map +0 -1
- package/dist/controllers/ContextSynthesizer.d.ts +0 -65
- package/dist/controllers/ContextSynthesizer.d.ts.map +0 -1
- package/dist/controllers/ContextSynthesizer.js +0 -208
- package/dist/controllers/ContextSynthesizer.js.map +0 -1
- package/dist/controllers/EmbeddingService.d.ts +0 -37
- package/dist/controllers/EmbeddingService.d.ts.map +0 -1
- package/dist/controllers/EmbeddingService.js +0 -136
- package/dist/controllers/EmbeddingService.js.map +0 -1
- package/dist/controllers/EnhancedEmbeddingService.d.ts +0 -50
- package/dist/controllers/EnhancedEmbeddingService.d.ts.map +0 -1
- package/dist/controllers/EnhancedEmbeddingService.js +0 -119
- package/dist/controllers/EnhancedEmbeddingService.js.map +0 -1
- package/dist/controllers/ExplainableRecall.d.ts +0 -163
- package/dist/controllers/ExplainableRecall.d.ts.map +0 -1
- package/dist/controllers/ExplainableRecall.js +0 -485
- package/dist/controllers/ExplainableRecall.js.map +0 -1
- package/dist/controllers/HNSWIndex.d.ts +0 -128
- package/dist/controllers/HNSWIndex.d.ts.map +0 -1
- package/dist/controllers/HNSWIndex.js +0 -361
- package/dist/controllers/HNSWIndex.js.map +0 -1
- package/dist/controllers/LearningSystem.d.ts +0 -195
- package/dist/controllers/LearningSystem.d.ts.map +0 -1
- package/dist/controllers/LearningSystem.js +0 -929
- package/dist/controllers/LearningSystem.js.map +0 -1
- package/dist/controllers/MMRDiversityRanker.d.ts +0 -50
- package/dist/controllers/MMRDiversityRanker.d.ts.map +0 -1
- package/dist/controllers/MMRDiversityRanker.js +0 -130
- package/dist/controllers/MMRDiversityRanker.js.map +0 -1
- package/dist/controllers/MetadataFilter.d.ts +0 -70
- package/dist/controllers/MetadataFilter.d.ts.map +0 -1
- package/dist/controllers/MetadataFilter.js +0 -243
- package/dist/controllers/MetadataFilter.js.map +0 -1
- package/dist/controllers/NightlyLearner.d.ts +0 -114
- package/dist/controllers/NightlyLearner.d.ts.map +0 -1
- package/dist/controllers/NightlyLearner.js +0 -394
- package/dist/controllers/NightlyLearner.js.map +0 -1
- package/dist/controllers/QUICClient.d.ts +0 -109
- package/dist/controllers/QUICClient.d.ts.map +0 -1
- package/dist/controllers/QUICClient.js +0 -299
- package/dist/controllers/QUICClient.js.map +0 -1
- package/dist/controllers/QUICServer.d.ts +0 -121
- package/dist/controllers/QUICServer.d.ts.map +0 -1
- package/dist/controllers/QUICServer.js +0 -383
- package/dist/controllers/QUICServer.js.map +0 -1
- package/dist/controllers/ReasoningBank.d.ts +0 -196
- package/dist/controllers/ReasoningBank.d.ts.map +0 -1
- package/dist/controllers/ReasoningBank.js +0 -494
- package/dist/controllers/ReasoningBank.js.map +0 -1
- package/dist/controllers/ReflexionMemory.d.ts +0 -125
- package/dist/controllers/ReflexionMemory.d.ts.map +0 -1
- package/dist/controllers/ReflexionMemory.js +0 -521
- package/dist/controllers/ReflexionMemory.js.map +0 -1
- package/dist/controllers/SkillLibrary.d.ts +0 -149
- package/dist/controllers/SkillLibrary.d.ts.map +0 -1
- package/dist/controllers/SkillLibrary.js +0 -547
- package/dist/controllers/SkillLibrary.js.map +0 -1
- package/dist/controllers/SyncCoordinator.d.ts +0 -120
- package/dist/controllers/SyncCoordinator.d.ts.map +0 -1
- package/dist/controllers/SyncCoordinator.js +0 -441
- package/dist/controllers/SyncCoordinator.js.map +0 -1
- package/dist/controllers/WASMVectorSearch.d.ts +0 -89
- package/dist/controllers/WASMVectorSearch.d.ts.map +0 -1
- package/dist/controllers/WASMVectorSearch.js +0 -234
- package/dist/controllers/WASMVectorSearch.js.map +0 -1
- package/dist/controllers/frontier-index.d.ts +0 -14
- package/dist/controllers/frontier-index.d.ts.map +0 -1
- package/dist/controllers/frontier-index.js +0 -10
- package/dist/controllers/frontier-index.js.map +0 -1
- package/dist/controllers/index.d.ts +0 -30
- package/dist/controllers/index.d.ts.map +0 -1
- package/dist/controllers/index.js +0 -18
- package/dist/controllers/index.js.map +0 -1
- package/dist/db-fallback.d.ts +0 -26
- package/dist/db-fallback.d.ts.map +0 -1
- package/dist/db-fallback.js +0 -264
- package/dist/db-fallback.js.map +0 -1
- package/dist/db-test.d.ts +0 -13
- package/dist/db-test.d.ts.map +0 -1
- package/dist/db-test.js +0 -55
- package/dist/db-test.js.map +0 -1
- package/dist/db-unified.d.ts +0 -76
- package/dist/db-unified.d.ts.map +0 -1
- package/dist/db-unified.js +0 -278
- package/dist/db-unified.js.map +0 -1
- package/dist/examples/quic-sync-example.d.ts +0 -9
- package/dist/examples/quic-sync-example.d.ts.map +0 -1
- package/dist/examples/quic-sync-example.js +0 -169
- package/dist/examples/quic-sync-example.js.map +0 -1
- package/dist/examples/wasm-vector-usage.d.ts +0 -12
- package/dist/examples/wasm-vector-usage.d.ts.map +0 -1
- package/dist/examples/wasm-vector-usage.js +0 -190
- package/dist/examples/wasm-vector-usage.js.map +0 -1
- package/dist/index.d.ts +0 -28
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -35
- package/dist/index.js.map +0 -1
- package/dist/malp/core/ccc.d.ts +0 -99
- package/dist/malp/core/ccc.d.ts.map +0 -1
- package/dist/malp/core/ccc.js +0 -181
- package/dist/malp/core/ccc.js.map +0 -1
- package/dist/malp/core/index.d.ts +0 -9
- package/dist/malp/core/index.d.ts.map +0 -1
- package/dist/malp/core/index.js +0 -9
- package/dist/malp/core/index.js.map +0 -1
- package/dist/malp/core/linalg.d.ts +0 -101
- package/dist/malp/core/linalg.d.ts.map +0 -1
- package/dist/malp/core/linalg.js +0 -278
- package/dist/malp/core/linalg.js.map +0 -1
- package/dist/malp/core/optimizer.d.ts +0 -68
- package/dist/malp/core/optimizer.d.ts.map +0 -1
- package/dist/malp/core/optimizer.js +0 -160
- package/dist/malp/core/optimizer.js.map +0 -1
- package/dist/malp/index.d.ts +0 -33
- package/dist/malp/index.d.ts.map +0 -1
- package/dist/malp/index.js +0 -37
- package/dist/malp/index.js.map +0 -1
- package/dist/malp/metrics/agreement.d.ts +0 -106
- package/dist/malp/metrics/agreement.d.ts.map +0 -1
- package/dist/malp/metrics/agreement.js +0 -199
- package/dist/malp/metrics/agreement.js.map +0 -1
- package/dist/malp/metrics/comparison.d.ts +0 -93
- package/dist/malp/metrics/comparison.d.ts.map +0 -1
- package/dist/malp/metrics/comparison.js +0 -256
- package/dist/malp/metrics/comparison.js.map +0 -1
- package/dist/malp/metrics/index.d.ts +0 -8
- package/dist/malp/metrics/index.d.ts.map +0 -1
- package/dist/malp/metrics/index.js +0 -8
- package/dist/malp/metrics/index.js.map +0 -1
- package/dist/malp/metrics/performance.d.ts +0 -61
- package/dist/malp/metrics/performance.d.ts.map +0 -1
- package/dist/malp/metrics/performance.js +0 -190
- package/dist/malp/metrics/performance.js.map +0 -1
- package/dist/malp/models/index.d.ts +0 -7
- package/dist/malp/models/index.d.ts.map +0 -1
- package/dist/malp/models/index.js +0 -7
- package/dist/malp/models/index.js.map +0 -1
- package/dist/malp/models/malp.d.ts +0 -116
- package/dist/malp/models/malp.d.ts.map +0 -1
- package/dist/malp/models/malp.js +0 -206
- package/dist/malp/models/malp.js.map +0 -1
- package/dist/malp/models/regressor.d.ts +0 -80
- package/dist/malp/models/regressor.d.ts.map +0 -1
- package/dist/malp/models/regressor.js +0 -229
- package/dist/malp/models/regressor.js.map +0 -1
- package/dist/malp/reasoningbank_validator.d.ts +0 -187
- package/dist/malp/reasoningbank_validator.d.ts.map +0 -1
- package/dist/malp/reasoningbank_validator.js +0 -246
- package/dist/malp/reasoningbank_validator.js.map +0 -1
- package/dist/malp/wasm_bindings.d.ts +0 -344
- package/dist/malp/wasm_bindings.d.ts.map +0 -1
- package/dist/malp/wasm_bindings.js +0 -9
- package/dist/malp/wasm_bindings.js.map +0 -1
- package/dist/mcp/agentdb-mcp-server.d.ts +0 -8
- package/dist/mcp/agentdb-mcp-server.d.ts.map +0 -1
- package/dist/mcp/agentdb-mcp-server.js +0 -2116
- package/dist/mcp/agentdb-mcp-server.js.map +0 -1
- package/dist/mcp/learning-tools-handlers.d.ts +0 -16
- package/dist/mcp/learning-tools-handlers.d.ts.map +0 -1
- package/dist/mcp/learning-tools-handlers.js +0 -105
- package/dist/mcp/learning-tools-handlers.js.map +0 -1
- package/dist/optimizations/BatchOperations.d.ts +0 -109
- package/dist/optimizations/BatchOperations.d.ts.map +0 -1
- package/dist/optimizations/BatchOperations.js +0 -407
- package/dist/optimizations/BatchOperations.js.map +0 -1
- package/dist/optimizations/QueryOptimizer.d.ts +0 -83
- package/dist/optimizations/QueryOptimizer.d.ts.map +0 -1
- package/dist/optimizations/QueryOptimizer.js +0 -228
- package/dist/optimizations/QueryOptimizer.js.map +0 -1
- package/dist/optimizations/ToolCache.d.ts +0 -137
- package/dist/optimizations/ToolCache.d.ts.map +0 -1
- package/dist/optimizations/ToolCache.js +0 -281
- package/dist/optimizations/ToolCache.js.map +0 -1
- package/dist/optimizations/index.d.ts +0 -10
- package/dist/optimizations/index.d.ts.map +0 -1
- package/dist/optimizations/index.js +0 -8
- package/dist/optimizations/index.js.map +0 -1
- package/dist/security/input-validation.d.ts +0 -109
- package/dist/security/input-validation.d.ts.map +0 -1
- package/dist/security/input-validation.js +0 -398
- package/dist/security/input-validation.js.map +0 -1
- package/dist/security/limits.d.ts +0 -150
- package/dist/security/limits.d.ts.map +0 -1
- package/dist/security/limits.js +0 -288
- package/dist/security/limits.js.map +0 -1
- package/dist/security/path-security.d.ts +0 -100
- package/dist/security/path-security.d.ts.map +0 -1
- package/dist/security/path-security.js +0 -337
- package/dist/security/path-security.js.map +0 -1
- package/dist/security/validation.d.ts +0 -95
- package/dist/security/validation.d.ts.map +0 -1
- package/dist/security/validation.js +0 -315
- package/dist/security/validation.js.map +0 -1
- package/dist/types/quic.d.ts +0 -518
- package/dist/types/quic.d.ts.map +0 -1
- package/dist/types/quic.js +0 -272
- package/dist/types/quic.js.map +0 -1
|
@@ -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"}
|
|
@@ -1,402 +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
|
-
class MinHeap {
|
|
21
|
-
items = [];
|
|
22
|
-
push(item, priority) {
|
|
23
|
-
this.items.push({ item, priority });
|
|
24
|
-
this.bubbleUp(this.items.length - 1);
|
|
25
|
-
}
|
|
26
|
-
pop() {
|
|
27
|
-
if (this.items.length === 0)
|
|
28
|
-
return undefined;
|
|
29
|
-
const result = this.items[0].item;
|
|
30
|
-
const last = this.items.pop();
|
|
31
|
-
if (this.items.length > 0) {
|
|
32
|
-
this.items[0] = last;
|
|
33
|
-
this.bubbleDown(0);
|
|
34
|
-
}
|
|
35
|
-
return result;
|
|
36
|
-
}
|
|
37
|
-
peek() {
|
|
38
|
-
return this.items[0]?.item;
|
|
39
|
-
}
|
|
40
|
-
size() {
|
|
41
|
-
return this.items.length;
|
|
42
|
-
}
|
|
43
|
-
bubbleUp(index) {
|
|
44
|
-
while (index > 0) {
|
|
45
|
-
const parentIndex = Math.floor((index - 1) / 2);
|
|
46
|
-
if (this.items[index].priority >= this.items[parentIndex].priority)
|
|
47
|
-
break;
|
|
48
|
-
[this.items[index], this.items[parentIndex]] = [this.items[parentIndex], this.items[index]];
|
|
49
|
-
index = parentIndex;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
bubbleDown(index) {
|
|
53
|
-
while (true) {
|
|
54
|
-
const leftChild = 2 * index + 1;
|
|
55
|
-
const rightChild = 2 * index + 2;
|
|
56
|
-
let smallest = index;
|
|
57
|
-
if (leftChild < this.items.length && this.items[leftChild].priority < this.items[smallest].priority) {
|
|
58
|
-
smallest = leftChild;
|
|
59
|
-
}
|
|
60
|
-
if (rightChild < this.items.length && this.items[rightChild].priority < this.items[smallest].priority) {
|
|
61
|
-
smallest = rightChild;
|
|
62
|
-
}
|
|
63
|
-
if (smallest === index)
|
|
64
|
-
break;
|
|
65
|
-
[this.items[index], this.items[smallest]] = [this.items[smallest], this.items[index]];
|
|
66
|
-
index = smallest;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
export class HNSWIndex {
|
|
71
|
-
config;
|
|
72
|
-
nodes = new Map();
|
|
73
|
-
entryPoint = null;
|
|
74
|
-
currentId = 0;
|
|
75
|
-
ml;
|
|
76
|
-
constructor(config = {}) {
|
|
77
|
-
this.config = {
|
|
78
|
-
dimension: config.dimension || 384,
|
|
79
|
-
M: config.M || 16,
|
|
80
|
-
efConstruction: config.efConstruction || 200,
|
|
81
|
-
efSearch: config.efSearch || 50,
|
|
82
|
-
ml: config.ml || 1 / Math.log(2),
|
|
83
|
-
maxLayers: config.maxLayers || 16,
|
|
84
|
-
distanceFunction: config.distanceFunction || 'cosine'
|
|
85
|
-
};
|
|
86
|
-
this.ml = this.config.ml;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Add vector to index
|
|
90
|
-
*/
|
|
91
|
-
add(vector, id) {
|
|
92
|
-
const nodeId = id !== undefined ? id : this.currentId++;
|
|
93
|
-
const level = this.randomLevel();
|
|
94
|
-
const node = {
|
|
95
|
-
id: nodeId,
|
|
96
|
-
vector,
|
|
97
|
-
level,
|
|
98
|
-
connections: new Map()
|
|
99
|
-
};
|
|
100
|
-
// Initialize connections for each layer
|
|
101
|
-
for (let l = 0; l <= level; l++) {
|
|
102
|
-
node.connections.set(l, []);
|
|
103
|
-
}
|
|
104
|
-
if (this.entryPoint === null) {
|
|
105
|
-
// First node
|
|
106
|
-
this.entryPoint = nodeId;
|
|
107
|
-
this.nodes.set(nodeId, node);
|
|
108
|
-
return nodeId;
|
|
109
|
-
}
|
|
110
|
-
// Find nearest neighbors at each layer
|
|
111
|
-
const ep = this.entryPoint;
|
|
112
|
-
let nearest = ep;
|
|
113
|
-
// Search from top layer to target layer + 1
|
|
114
|
-
for (let lc = this.nodes.get(ep).level; lc > level; lc--) {
|
|
115
|
-
nearest = this.searchLayer(vector, nearest, 1, lc)[0];
|
|
116
|
-
}
|
|
117
|
-
// Insert node at layers 0 to level
|
|
118
|
-
for (let lc = Math.min(level, this.nodes.get(ep).level); lc >= 0; lc--) {
|
|
119
|
-
const candidates = this.searchLayer(vector, nearest, this.config.efConstruction, lc);
|
|
120
|
-
// Select M neighbors
|
|
121
|
-
const M = lc === 0 ? this.config.M * 2 : this.config.M;
|
|
122
|
-
const neighbors = this.selectNeighbors(vector, candidates, M);
|
|
123
|
-
// Add bidirectional connections
|
|
124
|
-
for (const neighbor of neighbors) {
|
|
125
|
-
this.connect(nodeId, neighbor, lc);
|
|
126
|
-
this.connect(neighbor, nodeId, lc);
|
|
127
|
-
// Prune connections if necessary
|
|
128
|
-
const neighborNode = this.nodes.get(neighbor);
|
|
129
|
-
const neighborConnections = neighborNode.connections.get(lc);
|
|
130
|
-
if (neighborConnections.length > M) {
|
|
131
|
-
const newNeighbors = this.selectNeighbors(neighborNode.vector, neighborConnections, M);
|
|
132
|
-
neighborNode.connections.set(lc, newNeighbors);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
nearest = candidates[0];
|
|
136
|
-
}
|
|
137
|
-
// Update entry point if necessary
|
|
138
|
-
if (level > this.nodes.get(this.entryPoint).level) {
|
|
139
|
-
this.entryPoint = nodeId;
|
|
140
|
-
}
|
|
141
|
-
this.nodes.set(nodeId, node);
|
|
142
|
-
return nodeId;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Search for k nearest neighbors
|
|
146
|
-
*/
|
|
147
|
-
search(query, k, ef) {
|
|
148
|
-
if (this.entryPoint === null)
|
|
149
|
-
return [];
|
|
150
|
-
ef = ef || Math.max(this.config.efSearch, k);
|
|
151
|
-
let ep = this.entryPoint;
|
|
152
|
-
let nearest = ep;
|
|
153
|
-
// Search from top to layer 1
|
|
154
|
-
for (let lc = this.nodes.get(ep).level; lc > 0; lc--) {
|
|
155
|
-
nearest = this.searchLayer(query, nearest, 1, lc)[0];
|
|
156
|
-
}
|
|
157
|
-
// Search at layer 0
|
|
158
|
-
const candidates = this.searchLayer(query, nearest, ef, 0);
|
|
159
|
-
// Convert to SearchResult and return top k
|
|
160
|
-
return candidates
|
|
161
|
-
.slice(0, k)
|
|
162
|
-
.map(id => ({
|
|
163
|
-
id,
|
|
164
|
-
distance: this.distance(query, this.nodes.get(id).vector),
|
|
165
|
-
vector: this.nodes.get(id).vector
|
|
166
|
-
}));
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Search at specific layer
|
|
170
|
-
*/
|
|
171
|
-
searchLayer(query, ep, ef, layer) {
|
|
172
|
-
const visited = new Set();
|
|
173
|
-
const candidates = new MinHeap();
|
|
174
|
-
const w = new MinHeap();
|
|
175
|
-
const dist = this.distance(query, this.nodes.get(ep).vector);
|
|
176
|
-
candidates.push(ep, dist);
|
|
177
|
-
w.push(ep, -dist); // Max heap (negate for min heap)
|
|
178
|
-
visited.add(ep);
|
|
179
|
-
while (candidates.size() > 0) {
|
|
180
|
-
const c = candidates.pop();
|
|
181
|
-
const fDist = -w.peek(); // Furthest point distance
|
|
182
|
-
const cDist = this.distance(query, this.nodes.get(c).vector);
|
|
183
|
-
if (cDist > fDist)
|
|
184
|
-
break;
|
|
185
|
-
const neighbors = this.nodes.get(c).connections.get(layer) || [];
|
|
186
|
-
for (const e of neighbors) {
|
|
187
|
-
if (visited.has(e))
|
|
188
|
-
continue;
|
|
189
|
-
visited.add(e);
|
|
190
|
-
const eDist = this.distance(query, this.nodes.get(e).vector);
|
|
191
|
-
const fDist = -w.peek();
|
|
192
|
-
if (eDist < fDist || w.size() < ef) {
|
|
193
|
-
candidates.push(e, eDist);
|
|
194
|
-
w.push(e, -eDist);
|
|
195
|
-
if (w.size() > ef) {
|
|
196
|
-
w.pop();
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
// Return ef nearest neighbors
|
|
202
|
-
const result = [];
|
|
203
|
-
while (w.size() > 0) {
|
|
204
|
-
result.unshift(w.pop());
|
|
205
|
-
}
|
|
206
|
-
return result;
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Select best neighbors using heuristic
|
|
210
|
-
*/
|
|
211
|
-
selectNeighbors(base, candidates, M) {
|
|
212
|
-
if (candidates.length <= M)
|
|
213
|
-
return candidates;
|
|
214
|
-
// Sort by distance
|
|
215
|
-
const sorted = candidates
|
|
216
|
-
.map(id => ({
|
|
217
|
-
id,
|
|
218
|
-
distance: this.distance(base, this.nodes.get(id).vector)
|
|
219
|
-
}))
|
|
220
|
-
.sort((a, b) => a.distance - b.distance);
|
|
221
|
-
return sorted.slice(0, M).map(x => x.id);
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Connect two nodes at layer
|
|
225
|
-
*/
|
|
226
|
-
connect(from, to, layer) {
|
|
227
|
-
const node = this.nodes.get(from);
|
|
228
|
-
const connections = node.connections.get(layer);
|
|
229
|
-
if (!connections.includes(to)) {
|
|
230
|
-
connections.push(to);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Random level assignment
|
|
235
|
-
*/
|
|
236
|
-
randomLevel() {
|
|
237
|
-
let level = 0;
|
|
238
|
-
while (Math.random() < this.ml && level < this.config.maxLayers - 1) {
|
|
239
|
-
level++;
|
|
240
|
-
}
|
|
241
|
-
return level;
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Distance function
|
|
245
|
-
*/
|
|
246
|
-
distance(a, b) {
|
|
247
|
-
switch (this.config.distanceFunction) {
|
|
248
|
-
case 'cosine':
|
|
249
|
-
return 1 - this.cosineSimilarity(a, b);
|
|
250
|
-
case 'euclidean':
|
|
251
|
-
return this.euclideanDistance(a, b);
|
|
252
|
-
case 'manhattan':
|
|
253
|
-
return this.manhattanDistance(a, b);
|
|
254
|
-
default:
|
|
255
|
-
return 1 - this.cosineSimilarity(a, b);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
cosineSimilarity(a, b) {
|
|
259
|
-
let dotProduct = 0;
|
|
260
|
-
let normA = 0;
|
|
261
|
-
let normB = 0;
|
|
262
|
-
for (let i = 0; i < a.length; i++) {
|
|
263
|
-
dotProduct += a[i] * b[i];
|
|
264
|
-
normA += a[i] * a[i];
|
|
265
|
-
normB += b[i] * b[i];
|
|
266
|
-
}
|
|
267
|
-
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
268
|
-
}
|
|
269
|
-
euclideanDistance(a, b) {
|
|
270
|
-
let sum = 0;
|
|
271
|
-
for (let i = 0; i < a.length; i++) {
|
|
272
|
-
const diff = a[i] - b[i];
|
|
273
|
-
sum += diff * diff;
|
|
274
|
-
}
|
|
275
|
-
return Math.sqrt(sum);
|
|
276
|
-
}
|
|
277
|
-
manhattanDistance(a, b) {
|
|
278
|
-
let sum = 0;
|
|
279
|
-
for (let i = 0; i < a.length; i++) {
|
|
280
|
-
sum += Math.abs(a[i] - b[i]);
|
|
281
|
-
}
|
|
282
|
-
return sum;
|
|
283
|
-
}
|
|
284
|
-
/**
|
|
285
|
-
* Get index statistics
|
|
286
|
-
*/
|
|
287
|
-
getStats() {
|
|
288
|
-
if (this.nodes.size === 0) {
|
|
289
|
-
return {
|
|
290
|
-
numNodes: 0,
|
|
291
|
-
numLayers: 0,
|
|
292
|
-
avgConnections: 0,
|
|
293
|
-
entryPointLevel: 0,
|
|
294
|
-
memoryBytes: 0
|
|
295
|
-
};
|
|
296
|
-
}
|
|
297
|
-
const maxLevel = Math.max(...Array.from(this.nodes.values()).map(n => n.level));
|
|
298
|
-
let totalConnections = 0;
|
|
299
|
-
for (const node of this.nodes.values()) {
|
|
300
|
-
for (const connections of node.connections.values()) {
|
|
301
|
-
totalConnections += connections.length;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
const avgConnections = totalConnections / this.nodes.size;
|
|
305
|
-
// Estimate memory: vector + connections + metadata
|
|
306
|
-
const vectorBytes = this.config.dimension * 4; // Float32Array
|
|
307
|
-
const connectionBytes = avgConnections * 4; // number array
|
|
308
|
-
const metadataBytes = 100; // rough estimate for node object
|
|
309
|
-
const memoryBytes = this.nodes.size * (vectorBytes + connectionBytes + metadataBytes);
|
|
310
|
-
return {
|
|
311
|
-
numNodes: this.nodes.size,
|
|
312
|
-
numLayers: maxLevel + 1,
|
|
313
|
-
avgConnections,
|
|
314
|
-
entryPointLevel: this.entryPoint ? this.nodes.get(this.entryPoint).level : 0,
|
|
315
|
-
memoryBytes
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* Export index for persistence
|
|
320
|
-
*/
|
|
321
|
-
export() {
|
|
322
|
-
const data = {
|
|
323
|
-
config: this.config,
|
|
324
|
-
entryPoint: this.entryPoint,
|
|
325
|
-
currentId: this.currentId,
|
|
326
|
-
nodes: Array.from(this.nodes.entries()).map(([id, node]) => ({
|
|
327
|
-
id,
|
|
328
|
-
vector: Array.from(node.vector),
|
|
329
|
-
level: node.level,
|
|
330
|
-
connections: Array.from(node.connections.entries())
|
|
331
|
-
}))
|
|
332
|
-
};
|
|
333
|
-
return JSON.stringify(data);
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* Import index from JSON
|
|
337
|
-
*/
|
|
338
|
-
import(json) {
|
|
339
|
-
const data = JSON.parse(json);
|
|
340
|
-
this.config = data.config;
|
|
341
|
-
this.entryPoint = data.entryPoint;
|
|
342
|
-
this.currentId = data.currentId;
|
|
343
|
-
this.nodes.clear();
|
|
344
|
-
for (const nodeData of data.nodes) {
|
|
345
|
-
const node = {
|
|
346
|
-
id: nodeData.id,
|
|
347
|
-
vector: new Float32Array(nodeData.vector),
|
|
348
|
-
level: nodeData.level,
|
|
349
|
-
connections: new Map(nodeData.connections)
|
|
350
|
-
};
|
|
351
|
-
this.nodes.set(nodeData.id, node);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* Clear index
|
|
356
|
-
*/
|
|
357
|
-
clear() {
|
|
358
|
-
this.nodes.clear();
|
|
359
|
-
this.entryPoint = null;
|
|
360
|
-
this.currentId = 0;
|
|
361
|
-
}
|
|
362
|
-
/**
|
|
363
|
-
* Get number of nodes
|
|
364
|
-
*/
|
|
365
|
-
size() {
|
|
366
|
-
return this.nodes.size;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
/**
|
|
370
|
-
* Helper function to create HNSW index with default settings
|
|
371
|
-
*/
|
|
372
|
-
export function createHNSW(dimension) {
|
|
373
|
-
return new HNSWIndex({
|
|
374
|
-
dimension,
|
|
375
|
-
M: 16,
|
|
376
|
-
efConstruction: 200,
|
|
377
|
-
efSearch: 50
|
|
378
|
-
});
|
|
379
|
-
}
|
|
380
|
-
/**
|
|
381
|
-
* Helper function to create fast HNSW (lower quality, faster build)
|
|
382
|
-
*/
|
|
383
|
-
export function createFastHNSW(dimension) {
|
|
384
|
-
return new HNSWIndex({
|
|
385
|
-
dimension,
|
|
386
|
-
M: 8,
|
|
387
|
-
efConstruction: 100,
|
|
388
|
-
efSearch: 30
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
/**
|
|
392
|
-
* Helper function to create accurate HNSW (higher quality, slower build)
|
|
393
|
-
*/
|
|
394
|
-
export function createAccurateHNSW(dimension) {
|
|
395
|
-
return new HNSWIndex({
|
|
396
|
-
dimension,
|
|
397
|
-
M: 32,
|
|
398
|
-
efConstruction: 400,
|
|
399
|
-
efSearch: 100
|
|
400
|
-
});
|
|
401
|
-
}
|
|
402
|
-
//# sourceMappingURL=HNSWIndex.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HNSWIndex.js","sourceRoot":"","sources":["../../src/browser/HNSWIndex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAyBH,MAAM,OAAO;IACH,KAAK,GAAyC,EAAE,CAAC;IAEzD,IAAI,CAAC,IAAO,EAAE,QAAgB;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,GAAG;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAG,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAC7B,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAEO,QAAQ,CAAC,KAAa;QAC5B,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ;gBAAE,MAAM;YAC1E,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5F,KAAK,GAAG,WAAW,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;YACjC,IAAI,QAAQ,GAAG,KAAK,CAAC;YAErB,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACpG,QAAQ,GAAG,SAAS,CAAC;YACvB,CAAC;YACD,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACtG,QAAQ,GAAG,UAAU,CAAC;YACxB,CAAC;YACD,IAAI,QAAQ,KAAK,KAAK;gBAAE,MAAM;YAE9B,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACtF,KAAK,GAAG,QAAQ,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,SAAS;IACZ,MAAM,CAAuB;IAC7B,KAAK,GAA0B,IAAI,GAAG,EAAE,CAAC;IACzC,UAAU,GAAkB,IAAI,CAAC;IACjC,SAAS,GAAG,CAAC,CAAC;IACd,EAAE,CAAS;IAEnB,YAAY,SAA8B,EAAE;QAC1C,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,GAAG;YAClC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;YACjB,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,GAAG;YAC5C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YAC/B,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;YACjC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,QAAQ;SACtD,CAAC;QAEF,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,MAAoB,EAAE,EAAW;QACnC,MAAM,MAAM,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEjC,MAAM,IAAI,GAAa;YACrB,EAAE,EAAE,MAAM;YACV,MAAM;YACN,KAAK;YACL,WAAW,EAAE,IAAI,GAAG,EAAE;SACvB,CAAC;QAEF,wCAAwC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,aAAa;YACb,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,uCAAuC;QACvC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3B,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,4CAA4C;QAC5C,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;YAC1D,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,mCAAmC;QACnC,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YACxE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAErF,qBAAqB;YACrB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAE9D,gCAAgC;YAChC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;gBAEnC,iCAAiC;gBACjC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;gBAC/C,MAAM,mBAAmB,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;gBAC9D,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CACvC,YAAY,CAAC,MAAM,EACnB,mBAAmB,EACnB,CAAC,CACF,CAAC;oBACF,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;YAED,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAED,kCAAkC;QAClC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAE,CAAC,KAAK,EAAE,CAAC;YACnD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAmB,EAAE,CAAS,EAAE,EAAW;QAChD,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAExC,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE7C,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;QACzB,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,6BAA6B;QAC7B,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YACtD,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,oBAAoB;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAE3D,2CAA2C;QAC3C,OAAO,UAAU;aACd,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACV,EAAE;YACF,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,MAAM,CAAC;YAC1D,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,MAAM;SACnC,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAmB,EAAE,EAAU,EAAE,EAAU,EAAE,KAAa;QAC5E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,UAAU,GAAG,IAAI,OAAO,EAAU,CAAC;QACzC,MAAM,CAAC,GAAG,IAAI,OAAO,EAAU,CAAC;QAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,MAAM,CAAC,CAAC;QAC9D,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC;QACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAG,CAAC;YAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAG,CAAC,CAAC,0BAA0B;YAEpD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,KAAK,GAAG,KAAK;gBAAE,MAAM;YAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAEf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC;gBAC9D,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAG,CAAC;gBAEzB,IAAI,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;oBACnC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBAC1B,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;oBAElB,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;wBAClB,CAAC,CAAC,GAAG,EAAE,CAAC;oBACV,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAG,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,IAAkB,EAAE,UAAoB,EAAE,CAAS;QACzE,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,UAAU,CAAC;QAE9C,mBAAmB;QACnB,MAAM,MAAM,GAAG,UAAU;aACtB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACV,EAAE;YACF,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,MAAM,CAAC;SAC1D,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE3C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,IAAY,EAAE,EAAU,EAAE,KAAa;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACpE,KAAK,EAAE,CAAC;QACV,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,CAAe,EAAE,CAAe;QAC/C,QAAQ,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACrC,KAAK,QAAQ;gBACX,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC;gBACE,OAAO,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,CAAe,EAAE,CAAe;QACvD,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEO,iBAAiB,CAAC,CAAe,EAAE,CAAe;QACxD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAEO,iBAAiB,CAAC,CAAe,EAAE,CAAe;QACxD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,QAAQ;QAON,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,CAAC;gBACZ,cAAc,EAAE,CAAC;gBACjB,eAAe,EAAE,CAAC;gBAClB,WAAW,EAAE,CAAC;aACf,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpD,gBAAgB,IAAI,WAAW,CAAC,MAAM,CAAC;YACzC,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAE1D,mDAAmD;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,eAAe;QAC9D,MAAM,eAAe,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,eAAe;QAC3D,MAAM,aAAa,GAAG,GAAG,CAAC,CAAC,iCAAiC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,GAAG,eAAe,GAAG,aAAa,CAAC,CAAC;QAEtF,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACzB,SAAS,EAAE,QAAQ,GAAG,CAAC;YACvB,cAAc;YACd,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7E,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3D,EAAE;gBACF,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;aACpD,CAAC,CAAC;SACJ,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAY;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEnB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,GAAa;gBACrB,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,MAAM,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACzC,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,WAAW,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;aAC3C,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,OAAO,IAAI,SAAS,CAAC;QACnB,SAAS;QACT,CAAC,EAAE,EAAE;QACL,cAAc,EAAE,GAAG;QACnB,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,IAAI,SAAS,CAAC;QACnB,SAAS;QACT,CAAC,EAAE,CAAC;QACJ,cAAc,EAAE,GAAG;QACnB,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,IAAI,SAAS,CAAC;QACnB,SAAS;QACT,CAAC,EAAE,EAAE;QACL,cAAc,EAAE,GAAG;QACnB,QAAQ,EAAE,GAAG;KACd,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Product Quantization for Browser
|
|
3
|
-
*
|
|
4
|
-
* Compresses high-dimensional vectors using product quantization.
|
|
5
|
-
* Achieves 4-32x memory reduction with minimal accuracy loss.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - PQ8: 8 subvectors, 256 centroids each (4x compression)
|
|
9
|
-
* - PQ16: 16 subvectors, 256 centroids each (8x compression)
|
|
10
|
-
* - Asymmetric distance computation (ADC)
|
|
11
|
-
* - K-means clustering for codebook training
|
|
12
|
-
*
|
|
13
|
-
* Performance:
|
|
14
|
-
* - Memory: Float32 (4 bytes) → uint8 (1 byte) per subvector
|
|
15
|
-
* - Speed: ~1.5x slower search vs uncompressed
|
|
16
|
-
* - Accuracy: 95-99% recall@10
|
|
17
|
-
*/
|
|
18
|
-
export interface PQConfig {
|
|
19
|
-
dimension: number;
|
|
20
|
-
numSubvectors: number;
|
|
21
|
-
numCentroids: number;
|
|
22
|
-
maxIterations?: number;
|
|
23
|
-
convergenceThreshold?: number;
|
|
24
|
-
}
|
|
25
|
-
export interface PQCodebook {
|
|
26
|
-
subvectorDim: number;
|
|
27
|
-
numSubvectors: number;
|
|
28
|
-
numCentroids: number;
|
|
29
|
-
centroids: Float32Array[];
|
|
30
|
-
}
|
|
31
|
-
export interface CompressedVector {
|
|
32
|
-
codes: Uint8Array;
|
|
33
|
-
norm: number;
|
|
34
|
-
}
|
|
35
|
-
export declare class ProductQuantization {
|
|
36
|
-
private config;
|
|
37
|
-
private codebook;
|
|
38
|
-
private trained;
|
|
39
|
-
constructor(config: PQConfig);
|
|
40
|
-
/**
|
|
41
|
-
* Train codebook using k-means on training vectors
|
|
42
|
-
*/
|
|
43
|
-
train(vectors: Float32Array[]): Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* K-means clustering for centroids
|
|
46
|
-
*/
|
|
47
|
-
private kMeans;
|
|
48
|
-
/**
|
|
49
|
-
* K-means++ initialization for better centroid selection
|
|
50
|
-
*/
|
|
51
|
-
private kMeansPlusPlus;
|
|
52
|
-
/**
|
|
53
|
-
* Compress a vector using trained codebook
|
|
54
|
-
*/
|
|
55
|
-
compress(vector: Float32Array): CompressedVector;
|
|
56
|
-
/**
|
|
57
|
-
* Decompress a vector (approximate reconstruction)
|
|
58
|
-
*/
|
|
59
|
-
decompress(compressed: CompressedVector): Float32Array;
|
|
60
|
-
/**
|
|
61
|
-
* Asymmetric Distance Computation (ADC)
|
|
62
|
-
* Computes distance from query vector to compressed vector
|
|
63
|
-
*/
|
|
64
|
-
asymmetricDistance(query: Float32Array, compressed: CompressedVector): number;
|
|
65
|
-
/**
|
|
66
|
-
* Batch compression for multiple vectors
|
|
67
|
-
*/
|
|
68
|
-
batchCompress(vectors: Float32Array[]): CompressedVector[];
|
|
69
|
-
/**
|
|
70
|
-
* Get memory savings
|
|
71
|
-
*/
|
|
72
|
-
getCompressionRatio(): number;
|
|
73
|
-
/**
|
|
74
|
-
* Export codebook for persistence
|
|
75
|
-
*/
|
|
76
|
-
exportCodebook(): string;
|
|
77
|
-
/**
|
|
78
|
-
* Import codebook
|
|
79
|
-
*/
|
|
80
|
-
importCodebook(json: string): void;
|
|
81
|
-
/**
|
|
82
|
-
* Utility: Squared Euclidean distance
|
|
83
|
-
*/
|
|
84
|
-
private squaredDistance;
|
|
85
|
-
/**
|
|
86
|
-
* Get statistics
|
|
87
|
-
*/
|
|
88
|
-
getStats(): {
|
|
89
|
-
trained: boolean;
|
|
90
|
-
compressionRatio: number;
|
|
91
|
-
memoryPerVector: number;
|
|
92
|
-
codebookSize: number;
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Helper function to create PQ8 (8 subvectors, 4x compression)
|
|
97
|
-
*/
|
|
98
|
-
export declare function createPQ8(dimension: number): ProductQuantization;
|
|
99
|
-
/**
|
|
100
|
-
* Helper function to create PQ16 (16 subvectors, 8x compression)
|
|
101
|
-
*/
|
|
102
|
-
export declare function createPQ16(dimension: number): ProductQuantization;
|
|
103
|
-
/**
|
|
104
|
-
* Helper function to create PQ32 (32 subvectors, 16x compression)
|
|
105
|
-
*/
|
|
106
|
-
export declare function createPQ32(dimension: number): ProductQuantization;
|
|
107
|
-
//# sourceMappingURL=ProductQuantization.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProductQuantization.d.ts","sourceRoot":"","sources":["../../src/browser/ProductQuantization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,QAAQ;IAe5B;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCnD;;OAEG;YACW,MAAM;IA0DpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAuCtB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB;IAwChD;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,gBAAgB,GAAG,YAAY;IAsBtD;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,GAAG,MAAM;IAsB7E;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE;IAI1D;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAQ7B;;OAEG;IACH,cAAc,IAAI,MAAM;IAgBxB;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAYlC;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,QAAQ,IAAI;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC;QACzB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;KACtB;CAcF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAOhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAOjE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,CAOjE"}
|