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.
Files changed (110) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +81 -49
  3. package/dist/BinaryHeap.d.ts +16 -5
  4. package/dist/BinaryHeap.d.ts.map +1 -1
  5. package/dist/BinaryHeap.js +138 -0
  6. package/dist/BinaryHeap.js.map +1 -0
  7. package/dist/Collection.d.ts +98 -17
  8. package/dist/Collection.d.ts.map +1 -1
  9. package/dist/Collection.js +1186 -0
  10. package/dist/Collection.js.map +1 -0
  11. package/dist/HNSWIndex.d.ts +170 -15
  12. package/dist/HNSWIndex.d.ts.map +1 -1
  13. package/dist/HNSWIndex.js +2818 -0
  14. package/dist/HNSWIndex.js.map +1 -0
  15. package/dist/MaxBinaryHeap.d.ts +2 -60
  16. package/dist/MaxBinaryHeap.d.ts.map +1 -1
  17. package/dist/MaxBinaryHeap.js +5 -0
  18. package/dist/MaxBinaryHeap.js.map +1 -0
  19. package/dist/SearchWorker.d.ts +104 -0
  20. package/dist/SearchWorker.d.ts.map +1 -0
  21. package/dist/SearchWorker.js +573 -0
  22. package/dist/SearchWorker.js.map +1 -0
  23. package/dist/VectorDB.d.ts +19 -5
  24. package/dist/VectorDB.d.ts.map +1 -1
  25. package/dist/VectorDB.js +246 -0
  26. package/dist/VectorDB.js.map +1 -0
  27. package/dist/WorkerPool.d.ts +92 -0
  28. package/dist/WorkerPool.d.ts.map +1 -0
  29. package/dist/WorkerPool.js +266 -0
  30. package/dist/WorkerPool.js.map +1 -0
  31. package/dist/backends/JsDistanceBackend.d.ts +3 -20
  32. package/dist/backends/JsDistanceBackend.d.ts.map +1 -1
  33. package/dist/backends/JsDistanceBackend.js +163 -0
  34. package/dist/backends/JsDistanceBackend.js.map +1 -0
  35. package/dist/encoding/DeltaEncoder.d.ts +2 -2
  36. package/dist/encoding/DeltaEncoder.d.ts.map +1 -1
  37. package/dist/encoding/DeltaEncoder.js +199 -0
  38. package/dist/encoding/DeltaEncoder.js.map +1 -0
  39. package/dist/errors.js +97 -0
  40. package/dist/errors.js.map +1 -0
  41. package/dist/index.d.ts +16 -17
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +61 -3419
  44. package/dist/index.js.map +1 -0
  45. package/dist/presets.d.ts +9 -9
  46. package/dist/presets.d.ts.map +1 -1
  47. package/dist/presets.js +205 -0
  48. package/dist/presets.js.map +1 -0
  49. package/dist/quantization/ScalarQuantizer.d.ts +10 -34
  50. package/dist/quantization/ScalarQuantizer.d.ts.map +1 -1
  51. package/dist/quantization/ScalarQuantizer.js +346 -0
  52. package/dist/quantization/ScalarQuantizer.js.map +1 -0
  53. package/dist/storage/BatchWriter.d.ts.map +1 -1
  54. package/dist/storage/BatchWriter.js +351 -0
  55. package/dist/storage/BatchWriter.js.map +1 -0
  56. package/dist/storage/BunStorageBackend.d.ts +12 -5
  57. package/dist/storage/BunStorageBackend.d.ts.map +1 -1
  58. package/dist/storage/BunStorageBackend.js +182 -0
  59. package/dist/storage/BunStorageBackend.js.map +1 -0
  60. package/dist/storage/MemoryBackend.d.ts.map +1 -1
  61. package/dist/storage/MemoryBackend.js +109 -0
  62. package/dist/storage/MemoryBackend.js.map +1 -0
  63. package/dist/storage/OPFSBackend.d.ts +9 -1
  64. package/dist/storage/OPFSBackend.d.ts.map +1 -1
  65. package/dist/storage/OPFSBackend.js +325 -0
  66. package/dist/storage/OPFSBackend.js.map +1 -0
  67. package/dist/storage/StorageBackend.d.ts +1 -1
  68. package/dist/storage/StorageBackend.js +12 -0
  69. package/dist/storage/StorageBackend.js.map +1 -0
  70. package/dist/storage/WriteAheadLog.d.ts +15 -11
  71. package/dist/storage/WriteAheadLog.d.ts.map +1 -1
  72. package/dist/storage/WriteAheadLog.js +321 -0
  73. package/dist/storage/WriteAheadLog.js.map +1 -0
  74. package/dist/storage/createStorageBackend.d.ts +4 -0
  75. package/dist/storage/createStorageBackend.d.ts.map +1 -1
  76. package/dist/storage/createStorageBackend.js +119 -0
  77. package/dist/storage/createStorageBackend.js.map +1 -0
  78. package/dist/storage/index.d.ts +3 -3
  79. package/dist/storage/index.js +33 -0
  80. package/dist/storage/index.js.map +1 -0
  81. package/dist/storage/nodeFsRuntime.d.ts +14 -0
  82. package/dist/storage/nodeFsRuntime.d.ts.map +1 -0
  83. package/dist/storage/nodeFsRuntime.js +105 -0
  84. package/dist/storage/nodeFsRuntime.js.map +1 -0
  85. package/package.json +47 -23
  86. package/dist/Storage.d.ts +0 -54
  87. package/dist/Storage.d.ts.map +0 -1
  88. package/dist/backends/DistanceBackend.d.ts +0 -5
  89. package/dist/backends/DistanceBackend.d.ts.map +0 -1
  90. package/src/BinaryHeap.ts +0 -131
  91. package/src/Collection.ts +0 -695
  92. package/src/HNSWIndex.ts +0 -1839
  93. package/src/MaxBinaryHeap.ts +0 -175
  94. package/src/Storage.ts +0 -435
  95. package/src/VectorDB.ts +0 -109
  96. package/src/backends/DistanceBackend.ts +0 -17
  97. package/src/backends/JsDistanceBackend.ts +0 -227
  98. package/src/encoding/DeltaEncoder.ts +0 -217
  99. package/src/errors.ts +0 -110
  100. package/src/index.ts +0 -138
  101. package/src/presets.ts +0 -229
  102. package/src/quantization/ScalarQuantizer.ts +0 -383
  103. package/src/storage/BatchWriter.ts +0 -336
  104. package/src/storage/BunStorageBackend.ts +0 -161
  105. package/src/storage/MemoryBackend.ts +0 -120
  106. package/src/storage/OPFSBackend.ts +0 -250
  107. package/src/storage/StorageBackend.ts +0 -74
  108. package/src/storage/WriteAheadLog.ts +0 -326
  109. package/src/storage/createStorageBackend.ts +0 -137
  110. package/src/storage/index.ts +0 -53
@@ -1,4 +1,5 @@
1
1
  import { DistanceMetric } from './HNSWIndex';
2
+ import type { StorageBackend } from './storage/StorageBackend';
2
3
  /**
3
4
  * Configuration for adding vectors to a collection.
4
5
  */
@@ -6,8 +7,8 @@ export interface AddConfig {
6
7
  /** Unique string identifiers for each vector */
7
8
  ids: string[];
8
9
  /** Array of vectors to add (must match collection dimension) */
9
- vectors: number[][];
10
- /** Optional metadata for each vector (same length as ids/vectors) */
10
+ vectors: Array<number[] | Float32Array>;
11
+ /** Optional metadata for each vector (same length as ids/vectors, plain JSON objects only) */
11
12
  metadata?: Array<Record<string, any>>;
12
13
  }
13
14
  /**
@@ -35,7 +36,7 @@ export interface AddConfig {
35
36
  */
36
37
  export interface QueryConfig {
37
38
  /** The query vector (must match collection dimension) */
38
- queryVector: number[];
39
+ queryVector: number[] | Float32Array;
39
40
  /** Number of nearest neighbors to return */
40
41
  k: number;
41
42
  /**
@@ -52,39 +53,80 @@ export interface QueryConfig {
52
53
  filter?: Record<string, any>;
53
54
  /** Search effort parameter (higher = better recall, slower). Default: max(k*2, 50) */
54
55
  efSearch?: number;
56
+ /** Use int8 quantized search + float32 rescore. Default: auto (true when quantization enabled) */
57
+ useQuantizedSearch?: boolean;
58
+ /** Oversampling multiplier for quantized rescore (default: 3). Higher = better recall, slower. */
59
+ candidateMultiplier?: number;
55
60
  }
56
61
  export interface QueryResult {
57
62
  ids: string[];
58
63
  distances: number[];
59
64
  metadata: Array<Record<string, any>>;
60
65
  }
66
+ export interface CollectionOptions {
67
+ /**
68
+ * Persist mutating operations automatically after they complete.
69
+ * VectorDB-managed collections enable this by default.
70
+ */
71
+ autoPersist?: boolean;
72
+ }
61
73
  export declare class Collection {
74
+ private static readonly MAX_INTERNAL_ID;
62
75
  private name;
63
76
  private dimension;
64
77
  private metric;
65
78
  private M;
66
79
  private efConstruction;
67
- private indexPath;
68
- private metaPath;
69
- private deletedPath;
80
+ private storage;
81
+ private readonly stateKey;
82
+ private readonly defaultIndexKey;
83
+ private readonly defaultMetaKey;
84
+ private readonly defaultDeletedKey;
85
+ private indexKey;
86
+ private metaKey;
87
+ private deletedKey;
70
88
  private hnsw;
71
89
  private idMap;
72
90
  private idReverseMap;
73
91
  private metadata;
74
92
  private deletedIds;
93
+ private nextNumericId;
94
+ private activeCount;
95
+ private readonly autoPersist;
96
+ private dirty;
97
+ private mutationLock;
75
98
  constructor(name: string, config: {
76
99
  dimension: number;
77
100
  metric?: DistanceMetric;
78
101
  M?: number;
79
102
  efConstruction?: number;
80
- }, collectionPath: string);
103
+ }, storage: StorageBackend, options?: CollectionOptions);
81
104
  init(): Promise<void>;
105
+ private withMutationLock;
106
+ flush(): Promise<void>;
107
+ private captureMutationSnapshot;
108
+ private restoreMutationSnapshot;
109
+ /**
110
+ * Wrap a mutation in snapshot-capture + auto-persist.
111
+ * The mutation fn should set `this.dirty = true` when it mutates state.
112
+ * If autoPersist is on and dirty was set, saves after fn completes.
113
+ * On error, restores from snapshot.
114
+ */
115
+ private withAutoSave;
116
+ private reserveNumericIds;
117
+ private setActiveStorageKeys;
118
+ private isValidStorageState;
119
+ private loadStorageState;
120
+ private getVersionedDataKeys;
121
+ private isVersionedDataKey;
122
+ private validateLoadedIndexConfig;
82
123
  private loadFromDisk;
83
124
  add(config: AddConfig): Promise<void>;
84
125
  query(config: QueryConfig): Promise<QueryResult>;
85
126
  /**
86
127
  * Batch query for multiple vectors at once.
87
- * More efficient than calling query() multiple times.
128
+ * Shares query semantics with query(), including adaptive candidate expansion
129
+ * for filters and tombstones.
88
130
  *
89
131
  * @param configs Array of query configurations
90
132
  * @returns Array of query results, one per query
@@ -98,24 +140,34 @@ export declare class Collection {
98
140
  /**
99
141
  * Upsert vectors (insert or update).
100
142
  *
101
- * NOTE: HNSW indices don't support efficient in-place updates.
102
- * Duplicate IDs will throw an error. For updates, rebuild the index
103
- * without the old vectors and add the new ones.
143
+ * For existing IDs, the old vectors are tombstone-deleted and new vectors
144
+ * are inserted. Use compact() periodically to reclaim space from
145
+ * tombstoned vectors.
104
146
  *
105
- * @throws Error if any ID already exists
147
+ * For new IDs, behaves identically to add().
106
148
  */
107
149
  upsert(config: AddConfig): Promise<void>;
150
+ private addInternal;
151
+ /** Returns the vector dimension for this collection. */
152
+ getDimension(): number;
153
+ /** Returns the distance metric for this collection. */
154
+ getMetric(): DistanceMetric;
155
+ /** Returns the HNSW M parameter for this collection. */
156
+ getM(): number;
157
+ /** Returns the HNSW efConstruction parameter for this collection. */
158
+ getEfConstruction(): number;
108
159
  /**
109
160
  * Returns the number of active (non-deleted) vectors in the collection.
161
+ * O(1) via maintained counter.
110
162
  */
111
163
  count(): number;
112
164
  /**
113
- * Returns the total number of vectors including deleted (tombstoned) ones.
165
+ * Returns the total number of tracked vectors including deleted (tombstoned) ones.
114
166
  * Use this to determine when compaction might be beneficial.
115
167
  */
116
168
  countWithDeleted(): number;
117
169
  /**
118
- * Returns the number of deleted (tombstoned) vectors.
170
+ * Returns the number of deleted (tombstoned) vectors awaiting compaction.
119
171
  */
120
172
  deletedCount(): number;
121
173
  /**
@@ -126,14 +178,15 @@ export declare class Collection {
126
178
  * @param id The string ID of the vector to delete
127
179
  * @returns true if the vector was deleted, false if it didn't exist or was already deleted
128
180
  */
129
- delete(id: string): boolean;
181
+ private deleteInternal;
182
+ delete(id: string): Promise<boolean>;
130
183
  /**
131
184
  * Mark multiple vectors as deleted (tombstone deletion).
132
185
  *
133
186
  * @param ids Array of string IDs to delete
134
187
  * @returns Number of vectors that were successfully deleted
135
188
  */
136
- deleteBatch(ids: string[]): number;
189
+ deleteBatch(ids: string[]): Promise<number>;
137
190
  /**
138
191
  * Check if a vector exists and is not deleted.
139
192
  */
@@ -142,8 +195,31 @@ export declare class Collection {
142
195
  * Check if a vector was deleted (tombstoned).
143
196
  */
144
197
  isDeleted(id: string): boolean;
198
+ /**
199
+ * Reorder the internal HNSW index for BFS cache locality.
200
+ * Remaps all internal IDs so that graph neighbors are stored
201
+ * contiguously in memory, improving search cache hit rates.
202
+ */
203
+ reorderIndex(): Promise<void>;
145
204
  saveToDisk(): Promise<void>;
205
+ private saveToDiskUnlocked;
206
+ private executeQuery;
207
+ private searchCandidates;
208
+ private filterAndDeduplicateResults;
209
+ private materializeResults;
210
+ private validateQueryInput;
211
+ private hasFilter;
212
+ private reconcileLoadedState;
146
213
  private matchesFilter;
214
+ private validateFilterOperators;
215
+ private validateAddInput;
216
+ private validateMetadataValue;
217
+ private parseMetadataLine;
218
+ private isPlainObject;
219
+ private isFilterObject;
220
+ private isOperatorObject;
221
+ private deepEqual;
222
+ private matchesInOperator;
147
223
  /**
148
224
  * Compact the collection by rebuilding the index without deleted vectors.
149
225
  * This permanently removes tombstoned vectors and reclaims space.
@@ -151,6 +227,11 @@ export declare class Collection {
151
227
  * @returns Number of vectors removed during compaction
152
228
  */
153
229
  compact(): Promise<number>;
154
- destroy(): Promise<void>;
230
+ /**
231
+ * Destroy the collection, freeing all in-memory resources.
232
+ * @param save Whether to persist data to storage before destroying (default: true).
233
+ * Pass false when the collection is being deleted entirely.
234
+ */
235
+ destroy(save?: boolean): Promise<void>;
155
236
  }
156
237
  //# sourceMappingURL=Collection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../src/Collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Collection.d.ts","sourceRoot":"","sources":["../src/Collection.ts"],"names":[],"mappings":"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"}