@omendb/omendb 0.0.27 → 0.0.28
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/index.d.ts +87 -2
- package/index.js +24 -0
- package/package.json +6 -6
package/index.d.ts
CHANGED
|
@@ -166,8 +166,14 @@ export declare class VectorDatabase {
|
|
|
166
166
|
* @returns Number of nodes reordered
|
|
167
167
|
*/
|
|
168
168
|
optimize(): number
|
|
169
|
-
/**
|
|
170
|
-
|
|
169
|
+
/**
|
|
170
|
+
* Merge another database into this one.
|
|
171
|
+
*
|
|
172
|
+
* @param other - Source database to merge from
|
|
173
|
+
* @param keyPrefix - Optional prefix for all source IDs (e.g., "subdir/")
|
|
174
|
+
* @returns Number of vectors merged
|
|
175
|
+
*/
|
|
176
|
+
mergeFrom(other: VectorDatabase, keyPrefix?: string | undefined | null): number
|
|
171
177
|
/**
|
|
172
178
|
* List all vector IDs (without loading vector data).
|
|
173
179
|
*
|
|
@@ -282,6 +288,73 @@ export declare class VectorDatabase {
|
|
|
282
288
|
* keeping the Node.js event loop free.
|
|
283
289
|
*/
|
|
284
290
|
searchBatch(queries: Array<Array<number> | Float32Array>, k: number, ef?: number | undefined | null): Promise<Array<Array<SearchResult>>>
|
|
291
|
+
/**
|
|
292
|
+
* Enable sparse vector indexing for SPLADE-style retrieval.
|
|
293
|
+
*
|
|
294
|
+
* Called automatically by setSparse() and setHybridSparse().
|
|
295
|
+
* Call explicitly before sparseSearch() on an empty index.
|
|
296
|
+
*/
|
|
297
|
+
enableSparse(): void
|
|
298
|
+
/** Check if sparse indexing is enabled. */
|
|
299
|
+
get hasSparse(): boolean
|
|
300
|
+
/**
|
|
301
|
+
* Insert or update a sparse vector.
|
|
302
|
+
*
|
|
303
|
+
* @param id - Unique identifier
|
|
304
|
+
* @param sparse - Sparse vector as {indices: number[], values: number[]} or {dim: weight}
|
|
305
|
+
* @param metadata - Optional metadata
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```javascript
|
|
309
|
+
* db.setSparse("doc1", {indices: [10, 42], values: [0.5, 1.2]}, {title: "Hello"});
|
|
310
|
+
* db.setSparse("doc2", {"10": 0.5, "42": 1.2}, {title: "World"});
|
|
311
|
+
* ```
|
|
312
|
+
*/
|
|
313
|
+
setSparse(id: string, sparse: { indices: number[]; values: number[] } | Record<string, number>, metadata?: Record<string, unknown> | undefined): void
|
|
314
|
+
/**
|
|
315
|
+
* Insert or update both dense and sparse vectors together.
|
|
316
|
+
*
|
|
317
|
+
* @param id - Unique identifier
|
|
318
|
+
* @param vector - Dense vector
|
|
319
|
+
* @param sparse - Sparse vector
|
|
320
|
+
* @param metadata - Optional metadata
|
|
321
|
+
*/
|
|
322
|
+
setHybridSparse(id: string, vector: Array<number> | Float32Array, sparse: { indices: number[]; values: number[] } | Record<string, number>, metadata?: Record<string, unknown> | undefined): void
|
|
323
|
+
/**
|
|
324
|
+
* Search sparse vectors by dot product similarity.
|
|
325
|
+
*
|
|
326
|
+
* @param query - Sparse query vector
|
|
327
|
+
* @param k - Number of results
|
|
328
|
+
* @param options - Optional: {filter?}
|
|
329
|
+
* @returns Array of {id, score, metadata} sorted by score descending
|
|
330
|
+
*
|
|
331
|
+
* @example
|
|
332
|
+
* ```javascript
|
|
333
|
+
* const results = db.sparseSearch({indices: [10, 42], values: [1.0, 0.5]}, 5);
|
|
334
|
+
* const results = db.sparseSearch({"10": 1.0, "42": 0.5}, 5);
|
|
335
|
+
* ```
|
|
336
|
+
*/
|
|
337
|
+
sparseSearch(query: { indices: number[]; values: number[] } | Record<string, number>, k: number, options?: { filter?: Record<string, unknown> } | undefined): Array<SparseSearchResult>
|
|
338
|
+
/**
|
|
339
|
+
* Hybrid dense + sparse search with Reciprocal Rank Fusion (RRF).
|
|
340
|
+
*
|
|
341
|
+
* @param queryVector - Dense query vector
|
|
342
|
+
* @param sparseQuery - Sparse query vector
|
|
343
|
+
* @param k - Number of results
|
|
344
|
+
* @param options - Optional: {alpha?, filter?}
|
|
345
|
+
* @returns Array of {id, score, metadata}
|
|
346
|
+
*
|
|
347
|
+
* @example
|
|
348
|
+
* ```javascript
|
|
349
|
+
* const results = db.hybridSparseSearch(
|
|
350
|
+
* [1, 0, 0],
|
|
351
|
+
* {indices: [10, 42], values: [1.0, 0.5]},
|
|
352
|
+
* 10,
|
|
353
|
+
* { alpha: 0.5 }
|
|
354
|
+
* );
|
|
355
|
+
* ```
|
|
356
|
+
*/
|
|
357
|
+
hybridSparseSearch(queryVector: Array<number> | Float32Array, sparseQuery: { indices: number[]; values: number[] } | Record<string, number>, k: number, options?: { alpha?: number; filter?: Record<string, unknown> } | undefined): Array<SparseSearchResult>
|
|
285
358
|
}
|
|
286
359
|
|
|
287
360
|
export interface GetResult {
|
|
@@ -366,6 +439,10 @@ export interface OpenOptions {
|
|
|
366
439
|
* - false/null: Disabled (default, single-vector mode)
|
|
367
440
|
*/
|
|
368
441
|
multiVector?: boolean | { repetitions?: number; partitionBits?: number; seed?: number; dProj?: number | null } | null | undefined
|
|
442
|
+
/** SQ8 refiner: rescore with full precision (default: true when quantized) */
|
|
443
|
+
rescore?: boolean
|
|
444
|
+
/** Candidate multiplier for rescoring (default: 3.0) */
|
|
445
|
+
oversample?: number
|
|
369
446
|
}
|
|
370
447
|
|
|
371
448
|
export interface SearchResult {
|
|
@@ -391,6 +468,14 @@ export interface SetItem {
|
|
|
391
468
|
document?: string
|
|
392
469
|
}
|
|
393
470
|
|
|
471
|
+
/** Sparse search result returned from sparseSearch / hybridSparseSearch. */
|
|
472
|
+
export interface SparseSearchResult {
|
|
473
|
+
id: string
|
|
474
|
+
/** Dot product score (higher = more similar) */
|
|
475
|
+
score: number
|
|
476
|
+
metadata: Record<string, unknown>
|
|
477
|
+
}
|
|
478
|
+
|
|
394
479
|
export interface StatsResult {
|
|
395
480
|
dimensions: number
|
|
396
481
|
count: number
|
package/index.js
CHANGED
|
@@ -337,6 +337,30 @@ class VectorDatabase {
|
|
|
337
337
|
compact() {
|
|
338
338
|
return this._native.compact();
|
|
339
339
|
}
|
|
340
|
+
|
|
341
|
+
enableSparse() {
|
|
342
|
+
return this._native.enableSparse();
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
get hasSparse() {
|
|
346
|
+
return this._native.hasSparse;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
setSparse(id, sparse, metadata) {
|
|
350
|
+
return this._native.setSparse(id, sparse, metadata);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
setHybridSparse(id, vector, sparse, metadata) {
|
|
354
|
+
return this._native.setHybridSparse(id, vector, sparse, metadata);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
sparseSearch(query, k, options) {
|
|
358
|
+
return this._native.sparseSearch(query, k, options);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
hybridSparseSearch(queryVector, sparseQuery, k, options) {
|
|
362
|
+
return this._native.hybridSparseSearch(queryVector, sparseQuery, k, options);
|
|
363
|
+
}
|
|
340
364
|
}
|
|
341
365
|
|
|
342
366
|
function open(path, options, embeddingFn) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omendb/omendb",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.28",
|
|
4
4
|
"description": "Fast embedded vector database with HNSW + ACORN-1 filtered search",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
"omendb.node"
|
|
51
51
|
],
|
|
52
52
|
"optionalDependencies": {
|
|
53
|
-
"@omendb/omendb-darwin-x64": "0.0.
|
|
54
|
-
"@omendb/omendb-darwin-arm64": "0.0.
|
|
55
|
-
"@omendb/omendb-linux-x64-gnu": "0.0.
|
|
56
|
-
"@omendb/omendb-linux-arm64-gnu": "0.0.
|
|
57
|
-
"@omendb/omendb-win32-x64-msvc": "0.0.
|
|
53
|
+
"@omendb/omendb-darwin-x64": "0.0.28",
|
|
54
|
+
"@omendb/omendb-darwin-arm64": "0.0.28",
|
|
55
|
+
"@omendb/omendb-linux-x64-gnu": "0.0.28",
|
|
56
|
+
"@omendb/omendb-linux-arm64-gnu": "0.0.28",
|
|
57
|
+
"@omendb/omendb-win32-x64-msvc": "0.0.28"
|
|
58
58
|
}
|
|
59
59
|
}
|