verso-db 0.4.0 → 0.6.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 +13 -0
- package/README.md +19 -1
- package/dist/Collection.d.ts +34 -4
- package/dist/Collection.d.ts.map +1 -1
- package/dist/Collection.js +139 -7
- package/dist/Collection.js.map +1 -1
- package/dist/HNSWIndex.d.ts +27 -2
- package/dist/HNSWIndex.d.ts.map +1 -1
- package/dist/HNSWIndex.js +261 -96
- package/dist/HNSWIndex.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/presets.d.ts +23 -0
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +41 -0
- package/dist/presets.js.map +1 -1
- package/package.json +1 -1
package/dist/presets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,UAAU,CAS9C,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CASjD,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,UAAU,CAS/C,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CASpD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CASpD,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CASpD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CASjD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,UAAU,CASlD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CASjE,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAkBxF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE9D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU,CAyB/D"}
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,gGAAgG;IAChG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,6GAA6G;IAC7G,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,UAAU,CAS9C,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CASjD,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,UAAU,CAS/C,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CASpD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CASpD,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CASpD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CASjD,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,UAAU,CASlD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CASjE,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CAkBxF;AAUD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,oBAAyB,GACjC,UAAU,CAgCZ;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE9D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,UAAU,CAyB/D"}
|
package/dist/presets.js
CHANGED
|
@@ -172,6 +172,47 @@ export function getRecommendedPreset(dimension, datasetSize) {
|
|
|
172
172
|
return PRESET_MEDIUM_DIM;
|
|
173
173
|
return PRESET_HIGH_DIM;
|
|
174
174
|
}
|
|
175
|
+
function getNavigatorUserAgent() {
|
|
176
|
+
return typeof navigator === 'undefined' ? undefined : navigator.userAgent;
|
|
177
|
+
}
|
|
178
|
+
function getNavigatorHardwareConcurrency() {
|
|
179
|
+
return typeof navigator === 'undefined' ? undefined : navigator.hardwareConcurrency;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get a browser-safe preset that caps memory-heavy HNSW parameters.
|
|
183
|
+
*
|
|
184
|
+
* This keeps the high-recall server/runtime defaults intact while giving browser
|
|
185
|
+
* apps a one-call preset for OPFS/WebWorker use, especially on Safari and
|
|
186
|
+
* lower-memory mobile devices where aggressive M/efSearch values can cause
|
|
187
|
+
* long tasks or tab crashes.
|
|
188
|
+
*/
|
|
189
|
+
export function getBrowserRecommendedPreset(dimension, options = {}) {
|
|
190
|
+
const base = getRecommendedPreset(dimension, options.datasetSize);
|
|
191
|
+
const userAgent = options.userAgent ?? getNavigatorUserAgent() ?? '';
|
|
192
|
+
const hardwareConcurrency = options.hardwareConcurrency ?? getNavigatorHardwareConcurrency() ?? 4;
|
|
193
|
+
const isSafari = options.safari ??
|
|
194
|
+
(/safari/i.test(userAgent) && !/chrome|chromium|android/i.test(userAgent));
|
|
195
|
+
const isMobile = options.mobile ??
|
|
196
|
+
/mobi|android|iphone|ipad|ipod/i.test(userAgent);
|
|
197
|
+
const isMemoryConstrained = options.memoryConstrained ?? (isSafari || isMobile || hardwareConcurrency <= 4);
|
|
198
|
+
const M = isMemoryConstrained ? Math.min(base.M, 16) : Math.min(base.M, 24);
|
|
199
|
+
const efConstruction = isMemoryConstrained
|
|
200
|
+
? Math.min(base.efConstruction, 150)
|
|
201
|
+
: Math.min(base.efConstruction, 200);
|
|
202
|
+
const efSearch = isSafari
|
|
203
|
+
? Math.min(base.efSearch, 80)
|
|
204
|
+
: isMemoryConstrained
|
|
205
|
+
? Math.min(base.efSearch, 96)
|
|
206
|
+
: Math.min(base.efSearch, 160);
|
|
207
|
+
return Object.freeze({
|
|
208
|
+
...base,
|
|
209
|
+
name: `${base.name}-browser`,
|
|
210
|
+
description: `${base.description}; capped for browser memory and responsiveness`,
|
|
211
|
+
M,
|
|
212
|
+
efConstruction,
|
|
213
|
+
efSearch,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
175
216
|
/**
|
|
176
217
|
* Get preset by name
|
|
177
218
|
*/
|
package/dist/presets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "verso-db",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "High-performance vector search with HNSW indexing for Bun, Node.js, and Browser. High-recall ANN, 4x vector storage reduction with Int8 quantization.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|