@soulcraft/brainy 0.31.0 → 0.32.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 CHANGED
@@ -1379,6 +1379,106 @@ terabyte-scale data that can't fit entirely in memory, we provide several approa
1379
1379
 
1380
1380
  For detailed information on how to scale Brainy for large datasets, vector dimension standardization, threading implementation, storage testing, and other technical topics, see our comprehensive [Technical Guides](TECHNICAL_GUIDES.md).
1381
1381
 
1382
+ ## Recent Changes and Performance Improvements
1383
+
1384
+ ### Enhanced Memory Management and Scalability
1385
+
1386
+ Brainy has been significantly improved to handle larger datasets more efficiently:
1387
+
1388
+ - **Pagination Support**: All data retrieval methods now support pagination to avoid loading entire datasets into memory at once. The deprecated `getAllNouns()` and `getAllVerbs()` methods have been replaced with `getNouns()` and `getVerbs()` methods that support pagination, filtering, and cursor-based navigation.
1389
+
1390
+ - **Multi-level Caching**: A sophisticated three-level caching strategy has been implemented:
1391
+ - **Level 1**: Hot cache (most accessed nodes) - RAM (automatically detecting and adjusting in each environment)
1392
+ - **Level 2**: Warm cache (recent nodes) - OPFS, Filesystem or S3 depending on environment
1393
+ - **Level 3**: Cold storage (all nodes) - OPFS, Filesystem or S3 depending on environment
1394
+
1395
+ - **Adaptive Memory Usage**: The system automatically detects available memory and adjusts cache sizes accordingly:
1396
+ - In Node.js: Uses 10% of free memory (minimum 1000 entries)
1397
+ - In browsers: Scales based on device memory (500 entries per GB, minimum 1000)
1398
+
1399
+ - **Intelligent Cache Eviction**: Implements a Least Recently Used (LRU) policy that evicts the oldest 20% of items when the cache reaches the configured threshold.
1400
+
1401
+ - **Prefetching Strategy**: Implements batch prefetching to improve performance while avoiding overwhelming system resources.
1402
+
1403
+ ### S3-Compatible Storage Improvements
1404
+
1405
+ - **Enhanced Cloud Storage**: Improved support for S3-compatible storage services including AWS S3, Cloudflare R2, and others.
1406
+
1407
+ - **Optimized Data Access**: Batch operations and error handling for efficient cloud storage access.
1408
+
1409
+ - **Change Log Management**: Efficient synchronization through change logs to track updates.
1410
+
1411
+ ### Data Compatibility
1412
+
1413
+ Yes, you can use existing data indexed from an old version. Brainy includes robust data migration capabilities:
1414
+
1415
+ - **Vector Regeneration**: If vectors are missing in imported data, they will be automatically created using the embedding function.
1416
+
1417
+ - **HNSW Index Reconstruction**: The system can reconstruct the HNSW index from backup data, ensuring compatibility with previous versions.
1418
+
1419
+ - **Sparse Data Import**: Support for importing sparse data (without vectors) through the `importSparseData()` method.
1420
+
1421
+ ### System Requirements
1422
+
1423
+ #### Default Mode
1424
+
1425
+ - **Memory**:
1426
+ - Minimum: 512MB RAM
1427
+ - Recommended: 2GB+ RAM for medium datasets, 8GB+ for large datasets
1428
+
1429
+ - **CPU**:
1430
+ - Minimum: 2 cores
1431
+ - Recommended: 4+ cores for better performance with parallel operations
1432
+
1433
+ - **Storage**:
1434
+ - Minimum: 1GB available storage
1435
+ - Recommended: Storage space at least 3x the size of your dataset
1436
+
1437
+ #### Read-Only Mode
1438
+
1439
+ Read-only mode prevents all write operations (add, update, delete) and is optimized for search operations.
1440
+
1441
+ - **Memory**:
1442
+ - Minimum: 256MB RAM
1443
+ - Recommended: 1GB+ RAM
1444
+
1445
+ - **CPU**:
1446
+ - Minimum: 1 core
1447
+ - Recommended: 2+ cores
1448
+
1449
+ - **Storage**:
1450
+ - Minimum: Storage space equal to the size of your dataset
1451
+ - Recommended: 2x the size of your dataset for caching
1452
+
1453
+ - **New Feature**: Lazy loading support in read-only mode for improved performance with large datasets.
1454
+
1455
+ #### Write-Only Mode
1456
+
1457
+ Write-only mode prevents all search operations and is optimized for initial data loading or when you want to optimize for write performance.
1458
+
1459
+ - **Memory**:
1460
+ - Minimum: 512MB RAM
1461
+ - Recommended: 2GB+ RAM
1462
+
1463
+ - **CPU**:
1464
+ - Minimum: 2 cores
1465
+ - Recommended: 4+ cores for faster data ingestion
1466
+
1467
+ - **Storage**:
1468
+ - Minimum: Storage space at least 2x the size of your dataset
1469
+ - Recommended: 4x the size of your dataset for optimal performance
1470
+
1471
+ ### Performance Tuning Parameters
1472
+
1473
+ Brainy offers several configuration options for performance tuning:
1474
+
1475
+ - **Hot Cache Size**: Control the maximum number of items to keep in memory.
1476
+ - **Eviction Threshold**: Set the threshold at which cache eviction begins (default: 0.8 or 80% of max size).
1477
+ - **Warm Cache TTL**: Set the time-to-live for items in the warm cache (default: 24 hours).
1478
+ - **Batch Size**: Control the number of items to process in a single batch for operations like prefetching (default: 10).
1479
+
1480
+ These improvements make Brainy more efficient, scalable, and adaptable to different environments and usage patterns.
1481
+
1382
1482
  ## Testing
1383
1483
 
1384
1484
  Brainy uses Vitest for testing. For detailed information about testing in Brainy, including test configuration, scripts, reporting tools, and best practices, see our [Testing Guide](TESTING.md).
@@ -65,6 +65,13 @@ export interface BrainyDataConfig {
65
65
  * When true, all write operations will throw an error
66
66
  */
67
67
  readOnly?: boolean;
68
+ /**
69
+ * Enable lazy loading in read-only mode
70
+ * When true and in read-only mode, the index is not fully loaded during initialization
71
+ * Nodes are loaded on-demand during search operations
72
+ * This improves startup performance for large datasets
73
+ */
74
+ lazyLoadInReadOnlyMode?: boolean;
68
75
  /**
69
76
  * Set the database to write-only mode
70
77
  * When true, the index is not loaded into memory and search operations will throw an error
@@ -183,6 +190,7 @@ export declare class BrainyData<T = any> implements BrainyDataInterface<T> {
183
190
  private distanceFunction;
184
191
  private requestPersistentStorage;
185
192
  private readOnly;
193
+ private lazyLoadInReadOnlyMode;
186
194
  private writeOnly;
187
195
  private storageConfig;
188
196
  private useOptimizedIndex;
@@ -92,6 +92,7 @@ export interface HNSWConfig {
92
92
  efConstruction: number;
93
93
  efSearch: number;
94
94
  ml: number;
95
+ useDiskBasedIndex?: boolean;
95
96
  }
96
97
  /**
97
98
  * Storage interface for persistence
@@ -58,6 +58,8 @@ export declare class S3CompatibleStorage extends BaseStorage {
58
58
  private activeLocks;
59
59
  private changeLogPrefix;
60
60
  private operationExecutors;
61
+ private nounCacheManager;
62
+ private verbCacheManager;
61
63
  /**
62
64
  * Initialize the storage adapter
63
65
  * @param options Configuration options for the S3-compatible storage
@@ -72,6 +74,11 @@ export declare class S3CompatibleStorage extends BaseStorage {
72
74
  sessionToken?: string;
73
75
  serviceType?: string;
74
76
  operationConfig?: OperationConfig;
77
+ cacheConfig?: {
78
+ hotCacheMaxSize?: number;
79
+ hotCacheEvictionThreshold?: number;
80
+ warmCacheTTL?: number;
81
+ };
75
82
  });
76
83
  /**
77
84
  * Initialize the storage adapter
@@ -97,10 +104,27 @@ export declare class S3CompatibleStorage extends BaseStorage {
97
104
  * Get all nouns from storage (internal implementation)
98
105
  */
99
106
  protected getAllNouns_internal(): Promise<HNSWNoun[]>;
107
+ private nodeCache;
100
108
  /**
101
109
  * Get all nodes from storage
110
+ * @deprecated This method is deprecated and will be removed in a future version.
111
+ * It can cause memory issues with large datasets. Use getNodesWithPagination() instead.
102
112
  */
103
113
  protected getAllNodes(): Promise<HNSWNode[]>;
114
+ /**
115
+ * Get nodes with pagination
116
+ * @param options Pagination options
117
+ * @returns Promise that resolves to a paginated result of nodes
118
+ */
119
+ protected getNodesWithPagination(options?: {
120
+ limit?: number;
121
+ cursor?: string;
122
+ useCache?: boolean;
123
+ }): Promise<{
124
+ nodes: HNSWNode[];
125
+ hasMore: boolean;
126
+ nextCursor?: string;
127
+ }>;
104
128
  /**
105
129
  * Get nouns by noun type (internal implementation)
106
130
  * @param nounType The noun type to filter by
@@ -139,12 +163,63 @@ export declare class S3CompatibleStorage extends BaseStorage {
139
163
  protected getEdge(id: string): Promise<Edge | null>;
140
164
  /**
141
165
  * Get all verbs from storage (internal implementation)
166
+ * @deprecated This method is deprecated and will be removed in a future version.
167
+ * It can cause memory issues with large datasets. Use getVerbsWithPagination() instead.
142
168
  */
143
169
  protected getAllVerbs_internal(): Promise<GraphVerb[]>;
144
170
  /**
145
171
  * Get all edges from storage
172
+ * @deprecated This method is deprecated and will be removed in a future version.
173
+ * It can cause memory issues with large datasets. Use getEdgesWithPagination() instead.
146
174
  */
147
175
  protected getAllEdges(): Promise<Edge[]>;
176
+ /**
177
+ * Get edges with pagination
178
+ * @param options Pagination options
179
+ * @returns Promise that resolves to a paginated result of edges
180
+ */
181
+ protected getEdgesWithPagination(options?: {
182
+ limit?: number;
183
+ cursor?: string;
184
+ useCache?: boolean;
185
+ filter?: {
186
+ sourceId?: string;
187
+ targetId?: string;
188
+ type?: string;
189
+ };
190
+ }): Promise<{
191
+ edges: Edge[];
192
+ hasMore: boolean;
193
+ nextCursor?: string;
194
+ }>;
195
+ /**
196
+ * Filter an edge based on filter criteria
197
+ * @param edge The edge to filter
198
+ * @param filter The filter criteria
199
+ * @returns True if the edge matches the filter, false otherwise
200
+ */
201
+ private filterEdge;
202
+ /**
203
+ * Get verbs with pagination
204
+ * @param options Pagination options
205
+ * @returns Promise that resolves to a paginated result of verbs
206
+ */
207
+ getVerbsWithPagination(options?: {
208
+ limit?: number;
209
+ cursor?: string;
210
+ filter?: {
211
+ verbType?: string | string[];
212
+ sourceId?: string | string[];
213
+ targetId?: string | string[];
214
+ service?: string | string[];
215
+ metadata?: Record<string, any>;
216
+ };
217
+ }): Promise<{
218
+ items: GraphVerb[];
219
+ totalCount?: number;
220
+ hasMore: boolean;
221
+ nextCursor?: string;
222
+ }>;
148
223
  /**
149
224
  * Get verbs by source (internal implementation)
150
225
  */
@@ -1 +1 @@
1
- {"version":3,"file":"s3CompatibleStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/s3CompatibleStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"s3CompatibleStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/s3CompatibleStorage.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,8 @@ export declare abstract class BaseStorage extends BaseStorageAdapter {
34
34
  getNoun(id: string): Promise<HNSWNoun | null>;
35
35
  /**
36
36
  * Get all nouns from storage
37
+ * @deprecated This method is deprecated and will be removed in a future version.
38
+ * It can cause memory issues with large datasets. Use getNouns() with pagination instead.
37
39
  */
38
40
  getAllNouns(): Promise<HNSWNoun[]>;
39
41
  /**
@@ -56,6 +58,8 @@ export declare abstract class BaseStorage extends BaseStorageAdapter {
56
58
  getVerb(id: string): Promise<GraphVerb | null>;
57
59
  /**
58
60
  * Get all verbs from storage
61
+ * @deprecated This method is deprecated and will be removed in a future version.
62
+ * It can cause memory issues with large datasets. Use getVerbs() with pagination instead.
59
63
  */
60
64
  getAllVerbs(): Promise<GraphVerb[]>;
61
65
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"baseStorage.d.ts","sourceRoot":"","sources":["../../src/storage/baseStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseStorage.d.ts","sourceRoot":"","sources":["../../src/storage/baseStorage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAGrE,eAAO,MAAM,SAAS,UAAU,CAAA;AAChC,eAAO,MAAM,SAAS,UAAU,CAAA;AAChC,eAAO,MAAM,YAAY,aAAa,CAAA;AACtC,eAAO,MAAM,SAAS,UAAU,CAAA;AAChC,eAAO,MAAM,cAAc,eAAe,CAAA;AAE1C;;;GAGG;AACH,8BAAsB,WAAY,SAAQ,kBAAkB;IAC1D,SAAS,CAAC,aAAa,UAAQ;IAE/B;;;OAGG;aACa,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAErC;;OAEG;cACa,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlD;;OAEG;IACU,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpD;;OAEG;IACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAK1D;;;;OAIG;IACU,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAM/C;;;;OAIG;IACU,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKtE;;OAEG;IACU,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD;;OAEG;IACU,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrD;;OAEG;IACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAK3D;;;;OAIG;IACU,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAMhD;;OAEG;IACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKrE;;OAEG;IACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKrE;;OAEG;IACU,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK/D;;;;OAIG;IACU,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC9B,UAAU,CAAC,EAAE;YACX,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,KAAK,CAAC,EAAE,MAAM,CAAA;YACd,MAAM,CAAC,EAAE,MAAM,CAAA;SAChB,CAAA;QACD,MAAM,CAAC,EAAE;YACP,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;YAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;YAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAC/B,CAAA;KACF,GAAG,OAAO,CAAC;QACV,KAAK,EAAE,QAAQ,EAAE,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,OAAO,EAAE,OAAO,CAAA;QAChB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC;IAwLF;;;;OAIG;IACU,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC9B,UAAU,CAAC,EAAE;YACX,MAAM,CAAC,EAAE,MAAM,CAAA;YACf,KAAK,CAAC,EAAE,MAAM,CAAA;YACd,MAAM,CAAC,EAAE,MAAM,CAAA;SAChB,CAAA;QACD,MAAM,CAAC,EAAE;YACP,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;YAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;YAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;YAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;YAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAC/B,CAAA;KACF,GAAG,OAAO,CAAC;QACV,KAAK,EAAE,SAAS,EAAE,CAAA;QAClB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,OAAO,EAAE,OAAO,CAAA;QAChB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAC;IAoRF;;OAEG;IACU,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD;;;OAGG;aACa,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAEtC;;;OAGG;aACa,gBAAgB,IAAI,OAAO,CAAC;QAC1C,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAC9B,CAAC;IAEF;;;OAGG;aACa,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAEtE;;;OAGG;aACa,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAE5D;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAEzE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAE9D;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAC5C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,EAAE,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAE1E;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAE/D;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAC1C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,EAAE,CAAC;IAEvB;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,yBAAyB,CAC1C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,EAAE,CAAC;IAEvB;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAE9E;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjE;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,EAChD,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,gBAAgB,GAAE,CAAC,KAAK,EAAE,CAAC,KAAK,GAAc,GAC7C,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAQtB;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CACnC,UAAU,EAAE,cAAc,GACzB,OAAO,CAAC,IAAI,CAAC;IAEhB;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CACvE"}
@@ -0,0 +1,250 @@
1
+ /**
2
+ * Multi-level Cache Manager
3
+ *
4
+ * Implements a three-level caching strategy:
5
+ * - Level 1: Hot cache (most accessed nodes) - RAM (automatically detecting and adjusting in each environment)
6
+ * - Level 2: Warm cache (recent nodes) - OPFS, Filesystem or S3 depending on environment
7
+ * - Level 3: Cold storage (all nodes) - OPFS, Filesystem or S3 depending on environment
8
+ */
9
+ import { HNSWNoun, GraphVerb } from '../coreTypes.js';
10
+ declare global {
11
+ interface Navigator {
12
+ deviceMemory?: number;
13
+ }
14
+ interface WorkerGlobalScope {
15
+ storage?: {
16
+ getDirectory?: () => Promise<any>;
17
+ [key: string]: any;
18
+ };
19
+ }
20
+ }
21
+ type HNSWNode = HNSWNoun;
22
+ type Edge = GraphVerb;
23
+ interface CacheStats {
24
+ hits: number;
25
+ misses: number;
26
+ evictions: number;
27
+ size: number;
28
+ maxSize: number;
29
+ }
30
+ /**
31
+ * Multi-level cache manager for efficient data access
32
+ */
33
+ export declare class CacheManager<T extends HNSWNode | Edge> {
34
+ private hotCache;
35
+ private stats;
36
+ private environment;
37
+ private warmStorageType;
38
+ private coldStorageType;
39
+ private hotCacheMaxSize;
40
+ private hotCacheEvictionThreshold;
41
+ private warmCacheTTL;
42
+ private batchSize;
43
+ private autoTune;
44
+ private lastAutoTuneTime;
45
+ private autoTuneInterval;
46
+ private storageStatistics;
47
+ private warmStorage;
48
+ private coldStorage;
49
+ /**
50
+ * Initialize the cache manager
51
+ * @param options Configuration options
52
+ */
53
+ constructor(options?: {
54
+ hotCacheMaxSize?: number;
55
+ hotCacheEvictionThreshold?: number;
56
+ warmCacheTTL?: number;
57
+ batchSize?: number;
58
+ autoTune?: boolean;
59
+ warmStorage?: any;
60
+ coldStorage?: any;
61
+ });
62
+ /**
63
+ * Detect the current environment
64
+ */
65
+ private detectEnvironment;
66
+ /**
67
+ * Detect the optimal cache size based on available memory
68
+ */
69
+ private detectOptimalCacheSize;
70
+ /**
71
+ * Tune cache parameters based on statistics and environment
72
+ * This method is called periodically if auto-tuning is enabled
73
+ *
74
+ * The auto-tuning process:
75
+ * 1. Retrieves storage statistics if available
76
+ * 2. Tunes each parameter based on statistics and environment
77
+ * 3. Logs the tuned parameters if debug is enabled
78
+ *
79
+ * Auto-tuning helps optimize cache performance by adapting to:
80
+ * - The current environment (Node.js, browser, worker)
81
+ * - Available system resources (memory, CPU)
82
+ * - Usage patterns (read-heavy vs. write-heavy workloads)
83
+ * - Cache efficiency (hit/miss ratios)
84
+ */
85
+ private tuneParameters;
86
+ /**
87
+ * Tune hot cache size based on statistics and environment
88
+ *
89
+ * The hot cache size is tuned based on:
90
+ * 1. Available memory in the current environment
91
+ * 2. Total number of nodes and edges in the system
92
+ * 3. Cache hit/miss ratio
93
+ *
94
+ * Algorithm:
95
+ * - Start with a size based on available memory
96
+ * - If storage statistics are available, consider caching a percentage of total items
97
+ * - If hit ratio is low, increase the cache size to improve performance
98
+ * - Ensure a reasonable minimum size to maintain basic functionality
99
+ */
100
+ private tuneHotCacheSize;
101
+ /**
102
+ * Tune eviction threshold based on statistics
103
+ *
104
+ * The eviction threshold determines when items start being evicted from the hot cache.
105
+ * It is tuned based on:
106
+ * 1. Cache hit/miss ratio
107
+ * 2. Operation patterns (read-heavy vs. write-heavy workloads)
108
+ *
109
+ * Algorithm:
110
+ * - Start with a default threshold of 0.8 (80% of max size)
111
+ * - For high hit ratios, increase the threshold to keep more items in cache
112
+ * - For low hit ratios, decrease the threshold to evict items more aggressively
113
+ * - For read-heavy workloads, use a higher threshold
114
+ * - For write-heavy workloads, use a lower threshold
115
+ */
116
+ private tuneEvictionThreshold;
117
+ /**
118
+ * Tune warm cache TTL based on statistics
119
+ *
120
+ * The warm cache TTL determines how long items remain in the warm cache.
121
+ * It is tuned based on:
122
+ * 1. Update frequency from operation statistics
123
+ *
124
+ * Algorithm:
125
+ * - Start with a default TTL of 24 hours
126
+ * - For frequently updated data, use a shorter TTL
127
+ * - For rarely updated data, use a longer TTL
128
+ */
129
+ private tuneWarmCacheTTL;
130
+ /**
131
+ * Tune batch size based on statistics and environment
132
+ *
133
+ * The batch size determines how many items are processed in a single batch
134
+ * for operations like prefetching. It is tuned based on:
135
+ * 1. Current environment (Node.js, browser, worker)
136
+ * 2. Available memory
137
+ * 3. Operation patterns
138
+ * 4. Cache hit/miss ratio
139
+ *
140
+ * Algorithm:
141
+ * - Start with a default based on the environment
142
+ * - Adjust based on available memory in browsers
143
+ * - For bulk-heavy workloads, use a larger batch size
144
+ * - For high hit ratios, use smaller batches (items likely in cache)
145
+ * - For low hit ratios, use larger batches (need to fetch more items)
146
+ */
147
+ private tuneBatchSize;
148
+ /**
149
+ * Detect the appropriate warm storage type based on environment
150
+ */
151
+ private detectWarmStorageType;
152
+ /**
153
+ * Detect the appropriate cold storage type based on environment
154
+ */
155
+ private detectColdStorageType;
156
+ /**
157
+ * Initialize warm storage adapter
158
+ */
159
+ private initializeWarmStorage;
160
+ /**
161
+ * Initialize cold storage adapter
162
+ */
163
+ private initializeColdStorage;
164
+ /**
165
+ * Get an item from cache, trying each level in order
166
+ * @param id The item ID
167
+ * @returns The cached item or null if not found
168
+ */
169
+ get(id: string): Promise<T | null>;
170
+ /**
171
+ * Get an item from warm cache
172
+ * @param id The item ID
173
+ * @returns The cached item or null if not found
174
+ */
175
+ private getFromWarmCache;
176
+ /**
177
+ * Get an item from cold storage
178
+ * @param id The item ID
179
+ * @returns The item or null if not found
180
+ */
181
+ private getFromColdStorage;
182
+ /**
183
+ * Add an item to hot cache
184
+ * @param id The item ID
185
+ * @param item The item to cache
186
+ */
187
+ private addToHotCache;
188
+ /**
189
+ * Add an item to warm cache
190
+ * @param id The item ID
191
+ * @param item The item to cache
192
+ */
193
+ private addToWarmCache;
194
+ /**
195
+ * Evict items from hot cache based on LRU policy
196
+ */
197
+ private evictFromHotCache;
198
+ /**
199
+ * Set an item in all cache levels
200
+ * @param id The item ID
201
+ * @param item The item to cache
202
+ */
203
+ set(id: string, item: T): Promise<void>;
204
+ /**
205
+ * Delete an item from all cache levels
206
+ * @param id The item ID to delete
207
+ */
208
+ delete(id: string): Promise<void>;
209
+ /**
210
+ * Clear all cache levels
211
+ */
212
+ clear(): Promise<void>;
213
+ /**
214
+ * Get cache statistics
215
+ * @returns Cache statistics
216
+ */
217
+ getStats(): CacheStats;
218
+ /**
219
+ * Prefetch items based on ID patterns or relationships
220
+ * @param ids Array of IDs to prefetch
221
+ */
222
+ prefetch(ids: string[]): Promise<void>;
223
+ /**
224
+ * Check if it's time to tune parameters and do so if needed
225
+ * This is called before operations that might benefit from tuned parameters
226
+ *
227
+ * This method serves as a checkpoint for auto-tuning, ensuring that:
228
+ * 1. Parameters are tuned periodically based on the auto-tune interval
229
+ * 2. Tuning happens before critical operations that would benefit from optimized parameters
230
+ * 3. Tuning doesn't happen too frequently, which could impact performance
231
+ *
232
+ * By calling this method before get(), getMany(), and prefetch() operations,
233
+ * we ensure that the cache parameters are optimized for the current workload
234
+ * without adding unnecessary overhead to every operation.
235
+ */
236
+ private checkAndTuneParameters;
237
+ /**
238
+ * Get multiple items at once, optimizing for batch retrieval
239
+ * @param ids Array of IDs to get
240
+ * @returns Map of ID to item
241
+ */
242
+ getMany(ids: string[]): Promise<Map<string, T>>;
243
+ /**
244
+ * Set the storage adapters for warm and cold caches
245
+ * @param warmStorage Warm cache storage adapter
246
+ * @param coldStorage Cold storage adapter
247
+ */
248
+ setStorageAdapters(warmStorage: any, coldStorage: any): void;
249
+ }
250
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheManager.d.ts","sourceRoot":"","sources":["../../src/storage/cacheManager.ts"],"names":[],"mappings":"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"}