@soulcraft/brainy 0.36.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +712 -1474
  2. package/dist/brainyData.d.ts +37 -0
  3. package/dist/distributed/configManager.d.ts +97 -0
  4. package/dist/distributed/domainDetector.d.ts +77 -0
  5. package/dist/distributed/hashPartitioner.d.ts +77 -0
  6. package/dist/distributed/healthMonitor.d.ts +110 -0
  7. package/dist/distributed/index.d.ts +10 -0
  8. package/dist/distributed/operationalModes.d.ts +104 -0
  9. package/dist/hnsw/distributedSearch.d.ts +118 -0
  10. package/dist/hnsw/distributedSearch.d.ts.map +1 -0
  11. package/dist/hnsw/optimizedHNSWIndex.d.ts +97 -0
  12. package/dist/hnsw/optimizedHNSWIndex.d.ts.map +1 -0
  13. package/dist/hnsw/partitionedHNSWIndex.d.ts +101 -0
  14. package/dist/hnsw/partitionedHNSWIndex.d.ts.map +1 -0
  15. package/dist/hnsw/scaledHNSWSystem.d.ts +142 -0
  16. package/dist/hnsw/scaledHNSWSystem.d.ts.map +1 -0
  17. package/dist/storage/adapters/batchS3Operations.d.ts +71 -0
  18. package/dist/storage/adapters/batchS3Operations.d.ts.map +1 -0
  19. package/dist/storage/enhancedCacheManager.d.ts +141 -0
  20. package/dist/storage/enhancedCacheManager.d.ts.map +1 -0
  21. package/dist/storage/readOnlyOptimizations.d.ts +133 -0
  22. package/dist/storage/readOnlyOptimizations.d.ts.map +1 -0
  23. package/dist/types/distributedTypes.d.ts +197 -0
  24. package/dist/types/distributedTypes.d.ts.map +1 -0
  25. package/dist/unified.js +1383 -2
  26. package/dist/unified.min.js +991 -991
  27. package/dist/utils/autoConfiguration.d.ts +125 -0
  28. package/dist/utils/autoConfiguration.d.ts.map +1 -0
  29. package/dist/utils/crypto.d.ts +25 -0
  30. package/dist/utils/crypto.d.ts.map +1 -0
  31. package/package.json +1 -1
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Optimized HNSW Index for Large-Scale Vector Search
3
+ * Implements dynamic parameter tuning and performance optimizations
4
+ */
5
+ import { DistanceFunction, HNSWConfig, Vector, VectorDocument } from '../coreTypes.js';
6
+ import { HNSWIndex } from './hnswIndex.js';
7
+ export interface OptimizedHNSWConfig extends HNSWConfig {
8
+ dynamicParameterTuning?: boolean;
9
+ targetSearchLatency?: number;
10
+ targetRecall?: number;
11
+ maxNodes?: number;
12
+ memoryBudget?: number;
13
+ diskCacheEnabled?: boolean;
14
+ compressionEnabled?: boolean;
15
+ performanceTracking?: boolean;
16
+ adaptiveEfSearch?: boolean;
17
+ levelMultiplier?: number;
18
+ seedConnections?: number;
19
+ pruningStrategy?: 'simple' | 'diverse' | 'hybrid';
20
+ }
21
+ interface PerformanceMetrics {
22
+ averageSearchTime: number;
23
+ averageRecall: number;
24
+ memoryUsage: number;
25
+ indexSize: number;
26
+ apiCalls: number;
27
+ cacheHitRate: number;
28
+ }
29
+ interface DynamicParameters {
30
+ efSearch: number;
31
+ efConstruction: number;
32
+ M: number;
33
+ ml: number;
34
+ }
35
+ /**
36
+ * Optimized HNSW Index with dynamic parameter tuning for large datasets
37
+ */
38
+ export declare class OptimizedHNSWIndex extends HNSWIndex {
39
+ private optimizedConfig;
40
+ private performanceMetrics;
41
+ private dynamicParams;
42
+ private searchHistory;
43
+ private parameterTuningInterval?;
44
+ constructor(config?: Partial<OptimizedHNSWConfig>, distanceFunction?: DistanceFunction);
45
+ /**
46
+ * Optimized search with dynamic parameter adjustment
47
+ */
48
+ search(queryVector: Vector, k?: number): Promise<Array<[string, number]>>;
49
+ /**
50
+ * Dynamically adjust efSearch based on performance requirements
51
+ */
52
+ private adjustEfSearch;
53
+ /**
54
+ * Record search performance metrics
55
+ */
56
+ private recordSearchMetrics;
57
+ /**
58
+ * Check memory usage and trigger optimizations
59
+ */
60
+ private checkMemoryUsage;
61
+ /**
62
+ * Compress index to reduce memory usage (placeholder)
63
+ */
64
+ private compressIndex;
65
+ /**
66
+ * Start automatic parameter tuning
67
+ */
68
+ private startParameterTuning;
69
+ /**
70
+ * Automatic parameter tuning based on performance metrics
71
+ */
72
+ private tuneParameters;
73
+ /**
74
+ * Get optimized configuration recommendations for current dataset size
75
+ */
76
+ getOptimizedConfig(): OptimizedHNSWConfig;
77
+ /**
78
+ * Get current performance metrics
79
+ */
80
+ getPerformanceMetrics(): PerformanceMetrics & {
81
+ currentParams: DynamicParameters;
82
+ searchHistorySize: number;
83
+ };
84
+ /**
85
+ * Apply optimized bulk insertion strategy
86
+ */
87
+ bulkInsert(items: VectorDocument[]): Promise<string[]>;
88
+ /**
89
+ * Optimize insertion order to improve index quality
90
+ */
91
+ private optimizeInsertionOrder;
92
+ /**
93
+ * Cleanup resources
94
+ */
95
+ destroy(): void;
96
+ }
97
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimizedHNSWIndex.d.ts","sourceRoot":"","sources":["../../src/hnsw/optimizedHNSWIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,EAChB,UAAU,EAEV,MAAM,EACN,cAAc,EACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IAErD,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IAGrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAG5B,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAG1B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;CAClD;AAED,UAAU,kBAAkB;IAC1B,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,CAAC,EAAE,MAAM,CAAA;IACT,EAAE,EAAE,MAAM,CAAA;CACX;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,aAAa,CAA+D;IACpF,OAAO,CAAC,uBAAuB,CAAC,CAAgB;gBAG9C,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM,EACzC,gBAAgB,GAAE,gBAAoC;IA+DxD;;OAEG;IACU,MAAM,CACjB,WAAW,EAAE,MAAM,EACnB,CAAC,GAAE,MAAW,GACb,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAyCnC;;OAEG;IACH,OAAO,CAAC,cAAc;IA+BtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;IACI,kBAAkB,IAAI,mBAAmB;IA6ChD;;OAEG;IACI,qBAAqB,IAAI,kBAAkB,GAAG;QACnD,aAAa,EAAE,iBAAiB,CAAA;QAChC,iBAAiB,EAAE,MAAM,CAAA;KAC1B;IAQD;;OAEG;IACU,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwCnE;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;OAEG;IACI,OAAO,IAAI,IAAI;CAKvB"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Partitioned HNSW Index for Large-Scale Vector Search
3
+ * Implements sharding strategies to handle millions of vectors efficiently
4
+ */
5
+ import { DistanceFunction, HNSWConfig, Vector, VectorDocument } from '../coreTypes.js';
6
+ export interface PartitionConfig {
7
+ maxNodesPerPartition: number;
8
+ partitionStrategy: 'semantic' | 'hash';
9
+ semanticClusters?: number;
10
+ autoTuneSemanticClusters?: boolean;
11
+ }
12
+ export interface PartitionMetadata {
13
+ id: string;
14
+ nodeCount: number;
15
+ bounds?: {
16
+ centroid: Vector;
17
+ radius: number;
18
+ };
19
+ strategy: string;
20
+ created: Date;
21
+ }
22
+ /**
23
+ * Partitioned HNSW Index that splits large datasets across multiple smaller indices
24
+ * This enables efficient search across millions of vectors by reducing memory usage
25
+ * and parallelizing search operations
26
+ */
27
+ export declare class PartitionedHNSWIndex {
28
+ private partitions;
29
+ private partitionMetadata;
30
+ private config;
31
+ private hnswConfig;
32
+ private distanceFunction;
33
+ private dimension;
34
+ private nextPartitionId;
35
+ constructor(partitionConfig?: Partial<PartitionConfig>, hnswConfig?: Partial<HNSWConfig>, distanceFunction?: DistanceFunction);
36
+ /**
37
+ * Add a vector to the partitioned index
38
+ */
39
+ addItem(item: VectorDocument): Promise<string>;
40
+ /**
41
+ * Search across all partitions for nearest neighbors
42
+ */
43
+ search(queryVector: Vector, k?: number, searchScope?: {
44
+ partitionIds?: string[];
45
+ maxPartitions?: number;
46
+ }): Promise<Array<[string, number]>>;
47
+ /**
48
+ * Select the appropriate partition for a new item
49
+ * Automatically chooses semantic partitioning when beneficial, falls back to hash
50
+ */
51
+ private selectPartition;
52
+ /**
53
+ * Hash-based partitioning for even distribution
54
+ */
55
+ private hashPartition;
56
+ /**
57
+ * Semantic clustering partitioning
58
+ */
59
+ private semanticPartition;
60
+ /**
61
+ * Auto-tune semantic clusters based on dataset size and performance
62
+ */
63
+ private autoTuneSemanticClusters;
64
+ /**
65
+ * Select which partitions to search based on query
66
+ */
67
+ private selectSearchPartitions;
68
+ /**
69
+ * Update partition bounds for semantic clustering
70
+ */
71
+ private updatePartitionBounds;
72
+ /**
73
+ * Split an overgrown partition into smaller partitions
74
+ */
75
+ private splitPartition;
76
+ /**
77
+ * Simple hash function for consistent partitioning
78
+ */
79
+ private simpleHash;
80
+ /**
81
+ * Get partition statistics
82
+ */
83
+ getPartitionStats(): {
84
+ totalPartitions: number;
85
+ totalNodes: number;
86
+ averageNodesPerPartition: number;
87
+ partitionDetails: PartitionMetadata[];
88
+ };
89
+ /**
90
+ * Remove an item from the index
91
+ */
92
+ removeItem(id: string): Promise<boolean>;
93
+ /**
94
+ * Clear all partitions
95
+ */
96
+ clear(): void;
97
+ /**
98
+ * Get total size across all partitions
99
+ */
100
+ size(): number;
101
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partitionedHNSWIndex.d.ts","sourceRoot":"","sources":["../../src/hnsw/partitionedHNSWIndex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,EAChB,UAAU,EAEV,MAAM,EACN,cAAc,EACf,MAAM,iBAAiB,CAAA;AAIxB,MAAM,WAAW,eAAe;IAC9B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,iBAAiB,EAAE,UAAU,GAAG,MAAM,CAAA;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;KACf,CAAA;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,IAAI,CAAA;CACd;AAED;;;;GAIG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,iBAAiB,CAA4C;IACrE,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,eAAe,CAAI;gBAGzB,eAAe,GAAE,OAAO,CAAC,eAAe,CAAM,EAC9C,UAAU,GAAE,OAAO,CAAC,UAAU,CAAM,EACpC,gBAAgB,GAAE,gBAAoC;IAsBxD;;OAEG;IACU,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IA+C3D;;OAEG;IACU,MAAM,CACjB,WAAW,EAAE,MAAM,EACnB,CAAC,GAAE,MAAW,EACd,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;QACvB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,GACA,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IA+BnC;;;OAGG;YACW,eAAe;IAgB7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;YACW,iBAAiB;IAwB/B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA0BhC;;OAEG;YACW,sBAAsB;IAwCpC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwB7B;;OAEG;YACW,cAAc;IAc5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACI,iBAAiB,IAAI;QAC1B,eAAe,EAAE,MAAM,CAAA;QACvB,UAAU,EAAE,MAAM,CAAA;QAClB,wBAAwB,EAAE,MAAM,CAAA;QAChC,gBAAgB,EAAE,iBAAiB,EAAE,CAAA;KACtC;IAYD;;OAEG;IACU,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAarD;;OAEG;IACI,KAAK,IAAI,IAAI;IASpB;;OAEG;IACI,IAAI,IAAI,MAAM;CAGtB"}
@@ -0,0 +1,142 @@
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 { Vector, VectorDocument } from '../coreTypes.js';
6
+ import { PartitionConfig } from './partitionedHNSWIndex.js';
7
+ import { OptimizedHNSWConfig } from './optimizedHNSWIndex.js';
8
+ import { SearchStrategy } from './distributedSearch.js';
9
+ export interface ScaledHNSWConfig {
10
+ expectedDatasetSize?: number;
11
+ maxMemoryUsage?: number;
12
+ targetSearchLatency?: number;
13
+ s3Config?: {
14
+ bucketName: string;
15
+ region: string;
16
+ endpoint?: string;
17
+ accessKeyId?: string;
18
+ secretAccessKey?: string;
19
+ };
20
+ autoConfigureEnvironment?: boolean;
21
+ learningEnabled?: boolean;
22
+ enablePartitioning?: boolean;
23
+ enableCompression?: boolean;
24
+ enableDistributedSearch?: boolean;
25
+ enablePredictiveCaching?: boolean;
26
+ partitionConfig?: Partial<PartitionConfig>;
27
+ hnswConfig?: Partial<OptimizedHNSWConfig>;
28
+ readOnlyMode?: boolean;
29
+ }
30
+ /**
31
+ * High-performance HNSW system with all optimizations integrated
32
+ * Handles datasets from thousands to millions of vectors
33
+ */
34
+ export declare class ScaledHNSWSystem {
35
+ private config;
36
+ private autoConfig;
37
+ private partitionedIndex?;
38
+ private distributedSearch?;
39
+ private cacheManager?;
40
+ private batchOperations?;
41
+ private readOnlyOptimizations?;
42
+ private performanceMetrics;
43
+ constructor(config?: ScaledHNSWConfig);
44
+ /**
45
+ * Initialize the optimized system based on configuration
46
+ */
47
+ private initializeOptimizedSystem;
48
+ /**
49
+ * Calculate optimal configuration based on dataset size and constraints
50
+ */
51
+ private calculateOptimalConfiguration;
52
+ /**
53
+ * Add vector to the scaled system
54
+ */
55
+ addVector(item: VectorDocument): Promise<string>;
56
+ /**
57
+ * Bulk insert vectors with optimizations
58
+ */
59
+ bulkInsert(items: VectorDocument[]): Promise<string[]>;
60
+ /**
61
+ * High-performance vector search with all optimizations
62
+ */
63
+ search(queryVector: Vector, k?: number, options?: {
64
+ strategy?: SearchStrategy;
65
+ useCache?: boolean;
66
+ maxPartitions?: number;
67
+ }): Promise<Array<[string, number]>>;
68
+ /**
69
+ * Get system performance metrics
70
+ */
71
+ getPerformanceMetrics(): typeof this.performanceMetrics & {
72
+ partitionStats?: any;
73
+ cacheStats?: any;
74
+ compressionStats?: any;
75
+ distributedSearchStats?: any;
76
+ };
77
+ /**
78
+ * Optimize insertion order for better index quality
79
+ */
80
+ private optimizeInsertionOrder;
81
+ /**
82
+ * Calculate optimal batch size based on system resources
83
+ */
84
+ private calculateOptimalBatchSize;
85
+ /**
86
+ * Update search performance metrics
87
+ */
88
+ private updateSearchMetrics;
89
+ /**
90
+ * Estimate current memory usage
91
+ */
92
+ private estimateMemoryUsage;
93
+ /**
94
+ * Generate performance report
95
+ */
96
+ generatePerformanceReport(): string;
97
+ /**
98
+ * Get overall system status
99
+ */
100
+ private getSystemStatus;
101
+ /**
102
+ * Check if adaptive learning should be triggered
103
+ */
104
+ private shouldTriggerLearning;
105
+ /**
106
+ * Adaptively learn from performance and adjust configuration
107
+ */
108
+ private adaptivelyLearnFromPerformance;
109
+ /**
110
+ * Update dataset analysis for better auto-configuration
111
+ */
112
+ updateDatasetAnalysis(vectorCount: number, vectorDimension?: number): Promise<void>;
113
+ /**
114
+ * Infer access patterns from current metrics
115
+ */
116
+ private inferAccessPatterns;
117
+ /**
118
+ * Cleanup system resources
119
+ */
120
+ cleanup(): void;
121
+ }
122
+ /**
123
+ * Create a fully auto-configured Brainy system - minimal setup required!
124
+ * Just provide S3 config if you want persistence beyond the current session
125
+ */
126
+ export declare function createAutoBrainy(s3Config?: {
127
+ bucketName: string;
128
+ region?: string;
129
+ accessKeyId?: string;
130
+ secretAccessKey?: string;
131
+ }): ScaledHNSWSystem;
132
+ /**
133
+ * Create a Brainy system optimized for specific scenarios
134
+ */
135
+ export declare function createQuickBrainy(scenario: 'small' | 'medium' | 'large' | 'enterprise', s3Config?: {
136
+ bucketName: string;
137
+ region?: string;
138
+ }): Promise<ScaledHNSWSystem>;
139
+ /**
140
+ * Legacy factory function - still works but consider using createAutoBrainy() instead
141
+ */
142
+ export declare function createScaledHNSWSystem(config?: ScaledHNSWConfig): ScaledHNSWSystem;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaledHNSWSystem.d.ts","sourceRoot":"","sources":["../../src/hnsw/scaledHNSWSystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Enhanced Batch S3 Operations for High-Performance Vector Retrieval
3
+ * Implements optimized batch operations to reduce S3 API calls and latency
4
+ */
5
+ import { HNSWNoun } from '../../coreTypes.js';
6
+ type S3Client = any;
7
+ export interface BatchRetrievalOptions {
8
+ maxConcurrency?: number;
9
+ prefetchSize?: number;
10
+ useS3Select?: boolean;
11
+ compressionEnabled?: boolean;
12
+ }
13
+ export interface BatchResult<T> {
14
+ items: Map<string, T>;
15
+ errors: Map<string, Error>;
16
+ statistics: {
17
+ totalRequested: number;
18
+ totalRetrieved: number;
19
+ totalErrors: number;
20
+ duration: number;
21
+ apiCalls: number;
22
+ };
23
+ }
24
+ /**
25
+ * High-performance batch operations for S3-compatible storage
26
+ * Optimizes retrieval patterns for HNSW search operations
27
+ */
28
+ export declare class BatchS3Operations {
29
+ private s3Client;
30
+ private bucketName;
31
+ private options;
32
+ constructor(s3Client: S3Client, bucketName: string, options?: BatchRetrievalOptions);
33
+ /**
34
+ * Batch retrieve HNSW nodes with intelligent prefetching
35
+ */
36
+ batchGetNodes(nodeIds: string[], prefix?: string): Promise<BatchResult<HNSWNoun>>;
37
+ /**
38
+ * Parallel GetObject operations for small batches
39
+ */
40
+ private parallelGetObjects;
41
+ /**
42
+ * Chunked parallel retrieval with intelligent batching
43
+ */
44
+ private chunkedParallelGet;
45
+ /**
46
+ * List-based batch retrieval for large datasets
47
+ * Uses S3 ListObjects to reduce API calls
48
+ */
49
+ private listBasedBatchGet;
50
+ /**
51
+ * Intelligent prefetch based on HNSW graph connectivity
52
+ */
53
+ prefetchConnectedNodes(currentNodeIds: string[], connectionMap: Map<string, Set<string>>, prefix?: string): Promise<BatchResult<HNSWNoun>>;
54
+ /**
55
+ * S3 Select-based retrieval for filtered queries
56
+ */
57
+ selectiveRetrieve(prefix: string, filter: {
58
+ vectorDimension?: number;
59
+ metadataKey?: string;
60
+ metadataValue?: any;
61
+ }): Promise<BatchResult<HNSWNoun>>;
62
+ /**
63
+ * Parse stored object from JSON string
64
+ */
65
+ private parseStoredObject;
66
+ /**
67
+ * Utility function to chunk arrays
68
+ */
69
+ private chunkArray;
70
+ }
71
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchS3Operations.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/batchS3Operations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAY,MAAM,oBAAoB,CAAA;AAGvD,KAAK,QAAQ,GAAG,GAAG,CAAA;AAInB,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC1B,UAAU,EAAE;QACV,cAAc,EAAE,MAAM,CAAA;QACtB,cAAc,EAAE,MAAM,CAAA;QACtB,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAuB;gBAGpC,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,qBAA0B;IAarC;;OAEG;IACU,aAAa,CACxB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,GAAE,MAAiB,GACxB,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAmCjC;;OAEG;YACW,kBAAkB;IAwChC;;OAEG;YACW,kBAAkB;IAuBhC;;;OAGG;YACW,iBAAiB;IA4E/B;;OAEG;IACU,sBAAsB,CACjC,cAAc,EAAE,MAAM,EAAE,EACxB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACvC,MAAM,GAAE,MAAiB,GACxB,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAmCjC;;OAEG;IACU,iBAAiB,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE;QACN,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,aAAa,CAAC,EAAE,GAAG,CAAA;KACpB,GACA,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAyBjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,OAAO,CAAC,UAAU;CAOnB"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Enhanced Multi-Level Cache Manager with Predictive Prefetching
3
+ * Optimized for HNSW search patterns and large-scale vector operations
4
+ */
5
+ import { HNSWNoun, HNSWVerb } from '../coreTypes.js';
6
+ import { BatchS3Operations } from './adapters/batchS3Operations.js';
7
+ declare enum PrefetchStrategy {
8
+ GRAPH_CONNECTIVITY = "connectivity",
9
+ VECTOR_SIMILARITY = "similarity",
10
+ ACCESS_PATTERN = "pattern",
11
+ HYBRID = "hybrid"
12
+ }
13
+ interface EnhancedCacheConfig {
14
+ hotCacheMaxSize?: number;
15
+ hotCacheEvictionThreshold?: number;
16
+ warmCacheMaxSize?: number;
17
+ warmCacheTTL?: number;
18
+ prefetchEnabled?: boolean;
19
+ prefetchStrategy?: PrefetchStrategy;
20
+ prefetchBatchSize?: number;
21
+ predictionLookahead?: number;
22
+ similarityThreshold?: number;
23
+ maxSimilarityDistance?: number;
24
+ backgroundOptimization?: boolean;
25
+ statisticsCollection?: boolean;
26
+ }
27
+ /**
28
+ * Enhanced cache manager with intelligent prefetching for HNSW operations
29
+ * Provides multi-level caching optimized for vector search workloads
30
+ */
31
+ export declare class EnhancedCacheManager<T extends HNSWNoun | HNSWVerb> {
32
+ private hotCache;
33
+ private warmCache;
34
+ private prefetchQueue;
35
+ private accessPatterns;
36
+ private vectorIndex;
37
+ private config;
38
+ private batchOperations?;
39
+ private storageAdapter?;
40
+ private prefetchInProgress;
41
+ private stats;
42
+ constructor(config?: EnhancedCacheConfig);
43
+ /**
44
+ * Set storage adapters for warm/cold storage operations
45
+ */
46
+ setStorageAdapters(storageAdapter: any, batchOperations?: BatchS3Operations): void;
47
+ /**
48
+ * Get item with intelligent prefetching
49
+ */
50
+ get(id: string): Promise<T | null>;
51
+ /**
52
+ * Get multiple items efficiently with batch operations
53
+ */
54
+ getMany(ids: string[]): Promise<Map<string, T>>;
55
+ /**
56
+ * Set item in cache with metadata
57
+ */
58
+ set(id: string, item: T): Promise<void>;
59
+ /**
60
+ * Intelligent prefetch based on access patterns and graph structure
61
+ */
62
+ private schedulePrefetch;
63
+ /**
64
+ * Predict next nodes based on graph connectivity
65
+ */
66
+ private predictByConnectivity;
67
+ /**
68
+ * Predict next nodes based on vector similarity
69
+ */
70
+ private predictBySimilarity;
71
+ /**
72
+ * Predict based on historical access patterns
73
+ */
74
+ private predictByAccessPattern;
75
+ /**
76
+ * Hybrid prediction combining multiple strategies
77
+ */
78
+ private hybridPrediction;
79
+ /**
80
+ * Execute prefetch operation in background
81
+ */
82
+ private executePrefetch;
83
+ /**
84
+ * Load item from storage adapter
85
+ */
86
+ private loadFromStorage;
87
+ /**
88
+ * Promote frequently accessed item to hot cache
89
+ */
90
+ private promoteToHotCache;
91
+ /**
92
+ * Evict least recently used items from hot cache
93
+ */
94
+ private evictFromHotCache;
95
+ /**
96
+ * Evict expired items from warm cache
97
+ */
98
+ private evictFromWarmCache;
99
+ /**
100
+ * Record access pattern for prediction
101
+ */
102
+ private recordAccess;
103
+ /**
104
+ * Extract connected node IDs from HNSW item
105
+ */
106
+ private extractConnectedNodes;
107
+ /**
108
+ * Check if cache entry is expired
109
+ */
110
+ private isExpired;
111
+ /**
112
+ * Calculate cosine similarity between vectors
113
+ */
114
+ private cosineSimilarity;
115
+ /**
116
+ * Calculate pattern similarity between access patterns
117
+ */
118
+ private patternSimilarity;
119
+ /**
120
+ * Start background optimization process
121
+ */
122
+ private startBackgroundOptimization;
123
+ /**
124
+ * Run background optimization tasks
125
+ */
126
+ private runBackgroundOptimization;
127
+ /**
128
+ * Get cache statistics
129
+ */
130
+ getStats(): typeof this.stats & {
131
+ hotCacheSize: number;
132
+ warmCacheSize: number;
133
+ prefetchQueueSize: number;
134
+ accessPatternsTracked: number;
135
+ };
136
+ /**
137
+ * Clear all caches
138
+ */
139
+ clear(): void;
140
+ }
141
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhancedCacheManager.d.ts","sourceRoot":"","sources":["../../src/storage/enhancedCacheManager.ts"],"names":[],"mappings":"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"}