endee 1.8.0-dev.1 → 1.8.0-dev.3
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 +66 -38
- package/dist/collection.d.ts +14 -8
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +78 -41
- package/dist/collection.js.map +1 -1
- package/dist/constants.d.ts +15 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +15 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/reranker.d.ts +2 -13
- package/dist/reranker.d.ts.map +1 -1
- package/dist/reranker.js +2 -30
- package/dist/reranker.js.map +1 -1
- package/dist/types/index.d.ts +22 -7
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,11 +23,12 @@ multi-vectors — so a single object can be searched many ways.
|
|
|
23
23
|
5. [Insert objects (combining vector types)](#insert-objects-combining-vector-types)
|
|
24
24
|
6. [Search](#search)
|
|
25
25
|
- [The unified field shape](#the-unified-field-shape)
|
|
26
|
-
- [Per-field `
|
|
26
|
+
- [Per-field `limit` and `ef_search`](#per-field-limit-and-ef_search)
|
|
27
27
|
- [Single field](#single-field-search)
|
|
28
28
|
- [Multi-field](#multi-field-search)
|
|
29
29
|
- [Fusing results with `rerank()`](#fusing-results-with-rerank)
|
|
30
30
|
- [Filters](#filtered-search)
|
|
31
|
+
- [Filter tuning](#filter-tuning)
|
|
31
32
|
7. [Object operations](#object-operations)
|
|
32
33
|
8. [Collection maintenance](#collection-maintenance)
|
|
33
34
|
9. [Backups](#backups)
|
|
@@ -92,8 +93,7 @@ await collection.upsert([
|
|
|
92
93
|
|
|
93
94
|
// 3. Search the dense field. `results` is keyed by field name.
|
|
94
95
|
const res = await collection.search({
|
|
95
|
-
fields: { embedding: { query: Array(8).fill(0.2) } },
|
|
96
|
-
limit: 5,
|
|
96
|
+
fields: { embedding: { query: Array(8).fill(0.2), limit: 5 } },
|
|
97
97
|
});
|
|
98
98
|
for (const h of res.results.embedding) {
|
|
99
99
|
console.log(h.id, h.similarity, h.meta);
|
|
@@ -252,14 +252,14 @@ Notes:
|
|
|
252
252
|
|
|
253
253
|
## Search
|
|
254
254
|
|
|
255
|
-
`collection.search({ fields,
|
|
255
|
+
`collection.search({ fields, filter })` queries one or more fields **in a
|
|
256
256
|
single request** and **always returns one ranked list per field**, keyed by field
|
|
257
257
|
name. To collapse those lists into a single ranked list, fuse them with
|
|
258
258
|
[`rerank()`](#fusing-results-with-rerank).
|
|
259
259
|
|
|
260
260
|
### The unified field shape
|
|
261
261
|
|
|
262
|
-
Every field is queried with the **same object form** — `{ query,
|
|
262
|
+
Every field is queried with the **same object form** — `{ query, limit?, ef_search? }`.
|
|
263
263
|
There is no bare-value shorthand; `query` is required. The `query` value matches
|
|
264
264
|
the field's type:
|
|
265
265
|
|
|
@@ -278,20 +278,19 @@ Each result **hit** is:
|
|
|
278
278
|
> Search results carry `meta`/`filter` but **not** the stored vectors. To get the
|
|
279
279
|
> vectors back, use [`getObjects`](#object-operations).
|
|
280
280
|
|
|
281
|
-
### Per-field `
|
|
281
|
+
### Per-field `limit` and `ef_search`
|
|
282
282
|
|
|
283
|
-
`
|
|
284
|
-
|
|
285
|
-
|
|
283
|
+
`limit` is the **max number of hits to return for that field** (defaults to
|
|
284
|
+
`10`). It's set per field, so each field draws independently. `ef_search` tunes
|
|
285
|
+
that field's HNSW recall/latency.
|
|
286
286
|
|
|
287
287
|
```typescript
|
|
288
|
-
//
|
|
288
|
+
// embedding returns up to 35 hits, keywords up to 15 — each independent
|
|
289
289
|
await collection.search({
|
|
290
290
|
fields: {
|
|
291
|
-
embedding: { query: Array(8).fill(0.2),
|
|
292
|
-
keywords: { query: { indices: [3, 17], values: [0.8, 0.4] },
|
|
291
|
+
embedding: { query: Array(8).fill(0.2), limit: 35, ef_search: 256 },
|
|
292
|
+
keywords: { query: { indices: [3, 17], values: [0.8, 0.4] }, limit: 15 },
|
|
293
293
|
},
|
|
294
|
-
limit: 50,
|
|
295
294
|
});
|
|
296
295
|
```
|
|
297
296
|
|
|
@@ -302,8 +301,7 @@ by that field name:
|
|
|
302
301
|
|
|
303
302
|
```typescript
|
|
304
303
|
const res = await collection.search({
|
|
305
|
-
fields: { embedding: { query: Array(8).fill(0.2) } },
|
|
306
|
-
limit: 3,
|
|
304
|
+
fields: { embedding: { query: Array(8).fill(0.2), limit: 3 } },
|
|
307
305
|
});
|
|
308
306
|
res.results.embedding;
|
|
309
307
|
// [
|
|
@@ -313,14 +311,12 @@ res.results.embedding;
|
|
|
313
311
|
|
|
314
312
|
// sparse
|
|
315
313
|
await collection.search({
|
|
316
|
-
fields: { keywords: { query: { indices: [3, 17], values: [0.8, 0.4] } } },
|
|
317
|
-
limit: 3,
|
|
314
|
+
fields: { keywords: { query: { indices: [3, 17], values: [0.8, 0.4] }, limit: 3 } },
|
|
318
315
|
});
|
|
319
316
|
|
|
320
317
|
// multi-vector
|
|
321
318
|
await collection.search({
|
|
322
|
-
fields: { colbert: { query: [Array(8).fill(0.1), Array(8).fill(0.2)] } },
|
|
323
|
-
limit: 3,
|
|
319
|
+
fields: { colbert: { query: [Array(8).fill(0.1), Array(8).fill(0.2)], limit: 3 } },
|
|
324
320
|
});
|
|
325
321
|
```
|
|
326
322
|
|
|
@@ -333,10 +329,9 @@ like, or hand them to [`rerank()`](#fusing-results-with-rerank).
|
|
|
333
329
|
```typescript
|
|
334
330
|
const res = await collection.search({
|
|
335
331
|
fields: {
|
|
336
|
-
embedding: { query: [0.2, 0.2, 0.3, 0.3] },
|
|
337
|
-
keywords: { query: { indices: [3, 17], values: [0.8, 0.4] } },
|
|
332
|
+
embedding: { query: [0.2, 0.2, 0.3, 0.3], limit: 2 },
|
|
333
|
+
keywords: { query: { indices: [3, 17], values: [0.8, 0.4] }, limit: 2 },
|
|
338
334
|
},
|
|
339
|
-
limit: 2,
|
|
340
335
|
});
|
|
341
336
|
```
|
|
342
337
|
|
|
@@ -370,20 +365,19 @@ res.results.keywords; // that field's ranked hits
|
|
|
370
365
|
|
|
371
366
|
### Fusing results with `rerank()`
|
|
372
367
|
|
|
373
|
-
`rerank(searchResults, { name, limit, fieldWeights })` fuses the per-field
|
|
374
|
-
from `search()` into **one ranked list** using Reciprocal Rank Fusion. It's
|
|
375
|
-
standalone function — run `search()`, then pass its result to `rerank()`:
|
|
368
|
+
`rerank(searchResults, { name, limit, fieldWeights, rrfK })` fuses the per-field
|
|
369
|
+
lists from `search()` into **one ranked list** using Reciprocal Rank Fusion. It's
|
|
370
|
+
a standalone function — run `search()`, then pass its result to `rerank()`:
|
|
376
371
|
|
|
377
372
|
```typescript
|
|
378
373
|
import { rerank } from 'endee';
|
|
379
374
|
|
|
380
375
|
const res = await collection.search({
|
|
381
376
|
fields: {
|
|
382
|
-
embedding: { query: [0.2, 0.2, 0.3, 0.3] },
|
|
383
|
-
keywords: { query: { indices: [3, 17], values: [0.8, 0.4] } },
|
|
384
|
-
colbert: { query: [Array(8).fill(0.1), Array(8).fill(0.2)] },
|
|
377
|
+
embedding: { query: [0.2, 0.2, 0.3, 0.3], limit: 50 },
|
|
378
|
+
keywords: { query: { indices: [3, 17], values: [0.8, 0.4] }, limit: 50 },
|
|
379
|
+
colbert: { query: [Array(8).fill(0.1), Array(8).fill(0.2)], limit: 50 },
|
|
385
380
|
},
|
|
386
|
-
limit: 50,
|
|
387
381
|
});
|
|
388
382
|
|
|
389
383
|
const fused = rerank(res, {
|
|
@@ -409,9 +403,11 @@ const fused = rerank(res, {
|
|
|
409
403
|
}
|
|
410
404
|
```
|
|
411
405
|
|
|
412
|
-
`name` selects the algorithm (only `"rrf"` is supported today).
|
|
413
|
-
|
|
414
|
-
|
|
406
|
+
`name` selects the algorithm (only `"rrf"` is supported today). `rrfK` is the RRF
|
|
407
|
+
rank constant (default `60`); a larger value flattens the contribution of top
|
|
408
|
+
ranks, a smaller value sharpens it. Each fused hit keeps the `meta`/`filter` from
|
|
409
|
+
its per-field hit; `similarity` is replaced with the RRF score (sum of
|
|
410
|
+
`weight / (rrfK + rank)` across the fields it appeared in).
|
|
415
411
|
|
|
416
412
|
**Summary of return shapes**
|
|
417
413
|
|
|
@@ -426,14 +422,40 @@ the RRF score (sum of `weight / (rrfK + rank)` across the fields it appeared in)
|
|
|
426
422
|
|
|
427
423
|
```typescript
|
|
428
424
|
await collection.search({
|
|
429
|
-
fields: { embedding: { query: Array(8).fill(0.2) } },
|
|
430
|
-
limit: 5,
|
|
425
|
+
fields: { embedding: { query: Array(8).fill(0.2), limit: 5 } },
|
|
431
426
|
filter: [{ category: { $eq: 'electronics' } }],
|
|
432
427
|
});
|
|
433
428
|
```
|
|
434
429
|
|
|
435
430
|
Operators: `$eq`, `$in`, `$range`, `$gt`, `$gte`, `$lt`, `$lte` (see [Reference](#reference)).
|
|
436
431
|
|
|
432
|
+
### Filter tuning
|
|
433
|
+
|
|
434
|
+
Two optional params tune the speed/recall trade-off of **filtered** queries.
|
|
435
|
+
They're sent to the server under `filter_params` and ignored on unfiltered
|
|
436
|
+
searches.
|
|
437
|
+
|
|
438
|
+
```typescript
|
|
439
|
+
await collection.search({
|
|
440
|
+
fields: { embedding: { query: Array(8).fill(0.2), limit: 10 } },
|
|
441
|
+
filter: [{ category: { $eq: 'rare' } }],
|
|
442
|
+
prefilterCardinalityThreshold: 5000, // default 10,000; range 1,000–1,000,000
|
|
443
|
+
filterBoostPercentage: 25, // default 0; max 100
|
|
444
|
+
});
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
**`prefilterCardinalityThreshold`** — the cardinality below which the search
|
|
448
|
+
switches from HNSW filtered search to brute-force prefiltering. When very few
|
|
449
|
+
vectors match the filter, scanning the matched subset directly is faster and
|
|
450
|
+
more accurate than HNSW graph traversal. **Raising** it makes prefiltering kick
|
|
451
|
+
in more often (favors the exhaustive scan); **lowering** it favors HNSW graph
|
|
452
|
+
search (favors speed on large datasets).
|
|
453
|
+
|
|
454
|
+
**`filterBoostPercentage`** — in HNSW filtered search, candidates that fail the
|
|
455
|
+
filter are discarded, which can leave fewer than `limit` results. This expands
|
|
456
|
+
the internal candidate pool before filtering to compensate. `0` = no boost,
|
|
457
|
+
`100` = doubles the pool.
|
|
458
|
+
|
|
437
459
|
---
|
|
438
460
|
|
|
439
461
|
## Object operations
|
|
@@ -466,9 +488,15 @@ await collection.updateFilters([{ id: 'p2', filter: { category: 'sale' } }]); //
|
|
|
466
488
|
```typescript
|
|
467
489
|
await collection.describe(); // { name, fields, created_at, layout_version }
|
|
468
490
|
|
|
469
|
-
// Rebuild
|
|
470
|
-
|
|
471
|
-
await collection.
|
|
491
|
+
// Rebuild one or more dense fields' HNSW graphs in a single async call.
|
|
492
|
+
// Pass a list of field specs; only M/ef_con may change. Sparse fields are skipped server-side.
|
|
493
|
+
await collection.rebuild([
|
|
494
|
+
{ field: 'embedding', m: 20, efCon: 200 },
|
|
495
|
+
{ field: 'colbert', m: 12, efCon: 120 },
|
|
496
|
+
]); // { fields_total: 2, total_objects: ..., status: "in_progress" }
|
|
497
|
+
|
|
498
|
+
// Poll progress; reports the latest rebuilt field plus overall counts.
|
|
499
|
+
await collection.rebuildStatus(); // { field, fields_done, fields_total, percent_complete, status, ... }
|
|
472
500
|
|
|
473
501
|
// Defragment storage in place.
|
|
474
502
|
await collection.shrink(); // { status: "ok", reclaimed_bytes: <int> }
|
|
@@ -631,7 +659,7 @@ import type {
|
|
|
631
659
|
FullObject,
|
|
632
660
|
CollectionMetadata,
|
|
633
661
|
UpdateFilterEntry,
|
|
634
|
-
|
|
662
|
+
RebuildFieldSpec,
|
|
635
663
|
DatabaseInfo,
|
|
636
664
|
TokenInfo,
|
|
637
665
|
DbType,
|
package/dist/collection.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* `Endee.getCollection()` (or after `Endee.createCollection()`).
|
|
7
7
|
*/
|
|
8
8
|
import { type AxiosInstance } from 'axios';
|
|
9
|
-
import { type CollectionMetadata, type FieldDefinition, type FullObject, type ObjectInput, type
|
|
9
|
+
import { type CollectionMetadata, type FieldDefinition, type FullObject, type ObjectInput, type RebuildFieldSpec, type SearchOptions, type SearchResponse, type UpdateFilterEntry } from './types/index.js';
|
|
10
10
|
export declare class Collection {
|
|
11
11
|
readonly name: string;
|
|
12
12
|
private token;
|
|
@@ -38,10 +38,15 @@ export declare class Collection {
|
|
|
38
38
|
/**
|
|
39
39
|
* Search the collection across one or more fields in a single request.
|
|
40
40
|
*
|
|
41
|
-
* Each field is queried with the unified config `{ query,
|
|
42
|
-
* where `
|
|
43
|
-
* is always one ranked list per field:
|
|
44
|
-
* Use `rerank()` to fuse these into a
|
|
41
|
+
* Each field is queried with the unified config `{ query, limit?, ef_search? }`,
|
|
42
|
+
* where `limit` is the max number of hits to return for that field (defaults
|
|
43
|
+
* to `DEFAULT_TOP_K`). The result is always one ranked list per field:
|
|
44
|
+
* `{ results: { [field]: SearchHit[] } }`. Use `rerank()` to fuse these into a
|
|
45
|
+
* single ranked list.
|
|
46
|
+
*
|
|
47
|
+
* For filtered searches, `prefilterCardinalityThreshold` and
|
|
48
|
+
* `filterBoostPercentage` tune the speed/recall trade-off; when either is
|
|
49
|
+
* set they're sent to the server as `filter_params`.
|
|
45
50
|
*/
|
|
46
51
|
search(options: SearchOptions): Promise<SearchResponse>;
|
|
47
52
|
/** Delete a single object by id. Returns `{ deleted: "<id>" }`. */
|
|
@@ -64,11 +69,12 @@ export declare class Collection {
|
|
|
64
69
|
/** Return collection metadata: `{ name, fields, created_at, layout_version }`. */
|
|
65
70
|
describe(): Promise<CollectionMetadata>;
|
|
66
71
|
/**
|
|
67
|
-
* Rebuild
|
|
72
|
+
* Rebuild one or more dense vector fields' HNSW graphs (async).
|
|
68
73
|
* Only M/ef_con may change; dimension/space_type/precision are immutable.
|
|
69
|
-
* Poll progress with
|
|
74
|
+
* Any sparse field in the list is skipped server-side. Poll progress with
|
|
75
|
+
* `rebuildStatus()`.
|
|
70
76
|
*/
|
|
71
|
-
rebuild(
|
|
77
|
+
rebuild(fields: RebuildFieldSpec[]): Promise<Record<string, unknown>>;
|
|
72
78
|
/** Poll rebuild progress. */
|
|
73
79
|
rebuildStatus(): Promise<Record<string, unknown>>;
|
|
74
80
|
/** Defragment the collection's storage in place. */
|
package/dist/collection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAoBlD,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAEpB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAErB,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAkT1B,qBAAa,UAAU;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IACtB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,IAAI,CAAgB;gBAG1B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,CAAC,EAAE,aAAa;IAWtB,QAAQ,IAAI,MAAM;IAIlB,2EAA2E;IAC3E,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,WAAW;IAMnB;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA6GtE;;;;;;;;;;;;OAYG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAoH7D,mEAAmE;IAC7D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAehE;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAgCtD;;;OAGG;IACG,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAmB9F;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAsBnF,kFAAkF;IAC5E,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAe7C;;;;;OAKG;IACG,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAyB3E,6BAA6B;IACvB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAevD,oDAAoD;IAC9C,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAehD;;;;OAIG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAiBnE"}
|
package/dist/collection.js
CHANGED
|
@@ -9,7 +9,7 @@ import axios from 'axios';
|
|
|
9
9
|
import { encode, decode } from '@msgpack/msgpack';
|
|
10
10
|
import { jsonZip, jsonUnzip } from './crypto.js';
|
|
11
11
|
import { raiseException } from './exceptions.js';
|
|
12
|
-
import { DEFAULT_EF_SEARCH, DEFAULT_TOP_K, MAX_EF_SEARCH_ALLOWED, MAX_KEY_BYTES, MAX_TOP_K_ALLOWED, MAX_VALUE_BYTES, MAX_VECTORS_PER_BATCH, NORM_EPSILON, } from './constants.js';
|
|
12
|
+
import { DEFAULT_EF_SEARCH, DEFAULT_FILTER_BOOST_PERCENTAGE, DEFAULT_PREFILTER_THRESHOLD, DEFAULT_TOP_K, MAX_EF_SEARCH_ALLOWED, MAX_FILTER_BOOST_PERCENTAGE, MAX_KEY_BYTES, MAX_PREFILTER_THRESHOLD, MAX_TOP_K_ALLOWED, MAX_VALUE_BYTES, MAX_VECTORS_PER_BATCH, MIN_PREFILTER_THRESHOLD, NORM_EPSILON, } from './constants.js';
|
|
13
13
|
/**
|
|
14
14
|
* Reserved meta key. For cosine fields the client sends unit vectors (the server
|
|
15
15
|
* stores no norms), so we stash each vector's norm here at upsert time;
|
|
@@ -236,35 +236,39 @@ function isConfigDict(x) {
|
|
|
236
236
|
return typeof x === 'object' && x !== null && !Array.isArray(x) && 'query' in x;
|
|
237
237
|
}
|
|
238
238
|
/**
|
|
239
|
-
*
|
|
240
|
-
*
|
|
241
|
-
* uses the full `limit`; the result is clamped to at least 1.
|
|
239
|
+
* Resolve a field's `limit` (max hits to return for this field). A missing
|
|
240
|
+
* limit defaults to `DEFAULT_TOP_K`; the value must be in [1, MAX_TOP_K_ALLOWED].
|
|
242
241
|
*/
|
|
243
|
-
function
|
|
244
|
-
if (
|
|
245
|
-
return
|
|
246
|
-
if (typeof
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
242
|
+
function resolveFieldLimit(fieldName, limit) {
|
|
243
|
+
if (limit === undefined || limit === null)
|
|
244
|
+
return DEFAULT_TOP_K;
|
|
245
|
+
if (typeof limit !== 'number' ||
|
|
246
|
+
!Number.isInteger(limit) ||
|
|
247
|
+
limit < 1 ||
|
|
248
|
+
limit > MAX_TOP_K_ALLOWED) {
|
|
249
|
+
throw new Error(`Search field '${fieldName}': limit must be an integer between 1 and ${MAX_TOP_K_ALLOWED}.`);
|
|
250
|
+
}
|
|
251
|
+
return limit;
|
|
250
252
|
}
|
|
251
253
|
/**
|
|
252
254
|
* Build one entry for the `fields` array sent to the server from the unified
|
|
253
|
-
* per-field config: `{ query,
|
|
255
|
+
* per-field config: `{ query, limit?, ef_search? }`. `query` is required.
|
|
256
|
+
* Returns `[entry, fieldLimit]` so the caller can truncate decoded hits to the
|
|
257
|
+
* same per-field limit.
|
|
254
258
|
*/
|
|
255
|
-
function buildFieldSearchEntry(fieldName, fieldData,
|
|
259
|
+
function buildFieldSearchEntry(fieldName, fieldData, efSearch) {
|
|
256
260
|
if (!isConfigDict(fieldData)) {
|
|
257
|
-
throw new Error(`Search field '${fieldName}' must be an object of the form { query,
|
|
261
|
+
throw new Error(`Search field '${fieldName}' must be an object of the form { query, limit?, ef_search? }.`);
|
|
258
262
|
}
|
|
259
|
-
const { query,
|
|
260
|
-
const fieldLimit =
|
|
263
|
+
const { query, limit, ef_search, ...rest } = fieldData;
|
|
264
|
+
const fieldLimit = resolveFieldLimit(fieldName, limit);
|
|
261
265
|
const cfg = {
|
|
262
266
|
...rest,
|
|
263
267
|
query,
|
|
264
268
|
limit: fieldLimit,
|
|
265
269
|
ef_search: ef_search === undefined ? efSearch : ef_search,
|
|
266
270
|
};
|
|
267
|
-
return { [fieldName]: cfg };
|
|
271
|
+
return [{ [fieldName]: cfg }, fieldLimit];
|
|
268
272
|
}
|
|
269
273
|
export class Collection {
|
|
270
274
|
name;
|
|
@@ -426,29 +430,46 @@ export class Collection {
|
|
|
426
430
|
/**
|
|
427
431
|
* Search the collection across one or more fields in a single request.
|
|
428
432
|
*
|
|
429
|
-
* Each field is queried with the unified config `{ query,
|
|
430
|
-
* where `
|
|
431
|
-
* is always one ranked list per field:
|
|
432
|
-
* Use `rerank()` to fuse these into a
|
|
433
|
+
* Each field is queried with the unified config `{ query, limit?, ef_search? }`,
|
|
434
|
+
* where `limit` is the max number of hits to return for that field (defaults
|
|
435
|
+
* to `DEFAULT_TOP_K`). The result is always one ranked list per field:
|
|
436
|
+
* `{ results: { [field]: SearchHit[] } }`. Use `rerank()` to fuse these into a
|
|
437
|
+
* single ranked list.
|
|
438
|
+
*
|
|
439
|
+
* For filtered searches, `prefilterCardinalityThreshold` and
|
|
440
|
+
* `filterBoostPercentage` tune the speed/recall trade-off; when either is
|
|
441
|
+
* set they're sent to the server as `filter_params`.
|
|
433
442
|
*/
|
|
434
443
|
async search(options) {
|
|
435
|
-
const { fields,
|
|
444
|
+
const { fields, filter = null, efSearch = DEFAULT_EF_SEARCH, prefilterCardinalityThreshold, filterBoostPercentage, } = options;
|
|
436
445
|
const fieldNames = Object.keys(fields ?? {});
|
|
437
446
|
if (fieldNames.length === 0)
|
|
438
447
|
throw new Error('search requires at least one field');
|
|
439
|
-
if (!(limit > 0 && limit <= MAX_TOP_K_ALLOWED)) {
|
|
440
|
-
throw new Error(`limit must be between 1 and ${MAX_TOP_K_ALLOWED}`);
|
|
441
|
-
}
|
|
442
448
|
if (!(efSearch > 0 && efSearch <= MAX_EF_SEARCH_ALLOWED)) {
|
|
443
449
|
throw new Error(`ef_search must be between 1 and ${MAX_EF_SEARCH_ALLOWED}`);
|
|
444
450
|
}
|
|
451
|
+
// Optional filter-tuning params (filtered search only). Validate the ranges
|
|
452
|
+
// up front; they're only sent to the server when explicitly provided.
|
|
453
|
+
if (prefilterCardinalityThreshold !== undefined) {
|
|
454
|
+
const t = prefilterCardinalityThreshold;
|
|
455
|
+
if (!Number.isFinite(t) || t < MIN_PREFILTER_THRESHOLD || t > MAX_PREFILTER_THRESHOLD) {
|
|
456
|
+
throw new Error(`prefilterCardinalityThreshold must be between ${MIN_PREFILTER_THRESHOLD} and ${MAX_PREFILTER_THRESHOLD}`);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
if (filterBoostPercentage !== undefined) {
|
|
460
|
+
const b = filterBoostPercentage;
|
|
461
|
+
if (!Number.isFinite(b) || b < 0 || b > MAX_FILTER_BOOST_PERCENTAGE) {
|
|
462
|
+
throw new Error(`filterBoostPercentage must be between 0 and ${MAX_FILTER_BOOST_PERCENTAGE}`);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
445
465
|
// L2-normalize query vectors for cosine fields (mirrors upsert).
|
|
446
466
|
const fieldIdx = this.fieldIndex();
|
|
447
467
|
const fieldsArray = [];
|
|
468
|
+
const fieldLimits = {};
|
|
448
469
|
for (const fname of fieldNames) {
|
|
449
470
|
const fieldData = fields[fname];
|
|
450
471
|
if (!isConfigDict(fieldData)) {
|
|
451
|
-
throw new Error(`Search field '${fname}' must be an object of the form { query,
|
|
472
|
+
throw new Error(`Search field '${fname}' must be an object of the form { query, limit?, ef_search? }.`);
|
|
452
473
|
}
|
|
453
474
|
const normalized = { ...fieldData };
|
|
454
475
|
let q = fieldData.query;
|
|
@@ -467,11 +488,21 @@ export class Collection {
|
|
|
467
488
|
}
|
|
468
489
|
}
|
|
469
490
|
normalized.query = q;
|
|
470
|
-
|
|
491
|
+
const [entry, fieldLimit] = buildFieldSearchEntry(fname, normalized, efSearch);
|
|
492
|
+
fieldsArray.push(entry);
|
|
493
|
+
fieldLimits[fname] = fieldLimit;
|
|
471
494
|
}
|
|
472
|
-
const payload = { fields: fieldsArray
|
|
495
|
+
const payload = { fields: fieldsArray };
|
|
473
496
|
if (filter !== null)
|
|
474
497
|
payload.filter = filter;
|
|
498
|
+
// Filter tuning: send filter_params only when the caller tunes at least one
|
|
499
|
+
// knob, defaulting the other so the server gets a complete object.
|
|
500
|
+
if (prefilterCardinalityThreshold !== undefined || filterBoostPercentage !== undefined) {
|
|
501
|
+
payload.filter_params = {
|
|
502
|
+
prefilter_threshold: prefilterCardinalityThreshold ?? DEFAULT_PREFILTER_THRESHOLD,
|
|
503
|
+
boost_percentage: filterBoostPercentage ?? DEFAULT_FILTER_BOOST_PERCENTAGE,
|
|
504
|
+
};
|
|
505
|
+
}
|
|
475
506
|
let response;
|
|
476
507
|
try {
|
|
477
508
|
response = await this.http.post(`${this.v2Url}/collections/${this.name}/search`, payload, {
|
|
@@ -497,10 +528,10 @@ export class Collection {
|
|
|
497
528
|
return (resultsMap?.[name] ?? []);
|
|
498
529
|
};
|
|
499
530
|
// Always per-field results, unfused. Each field is truncated to its own
|
|
500
|
-
//
|
|
531
|
+
// limit (already applied server-side via the per-field limit).
|
|
501
532
|
const perField = {};
|
|
502
533
|
for (const fname of fieldNames) {
|
|
503
|
-
perField[fname] = decodeFieldHits(getField(fname), objectsMap,
|
|
534
|
+
perField[fname] = decodeFieldHits(getField(fname), objectsMap, fieldLimits[fname]);
|
|
504
535
|
}
|
|
505
536
|
return { results: perField };
|
|
506
537
|
}
|
|
@@ -614,19 +645,25 @@ export class Collection {
|
|
|
614
645
|
return response.data;
|
|
615
646
|
}
|
|
616
647
|
/**
|
|
617
|
-
* Rebuild
|
|
648
|
+
* Rebuild one or more dense vector fields' HNSW graphs (async).
|
|
618
649
|
* Only M/ef_con may change; dimension/space_type/precision are immutable.
|
|
619
|
-
* Poll progress with
|
|
650
|
+
* Any sparse field in the list is skipped server-side. Poll progress with
|
|
651
|
+
* `rebuildStatus()`.
|
|
620
652
|
*/
|
|
621
|
-
async rebuild(
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
653
|
+
async rebuild(fields) {
|
|
654
|
+
if (!Array.isArray(fields) || fields.length === 0)
|
|
655
|
+
throw new Error('rebuild requires a non-empty list of field specs');
|
|
656
|
+
const specs = fields.map(({ field, m, efCon }) => {
|
|
657
|
+
if (!field)
|
|
658
|
+
throw new Error("each field spec must include a 'field' name");
|
|
659
|
+
const spec = { field };
|
|
660
|
+
if (m !== undefined)
|
|
661
|
+
spec.M = m;
|
|
662
|
+
if (efCon !== undefined)
|
|
663
|
+
spec.ef_con = efCon;
|
|
664
|
+
return spec;
|
|
665
|
+
});
|
|
666
|
+
const body = { fields: specs };
|
|
630
667
|
let response;
|
|
631
668
|
try {
|
|
632
669
|
response = await this.http.post(`${this.v2Url}/collections/${this.name}/rebuild`, body, {
|
package/dist/collection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -20,6 +20,21 @@ export declare const DEFAULT_TOP_K = 10;
|
|
|
20
20
|
export declare const DEFAULT_EF_SEARCH = 128;
|
|
21
21
|
/** Default RRF rank constant k. */
|
|
22
22
|
export declare const DEFAULT_RRF_RANK_CONSTANT = 60;
|
|
23
|
+
/**
|
|
24
|
+
* Filter tuning (filtered search only). `prefilter_threshold` controls when the
|
|
25
|
+
* search switches from HNSW filtered search to brute-force prefiltering; raising
|
|
26
|
+
* it favors the exhaustive scan, lowering it favors HNSW graph search.
|
|
27
|
+
*/
|
|
28
|
+
export declare const DEFAULT_PREFILTER_THRESHOLD = 10000;
|
|
29
|
+
export declare const MIN_PREFILTER_THRESHOLD = 1000;
|
|
30
|
+
export declare const MAX_PREFILTER_THRESHOLD = 1000000;
|
|
31
|
+
/**
|
|
32
|
+
* `boost_percentage` expands the HNSW candidate pool before the filter is
|
|
33
|
+
* applied, to compensate for candidates discarded by the filter. 0 = no boost,
|
|
34
|
+
* 100 = double the candidate pool.
|
|
35
|
+
*/
|
|
36
|
+
export declare const DEFAULT_FILTER_BOOST_PERCENTAGE = 0;
|
|
37
|
+
export declare const MAX_FILTER_BOOST_PERCENTAGE = 100;
|
|
23
38
|
/** Filter key/value size guards (UTF-8 bytes) — prevents server-side valsize errors. */
|
|
24
39
|
export declare const MAX_KEY_BYTES = 128;
|
|
25
40
|
export declare const MAX_VALUE_BYTES = 1024;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6CAA6C;AAC7C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,2DAA2D;AAC3D,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,wEAAwE;AACxE,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,yDAAyD;AACzD,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,mCAAmC;AACnC,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,wFAAwF;AACxF,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,wCAAwC;AACxC,eAAO,MAAM,qBAAqB,iCAAkC,CAAC;AAErE,oCAAoC;AACpC,eAAO,MAAM,2BAA2B,oCAAqC,CAAC;AAE9E,0DAA0D;AAC1D,eAAO,MAAM,cAAc,oDAAqD,CAAC;AAEjF,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,sBAAuB,CAAC;AAEtD,iEAAiE;AACjE,eAAO,MAAM,cAAc,iCAAiC,CAAC;AAE7D,iEAAiE;AACjE,eAAO,MAAM,YAAY,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6CAA6C;AAC7C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,2DAA2D;AAC3D,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,wEAAwE;AACxE,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,yDAAyD;AACzD,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,mCAAmC;AACnC,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAClD,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAC7C,eAAO,MAAM,uBAAuB,UAAY,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,IAAI,CAAC;AACjD,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C,wFAAwF;AACxF,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,wCAAwC;AACxC,eAAO,MAAM,qBAAqB,iCAAkC,CAAC;AAErE,oCAAoC;AACpC,eAAO,MAAM,2BAA2B,oCAAqC,CAAC;AAE9E,0DAA0D;AAC1D,eAAO,MAAM,cAAc,oDAAqD,CAAC;AAEjF,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,sBAAuB,CAAC;AAEtD,iEAAiE;AACjE,eAAO,MAAM,cAAc,iCAAiC,CAAC;AAE7D,iEAAiE;AACjE,eAAO,MAAM,YAAY,QAAQ,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -20,6 +20,21 @@ export const DEFAULT_TOP_K = 10;
|
|
|
20
20
|
export const DEFAULT_EF_SEARCH = 128;
|
|
21
21
|
/** Default RRF rank constant k. */
|
|
22
22
|
export const DEFAULT_RRF_RANK_CONSTANT = 60;
|
|
23
|
+
/**
|
|
24
|
+
* Filter tuning (filtered search only). `prefilter_threshold` controls when the
|
|
25
|
+
* search switches from HNSW filtered search to brute-force prefiltering; raising
|
|
26
|
+
* it favors the exhaustive scan, lowering it favors HNSW graph search.
|
|
27
|
+
*/
|
|
28
|
+
export const DEFAULT_PREFILTER_THRESHOLD = 10_000;
|
|
29
|
+
export const MIN_PREFILTER_THRESHOLD = 1_000;
|
|
30
|
+
export const MAX_PREFILTER_THRESHOLD = 1_000_000;
|
|
31
|
+
/**
|
|
32
|
+
* `boost_percentage` expands the HNSW candidate pool before the filter is
|
|
33
|
+
* applied, to compensate for candidates discarded by the filter. 0 = no boost,
|
|
34
|
+
* 100 = double the candidate pool.
|
|
35
|
+
*/
|
|
36
|
+
export const DEFAULT_FILTER_BOOST_PERCENTAGE = 0;
|
|
37
|
+
export const MAX_FILTER_BOOST_PERCENTAGE = 100;
|
|
23
38
|
/** Filter key/value size guards (UTF-8 bytes) — prevents server-side valsize errors. */
|
|
24
39
|
export const MAX_KEY_BYTES = 128;
|
|
25
40
|
export const MAX_VALUE_BYTES = 1024;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6CAA6C;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,wEAAwE;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE5C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC,2DAA2D;AAC3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,wEAAwE;AACxE,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AAErD,yDAAyD;AACzD,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,mCAAmC;AACnC,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C,wFAAwF;AACxF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,wCAAwC;AACxC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAErE,oCAAoC;AACpC,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,SAAS,EAAE,YAAY,CAAU,CAAC;AAE9E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAU,CAAC;AAEjF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,GAAG,CAAU,CAAC;AAEtD,iEAAiE;AACjE,MAAM,CAAC,MAAM,cAAc,GAAG,8BAA8B,CAAC;AAE7D,iEAAiE;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6CAA6C;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,wEAAwE;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE5C,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC,2DAA2D;AAC3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,wEAAwE;AACxE,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,CAAC;AAErD,yDAAyD;AACzD,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC,2EAA2E;AAC3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,mCAAmC;AACnC,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC;AAClD,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAAG,SAAS,CAAC;AAEjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C,wFAAwF;AACxF,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,wCAAwC;AACxC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAErE,oCAAoC;AACpC,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,SAAS,EAAE,YAAY,CAAU,CAAC;AAE9E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAU,CAAC;AAEjF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,GAAG,CAAU,CAAC;AAEtD,iEAAiE;AACjE,MAAM,CAAC,MAAM,cAAc,GAAG,8BAA8B,CAAC;AAE7D,iEAAiE;AACjE,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { Endee } from './endee.js';
|
|
5
5
|
export { Collection } from './collection.js';
|
|
6
|
-
export {
|
|
6
|
+
export { rerank } from './reranker.js';
|
|
7
7
|
export * from './exceptions.js';
|
|
8
8
|
export * from './types/index.js';
|
|
9
9
|
export * from './constants.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { Endee } from './endee.js';
|
|
5
5
|
export { Collection } from './collection.js';
|
|
6
|
-
export {
|
|
6
|
+
export { rerank } from './reranker.js';
|
|
7
7
|
export * from './exceptions.js';
|
|
8
8
|
export * from './types/index.js';
|
|
9
9
|
export * from './constants.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
|
package/dist/reranker.d.ts
CHANGED
|
@@ -1,21 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Reranking utilities for the Endee client.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `[intId, score]` tuples truncated to `limit`.
|
|
4
|
+
* Fuses the per-field ranked hits from `search()` into a single ranked list
|
|
5
|
+
* using Reciprocal Rank Fusion.
|
|
7
6
|
*/
|
|
8
7
|
import type { RerankOptions, RerankResponse, SearchResponse } from './types/index.js';
|
|
9
|
-
/** `{ fieldName: [[intId, score], ...] }` from the server SearchResult. */
|
|
10
|
-
export type ResultsMap = Map<string, Array<[number, number]>> | Record<string, Array<[number, number]>>;
|
|
11
|
-
/**
|
|
12
|
-
* Reciprocal Rank Fusion across named fields.
|
|
13
|
-
*
|
|
14
|
-
* For each field, a hit at rank `r` (1-based) contributes `weight / (k + r)` to
|
|
15
|
-
* that object's score. Scores are summed across fields and the top `limit`
|
|
16
|
-
* objects are returned, sorted by score descending.
|
|
17
|
-
*/
|
|
18
|
-
export declare function applyRrf(resultsMap: ResultsMap, fieldWeights: Record<string, number>, limit: number, k?: number): Array<[number, number]>;
|
|
19
8
|
/**
|
|
20
9
|
* Fuse the per-field results from `search()` into a single ranked list.
|
|
21
10
|
*
|
package/dist/reranker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reranker.d.ts","sourceRoot":"","sources":["../src/reranker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"reranker.d.ts","sourceRoot":"","sources":["../src/reranker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAa,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAsBjG;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,GAAG,cAAc,CAmC5F"}
|
package/dist/reranker.js
CHANGED
|
@@ -1,38 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Reranking utilities for the Endee client.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `[intId, score]` tuples truncated to `limit`.
|
|
4
|
+
* Fuses the per-field ranked hits from `search()` into a single ranked list
|
|
5
|
+
* using Reciprocal Rank Fusion.
|
|
7
6
|
*/
|
|
8
7
|
import { DEFAULT_RRF_RANK_CONSTANT, DEFAULT_TOP_K } from './constants.js';
|
|
9
|
-
function entries(map) {
|
|
10
|
-
if (map instanceof Map)
|
|
11
|
-
return Array.from(map.entries());
|
|
12
|
-
return Object.entries(map);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Reciprocal Rank Fusion across named fields.
|
|
16
|
-
*
|
|
17
|
-
* For each field, a hit at rank `r` (1-based) contributes `weight / (k + r)` to
|
|
18
|
-
* that object's score. Scores are summed across fields and the top `limit`
|
|
19
|
-
* objects are returned, sorted by score descending.
|
|
20
|
-
*/
|
|
21
|
-
export function applyRrf(resultsMap, fieldWeights, limit, k = 60) {
|
|
22
|
-
const rrfScores = new Map();
|
|
23
|
-
for (const [fieldName, hits] of entries(resultsMap)) {
|
|
24
|
-
const weight = fieldWeights[fieldName] ?? 0.0;
|
|
25
|
-
let rank = 1;
|
|
26
|
-
for (const hit of hits || []) {
|
|
27
|
-
const intId = hit[0];
|
|
28
|
-
rrfScores.set(intId, (rrfScores.get(intId) ?? 0.0) + weight / (k + rank));
|
|
29
|
-
rank += 1;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return Array.from(rrfScores.entries())
|
|
33
|
-
.sort((a, b) => b[1] - a[1])
|
|
34
|
-
.slice(0, limit);
|
|
35
|
-
}
|
|
36
8
|
/** Resolve and validate per-field weights against the fields present. */
|
|
37
9
|
function resolveFieldWeights(fieldNames, fieldWeights) {
|
|
38
10
|
if (fieldWeights === null || fieldWeights === undefined) {
|
package/dist/reranker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reranker.js","sourceRoot":"","sources":["../src/reranker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"reranker.js","sourceRoot":"","sources":["../src/reranker.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -56,14 +56,13 @@ export interface ObjectInput {
|
|
|
56
56
|
fields?: Record<string, FieldValue>;
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
|
-
* Per-field search config. The query value is required; `
|
|
60
|
-
*
|
|
61
|
-
* limit = ceil(weight * limit)). Omit `weight` to use the full `limit`.
|
|
59
|
+
* Per-field search config. The query value is required; `limit` is the max
|
|
60
|
+
* number of hits to return for this field (defaults to `DEFAULT_TOP_K`).
|
|
62
61
|
*/
|
|
63
62
|
export interface FieldQueryConfig {
|
|
64
63
|
query: FieldValue;
|
|
65
|
-
/**
|
|
66
|
-
|
|
64
|
+
/** Max hits to return for this field (1..MAX_TOP_K_ALLOWED). Defaults to DEFAULT_TOP_K. */
|
|
65
|
+
limit?: number;
|
|
67
66
|
ef_search?: number;
|
|
68
67
|
[key: string]: unknown;
|
|
69
68
|
}
|
|
@@ -71,9 +70,20 @@ export interface FieldQueryConfig {
|
|
|
71
70
|
export type SearchFieldValue = FieldQueryConfig;
|
|
72
71
|
export interface SearchOptions {
|
|
73
72
|
fields: Record<string, SearchFieldValue>;
|
|
74
|
-
limit?: number;
|
|
75
73
|
filter?: Array<Record<string, unknown>> | null;
|
|
76
74
|
efSearch?: number;
|
|
75
|
+
/**
|
|
76
|
+
* Filtered search only. Cardinality below which the search switches from HNSW
|
|
77
|
+
* filtered search to brute-force prefiltering. Default 10,000; range
|
|
78
|
+
* 1,000–1,000,000. Raise to favor exhaustive scan, lower to favor HNSW.
|
|
79
|
+
*/
|
|
80
|
+
prefilterCardinalityThreshold?: number;
|
|
81
|
+
/**
|
|
82
|
+
* Filtered search only. Percentage by which to expand the HNSW candidate pool
|
|
83
|
+
* before filtering, to compensate for filtered-out candidates. Default 0
|
|
84
|
+
* (no boost); max 100 (doubles the pool).
|
|
85
|
+
*/
|
|
86
|
+
filterBoostPercentage?: number;
|
|
77
87
|
}
|
|
78
88
|
/** Options for the standalone `rerank()` fusion of per-field search results. */
|
|
79
89
|
export interface RerankOptions {
|
|
@@ -129,7 +139,12 @@ export interface UpdateFilterEntry {
|
|
|
129
139
|
id: string;
|
|
130
140
|
filter: Record<string, unknown>;
|
|
131
141
|
}
|
|
132
|
-
|
|
142
|
+
/**
|
|
143
|
+
* A single dense vector field to rebuild. `m`/`efCon` are mapped to the
|
|
144
|
+
* server-native `M`/`ef_con` keys when the request is sent. Sparse fields are
|
|
145
|
+
* skipped server-side.
|
|
146
|
+
*/
|
|
147
|
+
export interface RebuildFieldSpec {
|
|
133
148
|
field: string;
|
|
134
149
|
m?: number;
|
|
135
150
|
efCon?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE7D,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/B,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,kCAAkC;IAClC,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,iEAAiE;AACjE,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,uEAAuE;AACvE,MAAM,MAAM,UAAU,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,WAAW,CAAC;AAE7D,4BAA4B;AAC5B,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACrC;AAED
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE7D,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/B,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACzB,kCAAkC;IAClC,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,iEAAiE;AACjE,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,uEAAuE;AACvE,MAAM,MAAM,UAAU,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,WAAW,CAAC;AAE7D,4BAA4B;AAC5B,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wEAAwE;AACxE,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,IAAI,EAAE,KAAK,CAAC;IACZ,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC7C,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,kCAAkC;AAClC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,iDAAiD;AACjD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACjE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;CAC3C;AAED,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,mDAAmD;AACnD,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,YAAY,CAAC;AAEhE,wDAAwD;AACxD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC;AAEnC,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,kFAAkF;AAClF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
|