verso-db 0.1.4 → 0.2.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/CHANGELOG.md +25 -0
- package/README.md +81 -49
- package/dist/BinaryHeap.d.ts +16 -5
- package/dist/BinaryHeap.d.ts.map +1 -1
- package/dist/BinaryHeap.js +138 -0
- package/dist/BinaryHeap.js.map +1 -0
- package/dist/Collection.d.ts +98 -17
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +1186 -0
- package/dist/Collection.js.map +1 -0
- package/dist/HNSWIndex.d.ts +170 -15
- package/dist/HNSWIndex.d.ts.map +1 -1
- package/dist/HNSWIndex.js +2818 -0
- package/dist/HNSWIndex.js.map +1 -0
- package/dist/MaxBinaryHeap.d.ts +2 -60
- package/dist/MaxBinaryHeap.d.ts.map +1 -1
- package/dist/MaxBinaryHeap.js +5 -0
- package/dist/MaxBinaryHeap.js.map +1 -0
- package/dist/SearchWorker.d.ts +104 -0
- package/dist/SearchWorker.d.ts.map +1 -0
- package/dist/SearchWorker.js +573 -0
- package/dist/SearchWorker.js.map +1 -0
- package/dist/VectorDB.d.ts +19 -5
- package/dist/VectorDB.d.ts.map +1 -1
- package/dist/VectorDB.js +246 -0
- package/dist/VectorDB.js.map +1 -0
- package/dist/WorkerPool.d.ts +92 -0
- package/dist/WorkerPool.d.ts.map +1 -0
- package/dist/WorkerPool.js +266 -0
- package/dist/WorkerPool.js.map +1 -0
- package/dist/backends/JsDistanceBackend.d.ts +3 -20
- package/dist/backends/JsDistanceBackend.d.ts.map +1 -1
- package/dist/backends/JsDistanceBackend.js +163 -0
- package/dist/backends/JsDistanceBackend.js.map +1 -0
- package/dist/encoding/DeltaEncoder.d.ts +2 -2
- package/dist/encoding/DeltaEncoder.d.ts.map +1 -1
- package/dist/encoding/DeltaEncoder.js +199 -0
- package/dist/encoding/DeltaEncoder.js.map +1 -0
- package/dist/errors.js +97 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +16 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -3419
- package/dist/index.js.map +1 -0
- package/dist/presets.d.ts +9 -9
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +205 -0
- package/dist/presets.js.map +1 -0
- package/dist/quantization/ScalarQuantizer.d.ts +10 -34
- package/dist/quantization/ScalarQuantizer.d.ts.map +1 -1
- package/dist/quantization/ScalarQuantizer.js +346 -0
- package/dist/quantization/ScalarQuantizer.js.map +1 -0
- package/dist/storage/BatchWriter.d.ts.map +1 -1
- package/dist/storage/BatchWriter.js +351 -0
- package/dist/storage/BatchWriter.js.map +1 -0
- package/dist/storage/BunStorageBackend.d.ts +12 -5
- package/dist/storage/BunStorageBackend.d.ts.map +1 -1
- package/dist/storage/BunStorageBackend.js +182 -0
- package/dist/storage/BunStorageBackend.js.map +1 -0
- package/dist/storage/MemoryBackend.d.ts.map +1 -1
- package/dist/storage/MemoryBackend.js +109 -0
- package/dist/storage/MemoryBackend.js.map +1 -0
- package/dist/storage/OPFSBackend.d.ts +9 -1
- package/dist/storage/OPFSBackend.d.ts.map +1 -1
- package/dist/storage/OPFSBackend.js +325 -0
- package/dist/storage/OPFSBackend.js.map +1 -0
- package/dist/storage/StorageBackend.d.ts +1 -1
- package/dist/storage/StorageBackend.js +12 -0
- package/dist/storage/StorageBackend.js.map +1 -0
- package/dist/storage/WriteAheadLog.d.ts +15 -11
- package/dist/storage/WriteAheadLog.d.ts.map +1 -1
- package/dist/storage/WriteAheadLog.js +321 -0
- package/dist/storage/WriteAheadLog.js.map +1 -0
- package/dist/storage/createStorageBackend.d.ts +4 -0
- package/dist/storage/createStorageBackend.d.ts.map +1 -1
- package/dist/storage/createStorageBackend.js +119 -0
- package/dist/storage/createStorageBackend.js.map +1 -0
- package/dist/storage/index.d.ts +3 -3
- package/dist/storage/index.js +33 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/nodeFsRuntime.d.ts +14 -0
- package/dist/storage/nodeFsRuntime.d.ts.map +1 -0
- package/dist/storage/nodeFsRuntime.js +105 -0
- package/dist/storage/nodeFsRuntime.js.map +1 -0
- package/package.json +47 -23
- package/dist/Storage.d.ts +0 -54
- package/dist/Storage.d.ts.map +0 -1
- package/dist/backends/DistanceBackend.d.ts +0 -5
- package/dist/backends/DistanceBackend.d.ts.map +0 -1
- package/src/BinaryHeap.ts +0 -131
- package/src/Collection.ts +0 -695
- package/src/HNSWIndex.ts +0 -1839
- package/src/MaxBinaryHeap.ts +0 -175
- package/src/Storage.ts +0 -435
- package/src/VectorDB.ts +0 -109
- package/src/backends/DistanceBackend.ts +0 -17
- package/src/backends/JsDistanceBackend.ts +0 -227
- package/src/encoding/DeltaEncoder.ts +0 -217
- package/src/errors.ts +0 -110
- package/src/index.ts +0 -138
- package/src/presets.ts +0 -229
- package/src/quantization/ScalarQuantizer.ts +0 -383
- package/src/storage/BatchWriter.ts +0 -336
- package/src/storage/BunStorageBackend.ts +0 -161
- package/src/storage/MemoryBackend.ts +0 -120
- package/src/storage/OPFSBackend.ts +0 -250
- package/src/storage/StorageBackend.ts +0 -74
- package/src/storage/WriteAheadLog.ts +0 -326
- package/src/storage/createStorageBackend.ts +0 -137
- package/src/storage/index.ts +0 -53
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Collection.js","sourceRoot":"","sources":["../src/Collection.ts"],"names":[],"mappings":"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"}
|
package/dist/HNSWIndex.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WorkerPool } from './WorkerPool';
|
|
2
2
|
export type DistanceMetric = 'cosine' | 'euclidean' | 'dot_product';
|
|
3
3
|
export interface Node {
|
|
4
4
|
id: number;
|
|
@@ -7,6 +7,21 @@ export interface Node {
|
|
|
7
7
|
neighbors: number[][];
|
|
8
8
|
}
|
|
9
9
|
export declare class HNSWIndex {
|
|
10
|
+
private static readonly MISSING_ID_SENTINEL;
|
|
11
|
+
private static readonly MAX_NODE_ID;
|
|
12
|
+
private static readonly MAX_ARRAY_BUFFER_BYTES;
|
|
13
|
+
private static readonly MAX_NODE_SLOTS;
|
|
14
|
+
/**
|
|
15
|
+
* Allocate a Float32Array backed by SharedArrayBuffer when available.
|
|
16
|
+
* This allows workers to read vector data without copying.
|
|
17
|
+
*/
|
|
18
|
+
private static allocateFloat32;
|
|
19
|
+
/**
|
|
20
|
+
* Allocate an Int8Array, optionally backed by SharedArrayBuffer.
|
|
21
|
+
*/
|
|
22
|
+
private static allocateInt8;
|
|
23
|
+
/** Whether flatVectors/flatInt8Vectors use SharedArrayBuffer */
|
|
24
|
+
private useSharedMemory;
|
|
10
25
|
private M;
|
|
11
26
|
private M0;
|
|
12
27
|
private efConstruction;
|
|
@@ -15,13 +30,12 @@ export declare class HNSWIndex {
|
|
|
15
30
|
private entryPointId;
|
|
16
31
|
private nodes;
|
|
17
32
|
private nodeCount;
|
|
33
|
+
private nextAutoId;
|
|
18
34
|
private dimension;
|
|
19
35
|
private metric;
|
|
20
36
|
private maxLayers;
|
|
21
|
-
private distanceBackend;
|
|
22
37
|
private flatVectors;
|
|
23
38
|
private flatVectorsCapacity;
|
|
24
|
-
private searchHeap;
|
|
25
39
|
private visitedArray;
|
|
26
40
|
private visitedArraySize;
|
|
27
41
|
private visitedGeneration;
|
|
@@ -34,31 +48,27 @@ export declare class HNSWIndex {
|
|
|
34
48
|
private scalarQuantizer;
|
|
35
49
|
private int8Vectors;
|
|
36
50
|
private quantizationEnabled;
|
|
51
|
+
private flatInt8Vectors;
|
|
52
|
+
private flatInt8VectorsCapacity;
|
|
53
|
+
private queryInt8Buffer;
|
|
37
54
|
private lazyLoadEnabled;
|
|
38
55
|
private vectorOffsets;
|
|
39
56
|
private vectorBuffer;
|
|
40
57
|
private vectorsLoaded;
|
|
41
58
|
private queryNormBuffer;
|
|
42
59
|
private neighborSets;
|
|
60
|
+
private useInt8Construction;
|
|
43
61
|
private constructionMode;
|
|
44
|
-
|
|
62
|
+
private calibrationStats;
|
|
63
|
+
constructor(dimension: number, metric?: DistanceMetric, M?: number, efConstruction?: number);
|
|
45
64
|
/**
|
|
46
65
|
* Ensure node array and flat vector storage have enough capacity
|
|
47
66
|
*/
|
|
48
67
|
private ensureCapacity;
|
|
49
|
-
/**
|
|
50
|
-
* Get vector from flat storage by node ID
|
|
51
|
-
* Returns a subarray view (no copy) for efficiency
|
|
52
|
-
*/
|
|
53
|
-
private getFlatVector;
|
|
54
68
|
/**
|
|
55
69
|
* Set vector in flat storage
|
|
56
70
|
*/
|
|
57
71
|
private setFlatVector;
|
|
58
|
-
/**
|
|
59
|
-
* Get node by ID (O(1) array access)
|
|
60
|
-
*/
|
|
61
|
-
private getNode;
|
|
62
72
|
/**
|
|
63
73
|
* Set node by ID
|
|
64
74
|
*/
|
|
@@ -71,6 +81,14 @@ export declare class HNSWIndex {
|
|
|
71
81
|
* Uses flat vector storage for contiguous memory access
|
|
72
82
|
*/
|
|
73
83
|
private calculateDistancesBatch;
|
|
84
|
+
/**
|
|
85
|
+
* OPTIMIZATION: Batch Int8 distance calculation for cache-friendly quantized search.
|
|
86
|
+
* Mirrors calculateDistancesBatch but operates on contiguous flatInt8Vectors.
|
|
87
|
+
*
|
|
88
|
+
* For cosine (pre-normalized) and dot_product: uses -dotProductInt8 (1 sum, 8-wide)
|
|
89
|
+
* For euclidean: uses l2Squared on int8 (8-wide unrolled)
|
|
90
|
+
*/
|
|
91
|
+
private calculateDistancesBatchInt8;
|
|
74
92
|
/**
|
|
75
93
|
* Check if a node has been visited in the current search.
|
|
76
94
|
* Uses generation counting to avoid clearing the array.
|
|
@@ -93,6 +111,9 @@ export declare class HNSWIndex {
|
|
|
93
111
|
* Uses cached function pointer to avoid switch overhead.
|
|
94
112
|
*/
|
|
95
113
|
calculateDistance(a: Float32Array, b: Float32Array): number;
|
|
114
|
+
private validateQueryVector;
|
|
115
|
+
private validateSearchParams;
|
|
116
|
+
private validateNodeId;
|
|
96
117
|
/**
|
|
97
118
|
* Get a node's vector, loading it if necessary (for lazy loading support)
|
|
98
119
|
*/
|
|
@@ -100,6 +121,10 @@ export declare class HNSWIndex {
|
|
|
100
121
|
private getLayerMaxConnections;
|
|
101
122
|
private selectNeighbors;
|
|
102
123
|
private addBidirectionalConnection;
|
|
124
|
+
/**
|
|
125
|
+
* Prune a node's neighbor list to maxConnections by removing the most distant neighbor.
|
|
126
|
+
*/
|
|
127
|
+
private pruneConnections;
|
|
103
128
|
/**
|
|
104
129
|
* Ensure heap capacity is sufficient for the given ef value.
|
|
105
130
|
* Resizes heaps if needed.
|
|
@@ -162,6 +187,7 @@ export declare class HNSWIndex {
|
|
|
162
187
|
ids: Uint32Array;
|
|
163
188
|
distances: Float32Array;
|
|
164
189
|
};
|
|
190
|
+
private allocateAutoId;
|
|
165
191
|
/**
|
|
166
192
|
* Add a single vector with auto-generated ID.
|
|
167
193
|
* Returns the assigned ID.
|
|
@@ -225,18 +251,64 @@ export declare class HNSWIndex {
|
|
|
225
251
|
vector: Float32Array;
|
|
226
252
|
}>, options?: {
|
|
227
253
|
skipNormalization?: boolean;
|
|
254
|
+
useInt8Construction?: boolean;
|
|
255
|
+
diverseSeedInsertion?: boolean;
|
|
228
256
|
}): Promise<void>;
|
|
257
|
+
/**
|
|
258
|
+
* Reorder points for diversity — inserts "diverse seeds" first to create a better graph backbone.
|
|
259
|
+
* Uses farthest-point sampling on a random subset to select diverse initial points.
|
|
260
|
+
*/
|
|
261
|
+
private reorderForDiversity;
|
|
229
262
|
/**
|
|
230
263
|
* Synchronous bulk insertion - 10-15x faster than async version
|
|
231
264
|
* Uses addPointSync() internally to avoid microtask queue overhead
|
|
232
|
-
* @param skipNormalization - Set true if vectors are already unit-normalized
|
|
265
|
+
* @param options.skipNormalization - Set true if vectors are already unit-normalized
|
|
266
|
+
* @param options.useInt8Construction - Use int8 quantized search at layer 0 during construction.
|
|
267
|
+
* First 1000 vectors are inserted with float32 (to train quantizer), then remaining use int8.
|
|
268
|
+
* Can yield 2-4x faster build times with minimal recall loss.
|
|
269
|
+
* @param options.diverseSeedInsertion - Reorder points to insert diverse seeds first for better graph backbone.
|
|
270
|
+
* Uses farthest-point sampling on a random subset to select diverse initial points.
|
|
271
|
+
* Only applies to batches > 1000 vectors.
|
|
233
272
|
*/
|
|
234
273
|
addPointsBulkSync(points: Array<{
|
|
235
274
|
id: number;
|
|
236
275
|
vector: Float32Array;
|
|
237
276
|
}>, options?: {
|
|
238
277
|
skipNormalization?: boolean;
|
|
278
|
+
useInt8Construction?: boolean;
|
|
279
|
+
diverseSeedInsertion?: boolean;
|
|
239
280
|
}): void;
|
|
281
|
+
/**
|
|
282
|
+
* Parallel bulk insertion using worker threads for search phase.
|
|
283
|
+
* Workers perform HNSW search (the expensive part), main thread adds connections.
|
|
284
|
+
* Uses SharedArrayBuffer for zero-copy vector sharing with workers.
|
|
285
|
+
*
|
|
286
|
+
* @param points Array of {id, vector} to insert
|
|
287
|
+
* @param pool WorkerPool instance (caller manages lifecycle)
|
|
288
|
+
* @param options.seedFraction Fraction of points to insert sequentially as seed (default: 0.1)
|
|
289
|
+
* @param options.batchSize Points per parallel batch (default: 200). Larger = faster but lower recall.
|
|
290
|
+
* 200: ~10x speedup, ~96% recall. 50: ~1.5x speedup, ~97% recall.
|
|
291
|
+
* @param options.resyncInterval Full re-sync worker graph every N batches (default: 100)
|
|
292
|
+
* @param options.repair Run 1-hop neighbor expansion after build to improve recall (default: false)
|
|
293
|
+
* @param options.skipNormalization Skip vector normalization
|
|
294
|
+
*/
|
|
295
|
+
addPointsBulkParallel(points: Array<{
|
|
296
|
+
id: number;
|
|
297
|
+
vector: Float32Array;
|
|
298
|
+
}>, pool: WorkerPool, options?: {
|
|
299
|
+
seedFraction?: number;
|
|
300
|
+
batchSize?: number;
|
|
301
|
+
resyncInterval?: number;
|
|
302
|
+
repair?: boolean;
|
|
303
|
+
skipNormalization?: boolean;
|
|
304
|
+
}): Promise<void>;
|
|
305
|
+
/**
|
|
306
|
+
* Repair graph connections via 1-hop neighbor expansion.
|
|
307
|
+
* For each node, check if any neighbor-of-neighbor is closer than current neighbors.
|
|
308
|
+
* This is O(N * M0^2) distance computations — much cheaper than re-searching.
|
|
309
|
+
* Two passes catches transitive improvements.
|
|
310
|
+
*/
|
|
311
|
+
private repairGraphConnections;
|
|
240
312
|
/**
|
|
241
313
|
* Clear construction-time data structures to free memory.
|
|
242
314
|
* Called automatically after addPointsBulk(), but can be called
|
|
@@ -246,10 +318,55 @@ export declare class HNSWIndex {
|
|
|
246
318
|
private static readonly MAGIC;
|
|
247
319
|
private static readonly FORMAT_VERSION;
|
|
248
320
|
private static readonly HEADER_SIZE;
|
|
321
|
+
private static ensureReadable;
|
|
322
|
+
private static wrapDeserializeError;
|
|
249
323
|
/**
|
|
250
324
|
* Get all nodes as an array (filters out undefined slots)
|
|
251
325
|
*/
|
|
252
326
|
private getNodesArray;
|
|
327
|
+
/**
|
|
328
|
+
* Get shared search data for worker pool parallelism.
|
|
329
|
+
* Returns a copy of flat vectors and serialized graph structure.
|
|
330
|
+
*/
|
|
331
|
+
/**
|
|
332
|
+
* Convert flat vector storage to SharedArrayBuffer for zero-copy worker sharing.
|
|
333
|
+
* Called automatically by addPointsBulkParallel. Can also be called before WorkerPool.init()
|
|
334
|
+
* to enable zero-copy search dispatch.
|
|
335
|
+
*/
|
|
336
|
+
enableSharedMemory(): void;
|
|
337
|
+
getSharedSearchData(): {
|
|
338
|
+
flatVectors: Float32Array;
|
|
339
|
+
flatInt8Vectors: Int8Array | null;
|
|
340
|
+
dimension: number;
|
|
341
|
+
nodeCount: number;
|
|
342
|
+
metric: DistanceMetric;
|
|
343
|
+
entryPointId: number;
|
|
344
|
+
maxLevel: number;
|
|
345
|
+
M: number;
|
|
346
|
+
M0: number;
|
|
347
|
+
graphData: ArrayBuffer;
|
|
348
|
+
nodeLevels: Uint8Array;
|
|
349
|
+
quantizationEnabled: boolean;
|
|
350
|
+
quantizationParams: {
|
|
351
|
+
min: Float32Array;
|
|
352
|
+
max: Float32Array;
|
|
353
|
+
scale: Float32Array;
|
|
354
|
+
offset: Float32Array;
|
|
355
|
+
} | null;
|
|
356
|
+
} | null;
|
|
357
|
+
/**
|
|
358
|
+
* Serialize graph structure (neighbor lists) into a compact ArrayBuffer.
|
|
359
|
+
* Format per node: [numLayers:uint8] [numNeighbors:uint16, neighborId:uint32...] per layer
|
|
360
|
+
*/
|
|
361
|
+
private serializeGraphStructure;
|
|
362
|
+
/**
|
|
363
|
+
* Reorder nodes for BFS cache locality. Nodes are renumbered so that
|
|
364
|
+
* neighbors in the graph are stored contiguously in memory, reducing
|
|
365
|
+
* cache misses during search.
|
|
366
|
+
*
|
|
367
|
+
* @returns Map from old node ID to new node ID
|
|
368
|
+
*/
|
|
369
|
+
reorderForLocality(): Map<number, number>;
|
|
253
370
|
serialize(): ArrayBuffer;
|
|
254
371
|
/**
|
|
255
372
|
* Deserialize an HNSW index from a buffer.
|
|
@@ -284,13 +401,25 @@ export declare class HNSWIndex {
|
|
|
284
401
|
loadedVectors: number;
|
|
285
402
|
memoryReduction: string;
|
|
286
403
|
};
|
|
404
|
+
/**
|
|
405
|
+
* Save to binary file using Bun APIs.
|
|
406
|
+
* @deprecated Use serialize() with a StorageBackend instead for cross-platform support.
|
|
407
|
+
*/
|
|
287
408
|
saveToFile(filePath: string): Promise<void>;
|
|
409
|
+
/**
|
|
410
|
+
* Load from binary file using Bun APIs.
|
|
411
|
+
* @deprecated Use StorageBackend.read() + deserialize() instead for cross-platform support.
|
|
412
|
+
*/
|
|
288
413
|
static loadFromFile(filePath: string): Promise<HNSWIndex>;
|
|
289
414
|
destroy(): void;
|
|
290
415
|
/**
|
|
291
416
|
* Get memory usage statistics
|
|
292
417
|
*/
|
|
293
418
|
getMemoryUsage(): number;
|
|
419
|
+
getDimension(): number;
|
|
420
|
+
getMetric(): DistanceMetric;
|
|
421
|
+
getM(): number;
|
|
422
|
+
getEfConstruction(): number;
|
|
294
423
|
/**
|
|
295
424
|
* Get all vectors for brute-force search
|
|
296
425
|
*/
|
|
@@ -339,9 +468,35 @@ export declare class HNSWIndex {
|
|
|
339
468
|
id: number;
|
|
340
469
|
distance: number;
|
|
341
470
|
}>;
|
|
471
|
+
/**
|
|
472
|
+
* Calibrate the index for adaptive efSearch. Runs greedy descent for sample
|
|
473
|
+
* queries and records statistics about entry distances.
|
|
474
|
+
*
|
|
475
|
+
* @param sampleQueries Array of query vectors to calibrate with
|
|
476
|
+
*/
|
|
477
|
+
calibrate(sampleQueries: Float32Array[]): void;
|
|
478
|
+
/**
|
|
479
|
+
* Check if the index has been calibrated for adaptive search.
|
|
480
|
+
*/
|
|
481
|
+
isCalibrated(): boolean;
|
|
482
|
+
/**
|
|
483
|
+
* Adaptive efSearch — scales ef based on query difficulty.
|
|
484
|
+
* Easy queries (close to graph) use lower ef, hard queries (far from graph) use higher ef.
|
|
485
|
+
* Falls back to baseEfSearch if not calibrated.
|
|
486
|
+
*
|
|
487
|
+
* @param query Query vector
|
|
488
|
+
* @param k Number of results to return
|
|
489
|
+
* @param baseEfSearch Base ef parameter (will be scaled up/down)
|
|
490
|
+
* @returns Same format as searchKNN
|
|
491
|
+
*/
|
|
492
|
+
searchKNNAdaptive(query: Float32Array, k: number, baseEfSearch?: number): Array<{
|
|
493
|
+
id: number;
|
|
494
|
+
distance: number;
|
|
495
|
+
}>;
|
|
342
496
|
/**
|
|
343
497
|
* Search layer using Int8 quantized distances for speed.
|
|
344
|
-
*
|
|
498
|
+
* OPTIMIZED: Uses batch distance calculation on contiguous flatInt8Vectors.
|
|
499
|
+
* Falls back to one-by-one with int8Vectors[] if contiguous storage unavailable.
|
|
345
500
|
*/
|
|
346
501
|
private searchLayerQuantized;
|
|
347
502
|
/**
|
package/dist/HNSWIndex.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HNSWIndex.d.ts","sourceRoot":"","sources":["../src/HNSWIndex.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HNSWIndex.d.ts","sourceRoot":"","sources":["../src/HNSWIndex.ts"],"names":[],"mappings":"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"}
|