@soulcraft/brainy 0.40.0 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +605 -194
- package/dist/augmentations/conduitAugmentations.js +1158 -0
- package/dist/augmentations/conduitAugmentations.js.map +1 -0
- package/dist/augmentations/memoryAugmentations.d.ts +2 -0
- package/dist/augmentations/memoryAugmentations.d.ts.map +1 -1
- package/dist/augmentations/memoryAugmentations.js +270 -0
- package/dist/augmentations/memoryAugmentations.js.map +1 -0
- package/dist/augmentations/serverSearchAugmentations.js +531 -0
- package/dist/augmentations/serverSearchAugmentations.js.map +1 -0
- package/dist/browserFramework.d.ts +15 -0
- package/dist/demo.d.ts +106 -0
- package/dist/examples/basicUsage.js +118 -0
- package/dist/examples/basicUsage.js.map +1 -0
- package/dist/hnsw/distributedSearch.js +452 -0
- package/dist/hnsw/distributedSearch.js.map +1 -0
- package/dist/hnsw/hnswIndex.js +602 -0
- package/dist/hnsw/hnswIndex.js.map +1 -0
- package/dist/hnsw/hnswIndexOptimized.js +471 -0
- package/dist/hnsw/hnswIndexOptimized.js.map +1 -0
- package/dist/hnsw/optimizedHNSWIndex.js +313 -0
- package/dist/hnsw/optimizedHNSWIndex.js.map +1 -0
- package/dist/hnsw/partitionedHNSWIndex.js +304 -0
- package/dist/hnsw/partitionedHNSWIndex.js.map +1 -0
- package/dist/hnsw/scaledHNSWSystem.js +559 -0
- package/dist/hnsw/scaledHNSWSystem.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.js +81 -0
- package/dist/mcp/brainyMCPAdapter.js +142 -0
- package/dist/mcp/brainyMCPAdapter.js.map +1 -0
- package/dist/mcp/brainyMCPService.js +248 -0
- package/dist/mcp/brainyMCPService.js.map +1 -0
- package/dist/mcp/index.js +17 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcpAugmentationToolset.js +180 -0
- package/dist/mcp/mcpAugmentationToolset.js.map +1 -0
- package/dist/storage/adapters/baseStorageAdapter.js +349 -0
- package/dist/storage/adapters/baseStorageAdapter.js.map +1 -0
- package/dist/storage/adapters/batchS3Operations.js +287 -0
- package/dist/storage/adapters/batchS3Operations.js.map +1 -0
- package/dist/storage/adapters/fileSystemStorage.js +846 -0
- package/dist/storage/adapters/fileSystemStorage.js.map +1 -0
- package/dist/storage/adapters/memoryStorage.js +532 -0
- package/dist/storage/adapters/memoryStorage.js.map +1 -0
- package/dist/storage/adapters/opfsStorage.d.ts.map +1 -1
- package/dist/storage/adapters/opfsStorage.js +1118 -0
- package/dist/storage/adapters/opfsStorage.js.map +1 -0
- package/dist/storage/adapters/optimizedS3Search.d.ts +79 -0
- package/dist/storage/adapters/optimizedS3Search.d.ts.map +1 -0
- package/dist/storage/adapters/optimizedS3Search.js +248 -0
- package/dist/storage/adapters/optimizedS3Search.js.map +1 -0
- package/dist/storage/adapters/s3CompatibleStorage.d.ts +21 -0
- package/dist/storage/adapters/s3CompatibleStorage.d.ts.map +1 -1
- package/dist/storage/adapters/s3CompatibleStorage.js +2026 -0
- package/dist/storage/adapters/s3CompatibleStorage.js.map +1 -0
- package/dist/storage/baseStorage.d.ts +1 -0
- package/dist/storage/baseStorage.d.ts.map +1 -1
- package/dist/storage/baseStorage.js +603 -0
- package/dist/storage/baseStorage.js.map +1 -0
- package/dist/storage/cacheManager.js +1306 -0
- package/dist/storage/cacheManager.js.map +1 -0
- package/dist/storage/enhancedCacheManager.js +520 -0
- package/dist/storage/enhancedCacheManager.js.map +1 -0
- package/dist/storage/readOnlyOptimizations.js +425 -0
- package/dist/storage/readOnlyOptimizations.js.map +1 -0
- package/dist/storage/storageFactory.d.ts +0 -1
- package/dist/storage/storageFactory.d.ts.map +1 -1
- package/dist/storage/storageFactory.js +227 -0
- package/dist/storage/storageFactory.js.map +1 -0
- package/dist/types/augmentations.js +16 -0
- package/dist/types/augmentations.js.map +1 -0
- package/dist/types/brainyDataInterface.js +8 -0
- package/dist/types/brainyDataInterface.js.map +1 -0
- package/dist/types/distributedTypes.js +6 -0
- package/dist/types/distributedTypes.js.map +1 -0
- package/dist/types/fileSystemTypes.js +8 -0
- package/dist/types/fileSystemTypes.js.map +1 -0
- package/dist/types/graphTypes.js +247 -0
- package/dist/types/graphTypes.js.map +1 -0
- package/dist/types/mcpTypes.js +22 -0
- package/dist/types/mcpTypes.js.map +1 -0
- package/dist/types/paginationTypes.js +5 -0
- package/dist/types/paginationTypes.js.map +1 -0
- package/dist/types/pipelineTypes.js +7 -0
- package/dist/types/pipelineTypes.js.map +1 -0
- package/dist/types/tensorflowTypes.js +6 -0
- package/dist/types/tensorflowTypes.js.map +1 -0
- package/dist/unified.js +52 -128048
- package/dist/utils/autoConfiguration.js +341 -0
- package/dist/utils/autoConfiguration.js.map +1 -0
- package/dist/utils/cacheAutoConfig.js +261 -0
- package/dist/utils/cacheAutoConfig.js.map +1 -0
- package/dist/utils/crypto.js +45 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/distance.js +239 -0
- package/dist/utils/distance.js.map +1 -0
- package/dist/utils/embedding.d.ts.map +1 -1
- package/dist/utils/embedding.js +702 -0
- package/dist/utils/embedding.js.map +1 -0
- package/dist/utils/environment.js +75 -0
- package/dist/utils/environment.js.map +1 -0
- package/dist/utils/fieldNameTracking.js +90 -0
- package/dist/utils/fieldNameTracking.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/jsonProcessing.js +179 -0
- package/dist/utils/jsonProcessing.js.map +1 -0
- package/dist/utils/logger.d.ts +45 -92
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +129 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/operationUtils.js +126 -0
- package/dist/utils/operationUtils.js.map +1 -0
- package/dist/utils/robustModelLoader.d.ts +14 -0
- package/dist/utils/robustModelLoader.d.ts.map +1 -1
- package/dist/utils/robustModelLoader.js +537 -0
- package/dist/utils/robustModelLoader.js.map +1 -0
- package/dist/utils/searchCache.js +248 -0
- package/dist/utils/searchCache.js.map +1 -0
- package/dist/utils/statistics.js +25 -0
- package/dist/utils/statistics.js.map +1 -0
- package/dist/utils/statisticsCollector.js +224 -0
- package/dist/utils/statisticsCollector.js.map +1 -0
- package/dist/utils/textEncoding.js +309 -0
- package/dist/utils/textEncoding.js.map +1 -0
- package/dist/utils/typeUtils.js +40 -0
- package/dist/utils/typeUtils.js.map +1 -0
- package/dist/utils/version.d.ts +15 -3
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +24 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/utils/workerUtils.js +458 -0
- package/dist/utils/workerUtils.js.map +1 -0
- package/package.json +23 -15
- package/dist/brainy.js +0 -90220
- package/dist/brainy.min.js +0 -12511
- package/dist/patched-platform-node.d.ts +0 -17
- package/dist/statistics/statisticsManager.d.ts +0 -121
- package/dist/storage/fileSystemStorage.d.ts +0 -73
- package/dist/storage/fileSystemStorage.d.ts.map +0 -1
- package/dist/storage/opfsStorage.d.ts +0 -236
- package/dist/storage/opfsStorage.d.ts.map +0 -1
- package/dist/storage/s3CompatibleStorage.d.ts +0 -157
- package/dist/storage/s3CompatibleStorage.d.ts.map +0 -1
- package/dist/testing/prettyReporter.d.ts +0 -23
- package/dist/testing/prettySummaryReporter.d.ts +0 -22
- package/dist/unified.min.js +0 -16153
- package/dist/utils/environmentDetection.d.ts +0 -47
- package/dist/utils/environmentDetection.d.ts.map +0 -1
- package/dist/utils/tensorflowUtils.d.ts +0 -17
- package/dist/utils/tensorflowUtils.d.ts.map +0 -1
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaled HNSW System - Integration of All Optimization Strategies
|
|
3
|
+
* Production-ready system for handling millions of vectors with sub-second search
|
|
4
|
+
*/
|
|
5
|
+
import { PartitionedHNSWIndex } from './partitionedHNSWIndex.js';
|
|
6
|
+
import { DistributedSearchSystem, SearchStrategy } from './distributedSearch.js';
|
|
7
|
+
import { EnhancedCacheManager } from '../storage/enhancedCacheManager.js';
|
|
8
|
+
import { BatchS3Operations } from '../storage/adapters/batchS3Operations.js';
|
|
9
|
+
import { ReadOnlyOptimizations } from '../storage/readOnlyOptimizations.js';
|
|
10
|
+
import { euclideanDistance } from '../utils/index.js';
|
|
11
|
+
import { AutoConfiguration } from '../utils/autoConfiguration.js';
|
|
12
|
+
/**
|
|
13
|
+
* High-performance HNSW system with all optimizations integrated
|
|
14
|
+
* Handles datasets from thousands to millions of vectors
|
|
15
|
+
*/
|
|
16
|
+
export class ScaledHNSWSystem {
|
|
17
|
+
constructor(config = {}) {
|
|
18
|
+
// Performance monitoring and learning
|
|
19
|
+
this.performanceMetrics = {
|
|
20
|
+
totalSearches: 0,
|
|
21
|
+
averageSearchTime: 0,
|
|
22
|
+
cacheHitRate: 0,
|
|
23
|
+
compressionRatio: 0,
|
|
24
|
+
memoryUsage: 0,
|
|
25
|
+
indexSize: 0,
|
|
26
|
+
lastLearningUpdate: Date.now()
|
|
27
|
+
};
|
|
28
|
+
this.autoConfig = AutoConfiguration.getInstance();
|
|
29
|
+
// Set basic defaults - these will be overridden by auto-configuration
|
|
30
|
+
this.config = {
|
|
31
|
+
expectedDatasetSize: 100000,
|
|
32
|
+
maxMemoryUsage: 4 * 1024 * 1024 * 1024,
|
|
33
|
+
targetSearchLatency: 150,
|
|
34
|
+
autoConfigureEnvironment: true,
|
|
35
|
+
learningEnabled: true,
|
|
36
|
+
enablePartitioning: true,
|
|
37
|
+
enableCompression: true,
|
|
38
|
+
enableDistributedSearch: true,
|
|
39
|
+
enablePredictiveCaching: true,
|
|
40
|
+
readOnlyMode: false,
|
|
41
|
+
...config
|
|
42
|
+
};
|
|
43
|
+
this.initializeOptimizedSystem();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Initialize the optimized system based on configuration
|
|
47
|
+
*/
|
|
48
|
+
async initializeOptimizedSystem() {
|
|
49
|
+
console.log('Initializing Scaled HNSW System with auto-configuration...');
|
|
50
|
+
// Auto-configure if enabled
|
|
51
|
+
if (this.config.autoConfigureEnvironment) {
|
|
52
|
+
const autoConfigResult = await this.autoConfig.detectAndConfigure({
|
|
53
|
+
expectedDataSize: this.config.expectedDatasetSize,
|
|
54
|
+
s3Available: !!this.config.s3Config,
|
|
55
|
+
memoryBudget: this.config.maxMemoryUsage
|
|
56
|
+
});
|
|
57
|
+
console.log(`Detected environment: ${autoConfigResult.environment}`);
|
|
58
|
+
console.log(`Available memory: ${(autoConfigResult.availableMemory / 1024 / 1024 / 1024).toFixed(1)}GB`);
|
|
59
|
+
console.log(`CPU cores: ${autoConfigResult.cpuCores}`);
|
|
60
|
+
// Override config with auto-detected values
|
|
61
|
+
this.config = {
|
|
62
|
+
...this.config,
|
|
63
|
+
expectedDatasetSize: autoConfigResult.recommendedConfig.expectedDatasetSize,
|
|
64
|
+
maxMemoryUsage: autoConfigResult.recommendedConfig.maxMemoryUsage,
|
|
65
|
+
targetSearchLatency: autoConfigResult.recommendedConfig.targetSearchLatency,
|
|
66
|
+
enablePartitioning: autoConfigResult.recommendedConfig.enablePartitioning,
|
|
67
|
+
enableCompression: autoConfigResult.recommendedConfig.enableCompression,
|
|
68
|
+
enableDistributedSearch: autoConfigResult.recommendedConfig.enableDistributedSearch,
|
|
69
|
+
enablePredictiveCaching: autoConfigResult.recommendedConfig.enablePredictiveCaching
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
// Determine optimal configuration
|
|
73
|
+
const optimizedConfig = this.calculateOptimalConfiguration();
|
|
74
|
+
// Initialize partitioned index with semantic partitioning as default
|
|
75
|
+
if (this.config.enablePartitioning) {
|
|
76
|
+
this.partitionedIndex = new PartitionedHNSWIndex({
|
|
77
|
+
...optimizedConfig.partitionConfig,
|
|
78
|
+
partitionStrategy: 'semantic', // Always use semantic for better performance
|
|
79
|
+
autoTuneSemanticClusters: true // Enable auto-tuning
|
|
80
|
+
}, optimizedConfig.hnswConfig, euclideanDistance);
|
|
81
|
+
console.log('✓ Partitioned index initialized with semantic clustering');
|
|
82
|
+
}
|
|
83
|
+
// Initialize distributed search system
|
|
84
|
+
if (this.config.enableDistributedSearch && this.partitionedIndex) {
|
|
85
|
+
this.distributedSearch = new DistributedSearchSystem({
|
|
86
|
+
maxConcurrentSearches: optimizedConfig.maxConcurrentSearches,
|
|
87
|
+
searchTimeout: this.config.targetSearchLatency * 5,
|
|
88
|
+
adaptivePartitionSelection: true,
|
|
89
|
+
loadBalancing: true
|
|
90
|
+
});
|
|
91
|
+
console.log('✓ Distributed search system initialized');
|
|
92
|
+
}
|
|
93
|
+
// Initialize batch S3 operations
|
|
94
|
+
if (this.config.s3Config) {
|
|
95
|
+
this.batchOperations = new BatchS3Operations(null, // Would be initialized with actual S3 client
|
|
96
|
+
this.config.s3Config.bucketName, {
|
|
97
|
+
maxConcurrency: 50,
|
|
98
|
+
useS3Select: this.config.expectedDatasetSize > 100000
|
|
99
|
+
});
|
|
100
|
+
console.log('✓ Batch S3 operations initialized');
|
|
101
|
+
}
|
|
102
|
+
// Initialize enhanced caching
|
|
103
|
+
if (this.config.enablePredictiveCaching) {
|
|
104
|
+
this.cacheManager = new EnhancedCacheManager({
|
|
105
|
+
hotCacheMaxSize: optimizedConfig.hotCacheSize,
|
|
106
|
+
warmCacheMaxSize: optimizedConfig.warmCacheSize,
|
|
107
|
+
prefetchEnabled: true,
|
|
108
|
+
prefetchStrategy: 'hybrid', // Type casting for enum compatibility
|
|
109
|
+
prefetchBatchSize: 50
|
|
110
|
+
});
|
|
111
|
+
if (this.batchOperations) {
|
|
112
|
+
this.cacheManager.setStorageAdapters(null, this.batchOperations);
|
|
113
|
+
}
|
|
114
|
+
console.log('✓ Enhanced cache manager initialized');
|
|
115
|
+
}
|
|
116
|
+
// Initialize read-only optimizations
|
|
117
|
+
if (this.config.readOnlyMode && this.config.enableCompression) {
|
|
118
|
+
this.readOnlyOptimizations = new ReadOnlyOptimizations({
|
|
119
|
+
compression: {
|
|
120
|
+
vectorCompression: 'quantization',
|
|
121
|
+
metadataCompression: 'gzip',
|
|
122
|
+
quantizationType: 'scalar',
|
|
123
|
+
quantizationBits: 8
|
|
124
|
+
},
|
|
125
|
+
segmentSize: optimizedConfig.segmentSize,
|
|
126
|
+
memoryMapped: true,
|
|
127
|
+
cacheIndexInMemory: optimizedConfig.cacheIndexInMemory
|
|
128
|
+
});
|
|
129
|
+
console.log('✓ Read-only optimizations initialized');
|
|
130
|
+
}
|
|
131
|
+
console.log('Scaled HNSW System ready for', this.config.expectedDatasetSize, 'vectors');
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Calculate optimal configuration based on dataset size and constraints
|
|
135
|
+
*/
|
|
136
|
+
calculateOptimalConfiguration() {
|
|
137
|
+
const size = this.config.expectedDatasetSize;
|
|
138
|
+
const memoryBudget = this.config.maxMemoryUsage;
|
|
139
|
+
let config = {};
|
|
140
|
+
if (size <= 10000) {
|
|
141
|
+
// Small dataset - optimize for speed
|
|
142
|
+
config = {
|
|
143
|
+
partitionConfig: {
|
|
144
|
+
maxNodesPerPartition: 10000,
|
|
145
|
+
partitionStrategy: 'hash'
|
|
146
|
+
},
|
|
147
|
+
hnswConfig: {
|
|
148
|
+
M: 16,
|
|
149
|
+
efConstruction: 200,
|
|
150
|
+
efSearch: 50,
|
|
151
|
+
targetSearchLatency: this.config.targetSearchLatency
|
|
152
|
+
},
|
|
153
|
+
hotCacheSize: 1000,
|
|
154
|
+
warmCacheSize: 5000,
|
|
155
|
+
maxConcurrentSearches: 4,
|
|
156
|
+
segmentSize: 5000,
|
|
157
|
+
cacheIndexInMemory: true
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
else if (size <= 100000) {
|
|
161
|
+
// Medium dataset - balance performance and memory
|
|
162
|
+
config = {
|
|
163
|
+
partitionConfig: {
|
|
164
|
+
maxNodesPerPartition: 25000,
|
|
165
|
+
partitionStrategy: 'semantic',
|
|
166
|
+
semanticClusters: 8
|
|
167
|
+
},
|
|
168
|
+
hnswConfig: {
|
|
169
|
+
M: 24,
|
|
170
|
+
efConstruction: 300,
|
|
171
|
+
efSearch: 75,
|
|
172
|
+
targetSearchLatency: this.config.targetSearchLatency,
|
|
173
|
+
dynamicParameterTuning: true
|
|
174
|
+
},
|
|
175
|
+
hotCacheSize: 2000,
|
|
176
|
+
warmCacheSize: 15000,
|
|
177
|
+
maxConcurrentSearches: 8,
|
|
178
|
+
segmentSize: 10000,
|
|
179
|
+
cacheIndexInMemory: memoryBudget > 2 * 1024 * 1024 * 1024 // 2GB
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
else if (size <= 1000000) {
|
|
183
|
+
// Large dataset - optimize for scale
|
|
184
|
+
config = {
|
|
185
|
+
partitionConfig: {
|
|
186
|
+
maxNodesPerPartition: 50000,
|
|
187
|
+
partitionStrategy: 'semantic',
|
|
188
|
+
semanticClusters: 16
|
|
189
|
+
},
|
|
190
|
+
hnswConfig: {
|
|
191
|
+
M: 32,
|
|
192
|
+
efConstruction: 400,
|
|
193
|
+
efSearch: 100,
|
|
194
|
+
targetSearchLatency: this.config.targetSearchLatency,
|
|
195
|
+
dynamicParameterTuning: true,
|
|
196
|
+
memoryBudget: memoryBudget
|
|
197
|
+
},
|
|
198
|
+
hotCacheSize: 5000,
|
|
199
|
+
warmCacheSize: 25000,
|
|
200
|
+
maxConcurrentSearches: 12,
|
|
201
|
+
segmentSize: 20000,
|
|
202
|
+
cacheIndexInMemory: memoryBudget > 8 * 1024 * 1024 * 1024 // 8GB
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
// Very large dataset - maximum optimization
|
|
207
|
+
config = {
|
|
208
|
+
partitionConfig: {
|
|
209
|
+
maxNodesPerPartition: 100000,
|
|
210
|
+
partitionStrategy: 'hybrid',
|
|
211
|
+
semanticClusters: 32
|
|
212
|
+
},
|
|
213
|
+
hnswConfig: {
|
|
214
|
+
M: 48,
|
|
215
|
+
efConstruction: 500,
|
|
216
|
+
efSearch: 150,
|
|
217
|
+
targetSearchLatency: this.config.targetSearchLatency,
|
|
218
|
+
dynamicParameterTuning: true,
|
|
219
|
+
memoryBudget: memoryBudget,
|
|
220
|
+
diskCacheEnabled: true
|
|
221
|
+
},
|
|
222
|
+
hotCacheSize: 10000,
|
|
223
|
+
warmCacheSize: 50000,
|
|
224
|
+
maxConcurrentSearches: 20,
|
|
225
|
+
segmentSize: 50000,
|
|
226
|
+
cacheIndexInMemory: false // Too large for memory
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
return config;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Add vector to the scaled system
|
|
233
|
+
*/
|
|
234
|
+
async addVector(item) {
|
|
235
|
+
if (!this.partitionedIndex) {
|
|
236
|
+
throw new Error('System not properly initialized');
|
|
237
|
+
}
|
|
238
|
+
const startTime = Date.now();
|
|
239
|
+
const result = await this.partitionedIndex.addItem(item);
|
|
240
|
+
// Update performance metrics
|
|
241
|
+
this.performanceMetrics.indexSize = this.partitionedIndex.size();
|
|
242
|
+
return result;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Bulk insert vectors with optimizations
|
|
246
|
+
*/
|
|
247
|
+
async bulkInsert(items) {
|
|
248
|
+
if (!this.partitionedIndex) {
|
|
249
|
+
throw new Error('System not properly initialized');
|
|
250
|
+
}
|
|
251
|
+
console.log(`Starting optimized bulk insert of ${items.length} vectors`);
|
|
252
|
+
const startTime = Date.now();
|
|
253
|
+
// Sort items for optimal insertion order
|
|
254
|
+
const sortedItems = this.optimizeInsertionOrder(items);
|
|
255
|
+
const results = [];
|
|
256
|
+
const batchSize = this.calculateOptimalBatchSize(items.length);
|
|
257
|
+
// Process in batches
|
|
258
|
+
for (let i = 0; i < sortedItems.length; i += batchSize) {
|
|
259
|
+
const batch = sortedItems.slice(i, i + batchSize);
|
|
260
|
+
for (const item of batch) {
|
|
261
|
+
const id = await this.partitionedIndex.addItem(item);
|
|
262
|
+
results.push(id);
|
|
263
|
+
}
|
|
264
|
+
// Progress logging
|
|
265
|
+
if (i % (batchSize * 10) === 0) {
|
|
266
|
+
const progress = ((i / sortedItems.length) * 100).toFixed(1);
|
|
267
|
+
console.log(`Bulk insert progress: ${progress}%`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
const totalTime = Date.now() - startTime;
|
|
271
|
+
console.log(`Bulk insert completed: ${results.length} vectors in ${totalTime}ms`);
|
|
272
|
+
return results;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* High-performance vector search with all optimizations
|
|
276
|
+
*/
|
|
277
|
+
async search(queryVector, k = 10, options = {}) {
|
|
278
|
+
const startTime = Date.now();
|
|
279
|
+
try {
|
|
280
|
+
let results;
|
|
281
|
+
if (this.distributedSearch && this.partitionedIndex) {
|
|
282
|
+
// Use distributed search for optimal performance
|
|
283
|
+
results = await this.distributedSearch.distributedSearch(this.partitionedIndex, queryVector, k, options.strategy || SearchStrategy.ADAPTIVE);
|
|
284
|
+
}
|
|
285
|
+
else if (this.partitionedIndex) {
|
|
286
|
+
// Fall back to partitioned search
|
|
287
|
+
results = await this.partitionedIndex.search(queryVector, k, { maxPartitions: options.maxPartitions });
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
throw new Error('No search system available');
|
|
291
|
+
}
|
|
292
|
+
// Update performance metrics and learn from performance
|
|
293
|
+
const searchTime = Date.now() - startTime;
|
|
294
|
+
this.updateSearchMetrics(searchTime, results.length);
|
|
295
|
+
// Adaptive learning - adjust configuration based on performance
|
|
296
|
+
if (this.config.learningEnabled && this.shouldTriggerLearning()) {
|
|
297
|
+
await this.adaptivelyLearnFromPerformance();
|
|
298
|
+
}
|
|
299
|
+
return results;
|
|
300
|
+
}
|
|
301
|
+
catch (error) {
|
|
302
|
+
console.error('Search failed:', error);
|
|
303
|
+
throw error;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Get system performance metrics
|
|
308
|
+
*/
|
|
309
|
+
getPerformanceMetrics() {
|
|
310
|
+
const metrics = { ...this.performanceMetrics };
|
|
311
|
+
// Add subsystem metrics
|
|
312
|
+
if (this.partitionedIndex) {
|
|
313
|
+
metrics.partitionStats = this.partitionedIndex.getPartitionStats();
|
|
314
|
+
}
|
|
315
|
+
if (this.cacheManager) {
|
|
316
|
+
metrics.cacheStats = this.cacheManager.getStats();
|
|
317
|
+
}
|
|
318
|
+
if (this.readOnlyOptimizations) {
|
|
319
|
+
metrics.compressionStats = this.readOnlyOptimizations.getCompressionStats();
|
|
320
|
+
}
|
|
321
|
+
if (this.distributedSearch) {
|
|
322
|
+
metrics.distributedSearchStats = this.distributedSearch.getSearchStats();
|
|
323
|
+
}
|
|
324
|
+
return metrics;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Optimize insertion order for better index quality
|
|
328
|
+
*/
|
|
329
|
+
optimizeInsertionOrder(items) {
|
|
330
|
+
if (items.length < 1000) {
|
|
331
|
+
return items; // Not worth optimizing small batches
|
|
332
|
+
}
|
|
333
|
+
// Simple clustering-based approach for better HNSW construction
|
|
334
|
+
// In production, you might use more sophisticated clustering
|
|
335
|
+
return items.sort(() => Math.random() - 0.5);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Calculate optimal batch size based on system resources
|
|
339
|
+
*/
|
|
340
|
+
calculateOptimalBatchSize(totalItems) {
|
|
341
|
+
const memoryBudget = this.config.maxMemoryUsage;
|
|
342
|
+
const estimatedItemSize = 1000; // Rough estimate per item in bytes
|
|
343
|
+
const maxBatch = Math.floor(memoryBudget * 0.1 / estimatedItemSize);
|
|
344
|
+
const targetBatch = Math.min(1000, Math.max(100, maxBatch));
|
|
345
|
+
return Math.min(targetBatch, totalItems);
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Update search performance metrics
|
|
349
|
+
*/
|
|
350
|
+
updateSearchMetrics(searchTime, resultCount) {
|
|
351
|
+
this.performanceMetrics.totalSearches++;
|
|
352
|
+
this.performanceMetrics.averageSearchTime =
|
|
353
|
+
(this.performanceMetrics.averageSearchTime + searchTime) / 2;
|
|
354
|
+
// Update other metrics
|
|
355
|
+
if (this.cacheManager) {
|
|
356
|
+
const cacheStats = this.cacheManager.getStats();
|
|
357
|
+
const totalOps = cacheStats.hotCacheHits + cacheStats.hotCacheMisses +
|
|
358
|
+
cacheStats.warmCacheHits + cacheStats.warmCacheMisses;
|
|
359
|
+
this.performanceMetrics.cacheHitRate = totalOps > 0 ?
|
|
360
|
+
(cacheStats.hotCacheHits + cacheStats.warmCacheHits) / totalOps : 0;
|
|
361
|
+
}
|
|
362
|
+
if (this.readOnlyOptimizations) {
|
|
363
|
+
const compressionStats = this.readOnlyOptimizations.getCompressionStats();
|
|
364
|
+
this.performanceMetrics.compressionRatio = compressionStats.compressionRatio;
|
|
365
|
+
}
|
|
366
|
+
// Estimate memory usage
|
|
367
|
+
this.performanceMetrics.memoryUsage = this.estimateMemoryUsage();
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Estimate current memory usage
|
|
371
|
+
*/
|
|
372
|
+
estimateMemoryUsage() {
|
|
373
|
+
let totalMemory = 0;
|
|
374
|
+
if (this.partitionedIndex) {
|
|
375
|
+
// Rough estimate: 1KB per vector
|
|
376
|
+
totalMemory += this.partitionedIndex.size() * 1024;
|
|
377
|
+
}
|
|
378
|
+
if (this.cacheManager) {
|
|
379
|
+
const cacheStats = this.cacheManager.getStats();
|
|
380
|
+
totalMemory += (cacheStats.hotCacheSize + cacheStats.warmCacheSize) * 1024;
|
|
381
|
+
}
|
|
382
|
+
return totalMemory;
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Generate performance report
|
|
386
|
+
*/
|
|
387
|
+
generatePerformanceReport() {
|
|
388
|
+
const metrics = this.getPerformanceMetrics();
|
|
389
|
+
return `
|
|
390
|
+
=== Scaled HNSW System Performance Report ===
|
|
391
|
+
|
|
392
|
+
Dataset Configuration:
|
|
393
|
+
- Expected Size: ${this.config.expectedDatasetSize.toLocaleString()} vectors
|
|
394
|
+
- Current Size: ${metrics.indexSize.toLocaleString()} vectors
|
|
395
|
+
- Memory Budget: ${(this.config.maxMemoryUsage / 1024 / 1024 / 1024).toFixed(1)}GB
|
|
396
|
+
- Target Latency: ${this.config.targetSearchLatency}ms
|
|
397
|
+
|
|
398
|
+
Performance Metrics:
|
|
399
|
+
- Total Searches: ${metrics.totalSearches.toLocaleString()}
|
|
400
|
+
- Average Search Time: ${metrics.averageSearchTime.toFixed(1)}ms
|
|
401
|
+
- Cache Hit Rate: ${(metrics.cacheHitRate * 100).toFixed(1)}%
|
|
402
|
+
- Memory Usage: ${(metrics.memoryUsage / 1024 / 1024).toFixed(1)}MB
|
|
403
|
+
- Compression Ratio: ${metrics.compressionRatio ? (metrics.compressionRatio * 100).toFixed(1) + '%' : 'N/A'}
|
|
404
|
+
|
|
405
|
+
System Status: ${this.getSystemStatus()}
|
|
406
|
+
`.trim();
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Get overall system status
|
|
410
|
+
*/
|
|
411
|
+
getSystemStatus() {
|
|
412
|
+
const metrics = this.getPerformanceMetrics();
|
|
413
|
+
if (metrics.averageSearchTime <= this.config.targetSearchLatency) {
|
|
414
|
+
return '✅ OPTIMAL';
|
|
415
|
+
}
|
|
416
|
+
else if (metrics.averageSearchTime <= this.config.targetSearchLatency * 2) {
|
|
417
|
+
return '⚠️ ACCEPTABLE';
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
return '❌ NEEDS OPTIMIZATION';
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Check if adaptive learning should be triggered
|
|
425
|
+
*/
|
|
426
|
+
shouldTriggerLearning() {
|
|
427
|
+
const timeSinceLastLearning = Date.now() - this.performanceMetrics.lastLearningUpdate;
|
|
428
|
+
const minLearningInterval = 30000; // 30 seconds
|
|
429
|
+
const minSearches = 20; // Minimum searches before learning
|
|
430
|
+
return timeSinceLastLearning > minLearningInterval &&
|
|
431
|
+
this.performanceMetrics.totalSearches > minSearches &&
|
|
432
|
+
this.performanceMetrics.totalSearches % 50 === 0; // Learn every 50 searches
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Adaptively learn from performance and adjust configuration
|
|
436
|
+
*/
|
|
437
|
+
async adaptivelyLearnFromPerformance() {
|
|
438
|
+
try {
|
|
439
|
+
const currentMetrics = {
|
|
440
|
+
averageSearchTime: this.performanceMetrics.averageSearchTime,
|
|
441
|
+
memoryUsage: this.performanceMetrics.memoryUsage,
|
|
442
|
+
cacheHitRate: this.performanceMetrics.cacheHitRate,
|
|
443
|
+
errorRate: 0 // Could be tracked separately
|
|
444
|
+
};
|
|
445
|
+
const adjustments = await this.autoConfig.learnFromPerformance(currentMetrics);
|
|
446
|
+
if (Object.keys(adjustments).length > 0) {
|
|
447
|
+
console.log('🧠 Adaptive learning: Adjusting configuration based on performance');
|
|
448
|
+
// Apply learned adjustments
|
|
449
|
+
let configChanged = false;
|
|
450
|
+
if (adjustments.enableDistributedSearch !== undefined &&
|
|
451
|
+
adjustments.enableDistributedSearch !== this.config.enableDistributedSearch) {
|
|
452
|
+
this.config.enableDistributedSearch = adjustments.enableDistributedSearch;
|
|
453
|
+
configChanged = true;
|
|
454
|
+
}
|
|
455
|
+
if (adjustments.enableCompression !== undefined &&
|
|
456
|
+
adjustments.enableCompression !== this.config.enableCompression) {
|
|
457
|
+
this.config.enableCompression = adjustments.enableCompression;
|
|
458
|
+
configChanged = true;
|
|
459
|
+
}
|
|
460
|
+
if (adjustments.enablePredictiveCaching !== undefined &&
|
|
461
|
+
adjustments.enablePredictiveCaching !== this.config.enablePredictiveCaching) {
|
|
462
|
+
this.config.enablePredictiveCaching = adjustments.enablePredictiveCaching;
|
|
463
|
+
configChanged = true;
|
|
464
|
+
}
|
|
465
|
+
// Apply partition adjustments
|
|
466
|
+
if (adjustments.maxNodesPerPartition &&
|
|
467
|
+
this.partitionedIndex &&
|
|
468
|
+
adjustments.maxNodesPerPartition !== this.partitionedIndex.getPartitionStats().averageNodesPerPartition) {
|
|
469
|
+
// This would require rebuilding the index in a real implementation
|
|
470
|
+
console.log(`Learning suggests partition size: ${adjustments.maxNodesPerPartition}`);
|
|
471
|
+
}
|
|
472
|
+
if (configChanged) {
|
|
473
|
+
console.log('✅ Configuration updated based on performance learning');
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
this.performanceMetrics.lastLearningUpdate = Date.now();
|
|
477
|
+
}
|
|
478
|
+
catch (error) {
|
|
479
|
+
console.warn('Adaptive learning failed:', error);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Update dataset analysis for better auto-configuration
|
|
484
|
+
*/
|
|
485
|
+
async updateDatasetAnalysis(vectorCount, vectorDimension) {
|
|
486
|
+
if (this.config.autoConfigureEnvironment) {
|
|
487
|
+
const analysis = {
|
|
488
|
+
estimatedSize: vectorCount,
|
|
489
|
+
vectorDimension,
|
|
490
|
+
accessPatterns: this.inferAccessPatterns()
|
|
491
|
+
};
|
|
492
|
+
await this.autoConfig.adaptToDataset(analysis);
|
|
493
|
+
console.log(`📊 Dataset analysis updated: ${vectorCount} vectors${vectorDimension ? `, ${vectorDimension}D` : ''}`);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Infer access patterns from current metrics
|
|
498
|
+
*/
|
|
499
|
+
inferAccessPatterns() {
|
|
500
|
+
// Simple heuristic - in practice, this would track read/write ratios
|
|
501
|
+
if (this.performanceMetrics.totalSearches > 100) {
|
|
502
|
+
return 'read-heavy';
|
|
503
|
+
}
|
|
504
|
+
return 'balanced';
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* Cleanup system resources
|
|
508
|
+
*/
|
|
509
|
+
cleanup() {
|
|
510
|
+
this.distributedSearch?.cleanup();
|
|
511
|
+
this.cacheManager?.clear();
|
|
512
|
+
this.readOnlyOptimizations?.cleanup();
|
|
513
|
+
this.partitionedIndex?.clear();
|
|
514
|
+
this.autoConfig.resetCache();
|
|
515
|
+
console.log('Scaled HNSW System cleaned up');
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
// Export convenience factory functions
|
|
519
|
+
/**
|
|
520
|
+
* Create a fully auto-configured Brainy system - minimal setup required!
|
|
521
|
+
* Just provide S3 config if you want persistence beyond the current session
|
|
522
|
+
*/
|
|
523
|
+
export function createAutoBrainy(s3Config) {
|
|
524
|
+
return new ScaledHNSWSystem({
|
|
525
|
+
s3Config: s3Config ? {
|
|
526
|
+
bucketName: s3Config.bucketName,
|
|
527
|
+
region: s3Config.region || 'us-east-1',
|
|
528
|
+
accessKeyId: s3Config.accessKeyId,
|
|
529
|
+
secretAccessKey: s3Config.secretAccessKey
|
|
530
|
+
} : undefined,
|
|
531
|
+
autoConfigureEnvironment: true,
|
|
532
|
+
learningEnabled: true
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Create a Brainy system optimized for specific scenarios
|
|
537
|
+
*/
|
|
538
|
+
export async function createQuickBrainy(scenario, s3Config) {
|
|
539
|
+
const { getQuickSetup } = await import('../utils/autoConfiguration.js');
|
|
540
|
+
const quickConfig = await getQuickSetup(scenario);
|
|
541
|
+
return new ScaledHNSWSystem({
|
|
542
|
+
...quickConfig,
|
|
543
|
+
s3Config: s3Config && quickConfig.s3Required ? {
|
|
544
|
+
bucketName: s3Config.bucketName,
|
|
545
|
+
region: s3Config.region || 'us-east-1',
|
|
546
|
+
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
|
|
547
|
+
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY
|
|
548
|
+
} : undefined,
|
|
549
|
+
autoConfigureEnvironment: true,
|
|
550
|
+
learningEnabled: true
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* Legacy factory function - still works but consider using createAutoBrainy() instead
|
|
555
|
+
*/
|
|
556
|
+
export function createScaledHNSWSystem(config = {}) {
|
|
557
|
+
return new ScaledHNSWSystem(config);
|
|
558
|
+
}
|
|
559
|
+
//# sourceMappingURL=scaledHNSWSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaledHNSWSystem.js","sourceRoot":"","sources":["../../src/hnsw/scaledHNSWSystem.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,10 +10,12 @@ import { euclideanDistance, cosineDistance, manhattanDistance, dotProductDistanc
|
|
|
10
10
|
export { euclideanDistance, cosineDistance, manhattanDistance, dotProductDistance, getStatistics };
|
|
11
11
|
import { UniversalSentenceEncoder, createEmbeddingFunction, createTensorFlowEmbeddingFunction, createThreadedEmbeddingFunction, defaultEmbeddingFunction } from './utils/embedding.js';
|
|
12
12
|
import { executeInThread, cleanupWorkerPools } from './utils/workerUtils.js';
|
|
13
|
+
import { logger, LogLevel, configureLogger, createModuleLogger } from './utils/logger.js';
|
|
13
14
|
import { isBrowser, isNode, isWebWorker, areWebWorkersAvailable, areWorkerThreadsAvailable, areWorkerThreadsAvailableSync, isThreadingAvailable, isThreadingAvailableAsync } from './utils/environment.js';
|
|
14
|
-
export { UniversalSentenceEncoder, createEmbeddingFunction, createTensorFlowEmbeddingFunction, createThreadedEmbeddingFunction, defaultEmbeddingFunction, executeInThread, cleanupWorkerPools, isBrowser, isNode, isWebWorker, areWebWorkersAvailable, areWorkerThreadsAvailable, areWorkerThreadsAvailableSync, isThreadingAvailable, isThreadingAvailableAsync };
|
|
15
|
-
import { OPFSStorage, MemoryStorage,
|
|
16
|
-
export { OPFSStorage, MemoryStorage,
|
|
15
|
+
export { UniversalSentenceEncoder, createEmbeddingFunction, createTensorFlowEmbeddingFunction, createThreadedEmbeddingFunction, defaultEmbeddingFunction, executeInThread, cleanupWorkerPools, isBrowser, isNode, isWebWorker, areWebWorkersAvailable, areWorkerThreadsAvailable, areWorkerThreadsAvailableSync, isThreadingAvailable, isThreadingAvailableAsync, logger, LogLevel, configureLogger, createModuleLogger };
|
|
16
|
+
import { OPFSStorage, MemoryStorage, R2Storage, S3CompatibleStorage, createStorage } from './storage/storageFactory.js';
|
|
17
|
+
export { OPFSStorage, MemoryStorage, R2Storage, S3CompatibleStorage, createStorage };
|
|
18
|
+
export { FileSystemStorage } from './storage/adapters/fileSystemStorage.js';
|
|
17
19
|
import { Pipeline, pipeline, augmentationPipeline, ExecutionMode, PipelineOptions, PipelineResult, executeStreamlined, executeByType, executeSingle, processStaticData, processStreamingData, createPipeline, createStreamingPipeline, StreamlinedExecutionMode, StreamlinedPipelineOptions, StreamlinedPipelineResult } from './pipeline.js';
|
|
18
20
|
import { SequentialPipeline, sequentialPipeline, SequentialPipelineOptions } from './sequentialPipeline.js';
|
|
19
21
|
import { createSenseAugmentation, addWebSocketSupport, executeAugmentation, loadAugmentationModule, AugmentationOptions } from './augmentationFactory.js';
|