@harperfast/harper 5.2.1 → 5.2.2
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/bin/copyDb.ts +19 -7
- package/components/deploymentRecorder.ts +102 -11
- package/components/operations.js +4 -0
- package/config/configUtils.ts +66 -11
- package/config/harperConfigEnvVars.ts +114 -17
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
- package/dist/bin/copyDb.js +20 -7
- package/dist/bin/copyDb.js.map +1 -1
- package/dist/components/deploymentRecorder.d.ts +6 -0
- package/dist/components/deploymentRecorder.js +94 -12
- package/dist/components/deploymentRecorder.js.map +1 -1
- package/dist/components/operations.js +4 -0
- package/dist/components/operations.js.map +1 -1
- package/dist/config/configUtils.d.ts +6 -0
- package/dist/config/configUtils.js +65 -9
- package/dist/config/configUtils.js.map +1 -1
- package/dist/config/harperConfigEnvVars.js +108 -16
- package/dist/config/harperConfigEnvVars.js.map +1 -1
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
- package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -1
- package/dist/resources/DatabaseTransaction.d.ts +2 -0
- package/dist/resources/DatabaseTransaction.js +6 -5
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/Table.d.ts +2 -1
- package/dist/resources/Table.js +66 -16
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/auditStore.js +27 -1
- package/dist/resources/auditStore.js.map +1 -1
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +15 -2
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +128 -39
- package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
- package/dist/resources/search.d.ts +1 -1
- package/dist/resources/search.js +7 -3
- package/dist/resources/search.js.map +1 -1
- package/dist/server/threads/manageThreads.js +8 -0
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/sqlEngine/parser/normalizer.js +37 -9
- package/dist/sqlEngine/parser/normalizer.js.map +1 -1
- package/dist/utility/environment/environmentManager.d.ts +11 -0
- package/dist/utility/environment/environmentManager.js +154 -0
- package/dist/utility/environment/environmentManager.js.map +1 -1
- package/dist/utility/lmdb/environmentUtility.js +2 -1
- package/dist/utility/lmdb/environmentUtility.js.map +1 -1
- package/npm-shrinkwrap.json +13 -7
- package/package.json +2 -2
- package/resources/DESIGN.md +1 -0
- package/resources/DatabaseTransaction.ts +7 -5
- package/resources/Table.ts +77 -16
- package/resources/auditStore.ts +32 -1
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +119 -45
- package/resources/search.ts +8 -3
- package/server/threads/manageThreads.js +8 -0
- package/studio/web/assets/{Chat-aApwhRmz.js → Chat-BMUjPklt.js} +5 -5
- package/studio/web/assets/{Chat-aApwhRmz.js.map → Chat-BMUjPklt.js.map} +1 -1
- package/studio/web/assets/{FloatingChat-sC0H91n9.js → FloatingChat-Cbghuxe5.js} +5 -5
- package/studio/web/assets/{FloatingChat-sC0H91n9.js.map → FloatingChat-Cbghuxe5.js.map} +1 -1
- package/studio/web/assets/{apiToken-DZ8JhHOI.js → apiToken-CkgTQAqc.js} +2 -2
- package/studio/web/assets/{apiToken-DZ8JhHOI.js.map → apiToken-CkgTQAqc.js.map} +1 -1
- package/studio/web/assets/{applications-9SEVLIO5.js → applications-WvF4NOTN.js} +13 -13
- package/studio/web/assets/applications-WvF4NOTN.js.map +1 -0
- package/studio/web/assets/chevron-right-anDJCGlp.js +2 -0
- package/studio/web/assets/chevron-right-anDJCGlp.js.map +1 -0
- package/studio/web/assets/index-CDeqVx71.css +1 -0
- package/studio/web/assets/index-Sevt3MVx.js +819 -0
- package/studio/web/assets/index-Sevt3MVx.js.map +1 -0
- package/studio/web/assets/index.lazy-Dg5YYPGg.js +14 -0
- package/studio/web/assets/{index.lazy-CN1zq4I4.js.map → index.lazy-Dg5YYPGg.js.map} +1 -1
- package/studio/web/assets/{jsonMode-Cjj7dtlr.js → jsonMode-CBSEleE7.js} +2 -2
- package/studio/web/assets/{jsonMode-Cjj7dtlr.js.map → jsonMode-CBSEleE7.js.map} +1 -1
- package/studio/web/assets/languageServices-gxedeeTo.js +2 -0
- package/studio/web/assets/languageServices-gxedeeTo.js.map +1 -0
- package/studio/web/assets/{notifications-BFAF07xr.js → notifications-Ap84YyQp.js} +2 -2
- package/studio/web/assets/{notifications-BFAF07xr.js.map → notifications-Ap84YyQp.js.map} +1 -1
- package/studio/web/assets/notifications-vehqyOLM.js +2 -0
- package/studio/web/assets/{notifications-CKlYVvVN.js.map → notifications-vehqyOLM.js.map} +1 -1
- package/studio/web/assets/{pollUnlessForbidden-HHdQZW1N.js → pollUnlessForbidden-BhzefVRn.js} +2 -2
- package/studio/web/assets/pollUnlessForbidden-BhzefVRn.js.map +1 -0
- package/studio/web/assets/{profile-A1zhEdFG.js → profile-DzDpRLHY.js} +2 -2
- package/studio/web/assets/{profile-A1zhEdFG.js.map → profile-DzDpRLHY.js.map} +1 -1
- package/studio/web/assets/queryClient-CgtkoiCY.js +2 -0
- package/studio/web/assets/queryClient-CgtkoiCY.js.map +1 -0
- package/studio/web/assets/regions-DpJ8s7iN.js +2 -0
- package/studio/web/assets/regions-DpJ8s7iN.js.map +1 -0
- package/studio/web/assets/register-BDy01-q3.js +3 -0
- package/studio/web/assets/register-BDy01-q3.js.map +1 -0
- package/studio/web/assets/register-CQHRwNP4.js +3 -0
- package/studio/web/assets/register-CQHRwNP4.js.map +1 -0
- package/studio/web/assets/{setComponentFile-SEtBt_GV.js → setComponentFile-D0aPcI3W.js} +2 -2
- package/studio/web/assets/{setComponentFile-SEtBt_GV.js.map → setComponentFile-D0aPcI3W.js.map} +1 -1
- package/studio/web/assets/setup-I15FAF9H.js +3 -0
- package/studio/web/assets/{setup-BisINqdH.js.map → setup-I15FAF9H.js.map} +1 -1
- package/studio/web/assets/status-BF1eJshJ.js +62 -0
- package/studio/web/assets/status-BF1eJshJ.js.map +1 -0
- package/studio/web/assets/{swagger-ui-react-CAi_s1PC.js → swagger-ui-react-DwSPXXhl.js} +2 -2
- package/studio/web/assets/{swagger-ui-react-CAi_s1PC.js.map → swagger-ui-react-DwSPXXhl.js.map} +1 -1
- package/studio/web/assets/{textarea-DhLMZ3PA.js → table-DpOjNQHt.js} +2 -10
- package/studio/web/assets/table-DpOjNQHt.js.map +1 -0
- package/studio/web/assets/{tsMode-DT74tlkM.js → tsMode-Bu51A-VG.js} +2 -2
- package/studio/web/assets/{tsMode-DT74tlkM.js.map → tsMode-Bu51A-VG.js.map} +1 -1
- package/studio/web/assets/{useEntityRestURL-CGRGc1n7.js → useEntityRestURL-DrV1zMrN.js} +2 -2
- package/studio/web/assets/{useEntityRestURL-CGRGc1n7.js.map → useEntityRestURL-DrV1zMrN.js.map} +1 -1
- package/studio/web/index.html +6 -7
- package/utility/environment/environmentManager.ts +152 -0
- package/utility/lmdb/environmentUtility.ts +2 -1
- package/studio/web/assets/applications-9SEVLIO5.js.map +0 -1
- package/studio/web/assets/index-C8Mv9kHV.css +0 -1
- package/studio/web/assets/index-Dy3uDGXb.js +0 -809
- package/studio/web/assets/index-Dy3uDGXb.js.map +0 -1
- package/studio/web/assets/index.lazy-CN1zq4I4.js +0 -14
- package/studio/web/assets/notifications-CKlYVvVN.js +0 -2
- package/studio/web/assets/pollUnlessForbidden-HHdQZW1N.js.map +0 -1
- package/studio/web/assets/queryClient-CbA8wM7J.js +0 -2
- package/studio/web/assets/queryClient-CbA8wM7J.js.map +0 -1
- package/studio/web/assets/setup-BisINqdH.js +0 -3
- package/studio/web/assets/status-BuQoCc7l.js +0 -62
- package/studio/web/assets/status-BuQoCc7l.js.map +0 -1
- package/studio/web/assets/textarea-DhLMZ3PA.js.map +0 -1
|
@@ -123,6 +123,10 @@ const MAX_DELETES_PER_CLEANUP = 1000;
|
|
|
123
123
|
// setTimeout silently falls back to 1ms for delays past this, which would turn the backoff into the
|
|
124
124
|
// hot loop it is meant to avoid — a `logging.auditRetention` over ~248 days reaches it via retention/10
|
|
125
125
|
const MAX_CLEANUP_DELAY = 2 ** 31 - 1;
|
|
126
|
+
// separate mint/read latches so a legacy-entry read warn can't mask the still-minting signal;
|
|
127
|
+
// mint latch keyed per (table, type) so one entry type can't silence another's producer stack
|
|
128
|
+
const warnedBodylessMints = new Set();
|
|
129
|
+
const warnedBodylessTables = new Set();
|
|
126
130
|
const FLOAT_TARGET = new Float64Array(1);
|
|
127
131
|
const FLOAT_BUFFER = new Uint8Array(FLOAT_TARGET.buffer);
|
|
128
132
|
let DEFAULT_AUDIT_CLEANUP_DELAY = 10000; // default delay of 10 seconds
|
|
@@ -415,10 +419,21 @@ const ORIGINATING_OPERATIONS = {
|
|
|
415
419
|
*/
|
|
416
420
|
function createAuditEntry(auditRecord, start = 0) {
|
|
417
421
|
const { version, tableId, recordId, previousVersion, nodeId, user, type, encodedRecord, extendedType, residencyId, previousResidencyId, expiresAt, originatingOperation, previousAdditionalAuditRefs, } = auditRecord;
|
|
418
|
-
|
|
422
|
+
let action = EVENT_TYPES[type];
|
|
419
423
|
if (!action) {
|
|
420
424
|
throw new Error(`Invalid audit entry type ${type}`);
|
|
421
425
|
}
|
|
426
|
+
if (action & (HAS_RECORD | HAS_PARTIAL_RECORD) && !encodedRecord?.length) {
|
|
427
|
+
// Readers decode the remainder whenever HAS_RECORD is set, so an audit-only commit minted with
|
|
428
|
+
// no body must not advertise one (#2153). HAS_PARTIAL_RECORD is kept: it also drives
|
|
429
|
+
// record-history reconstruction, and the read path tolerates the empty body.
|
|
430
|
+
if (!warnedBodylessMints.has(`${tableId}:${type}`)) {
|
|
431
|
+
warnedBodylessMints.add(`${tableId}:${type}`);
|
|
432
|
+
// the Error's stack identifies which write path delivered the missing value
|
|
433
|
+
harperLogger.warn(`Audit entry (${type}) for record ${recordId} in table ${tableId} has no record body`, new Error('bodyless audit mint'));
|
|
434
|
+
}
|
|
435
|
+
action &= ~HAS_RECORD;
|
|
436
|
+
}
|
|
422
437
|
let position = start + 1;
|
|
423
438
|
if (previousVersion) {
|
|
424
439
|
if (previousVersion > 1)
|
|
@@ -630,6 +645,17 @@ function readAuditEntry(buffer, start = 0, end = undefined) {
|
|
|
630
645
|
},
|
|
631
646
|
getValue(store, fullRecord, auditTime) {
|
|
632
647
|
if (action & HAS_RECORD || (action & HAS_PARTIAL_RECORD && !fullRecord)) {
|
|
648
|
+
if (decoder.position >= (end ?? buffer.byteLength)) {
|
|
649
|
+
// Entry advertises a record but has no body (minted before #2153): nothing to decode, and
|
|
650
|
+
// return undefined rather than falling through — this branch means the caller asked for the
|
|
651
|
+
// entry's own content (full-record consumers with an auditTime never enter it for partials
|
|
652
|
+
// and still reconstruct below). Warn latched per table: this getter runs inside range scans.
|
|
653
|
+
if (!warnedBodylessTables.has(tableId)) {
|
|
654
|
+
warnedBodylessTables.add(tableId);
|
|
655
|
+
harperLogger.warn(`Audit entry (${EVENT_TYPES[action & 0xf]}) for table ${tableId} advertises a record but has no body; treating as having no record`);
|
|
656
|
+
}
|
|
657
|
+
return;
|
|
658
|
+
}
|
|
633
659
|
if (!value) {
|
|
634
660
|
value = (0, blob_ts_1.decodeFromDatabase)(
|
|
635
661
|
// the audit value has no on-disk timestamp/metadata prefix (the audit entry carries
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auditStore.js","sourceRoot":"","sources":["../../resources/auditStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auditStore.js","sourceRoot":"","sources":["../../resources/auditStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,8 @@ export declare class HierarchicalNavigableSmallWorld {
|
|
|
26
26
|
int8: boolean;
|
|
27
27
|
efSearchConfigured: boolean;
|
|
28
28
|
private convertedNodes;
|
|
29
|
+
private nodeCount;
|
|
30
|
+
private nodeCountAt;
|
|
29
31
|
constructor(indexStore: any, options: any);
|
|
30
32
|
index(primaryKey: Id, vector: number[], existingVector?: number[], options?: any): void;
|
|
31
33
|
/**
|
|
@@ -51,6 +53,16 @@ export declare class HierarchicalNavigableSmallWorld {
|
|
|
51
53
|
* probed nodes on what is usually just a distant entry point would be far too expensive).
|
|
52
54
|
*/
|
|
53
55
|
private repairSeveredNeighbors;
|
|
56
|
+
/**
|
|
57
|
+
* Number of nodes in the graph, for the ef auto-scale. Must stay O(1): it runs per query, and an
|
|
58
|
+
* exact count is a full key scan. RocksDB's `estimate-num-keys` is not a usable substitute — it
|
|
59
|
+
* counts unreconciled overwrites, which graph construction produces in bulk. See DESIGN.md for the
|
|
60
|
+
* measurements behind both. The memo is the only gate on how often the size is resolved; nothing on
|
|
61
|
+
* the query path may bypass it, or the O(1) lookup becomes per-query work again.
|
|
62
|
+
*/
|
|
63
|
+
private approximateNodeCount;
|
|
64
|
+
/** O(1) node count — the shared id counter, else a single reverse seek to the largest node id. */
|
|
65
|
+
private resolveNodeCount;
|
|
54
66
|
private safeGetSync;
|
|
55
67
|
private getEntryPoint;
|
|
56
68
|
/**
|
|
@@ -93,7 +105,7 @@ export declare class HierarchicalNavigableSmallWorld {
|
|
|
93
105
|
comparator: string;
|
|
94
106
|
ef?: number;
|
|
95
107
|
filterExpansion?: number;
|
|
96
|
-
}, context: any, filter?: (primaryKey: Id) => boolean): any[];
|
|
108
|
+
}, context: any, filter?: (primaryKey: Id) => boolean, minResults?: number): any[];
|
|
97
109
|
/**
|
|
98
110
|
* Exact distance between a query and a record's FULL-precision vector, mirroring search()'s metric
|
|
99
111
|
* selection. Used to rerank quantized (int8) results: graph traversal navigates on approximate
|
|
@@ -142,6 +154,7 @@ export declare class HierarchicalNavigableSmallWorld {
|
|
|
142
154
|
* @param vector
|
|
143
155
|
* @param context
|
|
144
156
|
* @param entry
|
|
157
|
+
* @param sortDefinition
|
|
145
158
|
*/
|
|
146
|
-
propertyResolver(vector: number[], context: any, entry: any): any;
|
|
159
|
+
propertyResolver(vector: number[], context: any, entry: any, sortDefinition?: any): any;
|
|
147
160
|
}
|
|
@@ -5,7 +5,6 @@ const vector_ts_1 = require("./vector.js");
|
|
|
5
5
|
const msgpackr_1 = require("msgpackr");
|
|
6
6
|
const logger_ts_1 = require("../../utility/logging/logger.js");
|
|
7
7
|
const hdbError_ts_1 = require("../../utility/errors/hdbError.js");
|
|
8
|
-
const rocksdb_js_1 = require("@harperfast/rocksdb-js");
|
|
9
8
|
const extended_iterable_1 = require("@harperfast/extended-iterable");
|
|
10
9
|
const logger = (0, logger_ts_1.loggerWithTag)('HNSW');
|
|
11
10
|
// int8 scalar quantization of stored graph nodes is ON by default. Each node holds the
|
|
@@ -50,12 +49,33 @@ function dequantizeInt8(q, scale) {
|
|
|
50
49
|
// cap deliberately favors latency — apps wanting higher recall set efConstructionSearch or a per-query
|
|
51
50
|
// ef. Tune as graph build quality / larger-N data improves.
|
|
52
51
|
const AUTO_EF_BASE = 100;
|
|
53
|
-
|
|
52
|
+
// The index store holds a graph node plus a primary-key mapping per record, so a key count is twice
|
|
53
|
+
// the node count. Sizes here are in nodes; this converts back for the one consumer still calibrated
|
|
54
|
+
// against keys.
|
|
55
|
+
const INDEX_KEYS_PER_NODE = 2;
|
|
56
|
+
// Graph nodes at which ef equals AUTO_EF_BASE. Originally expressed per index-store key against a
|
|
57
|
+
// reference of 1000, so 500 nodes is the same point. The node count is a high-water mark rather than
|
|
58
|
+
// a live count, so the resolved ef can differ from that formula by one at a rounding boundary.
|
|
59
|
+
const AUTO_EF_REF = 500;
|
|
54
60
|
const AUTO_EF_MAX = 512;
|
|
55
61
|
function autoScaleEf(nodeCount) {
|
|
56
62
|
const scaled = Math.round(AUTO_EF_BASE * Math.sqrt(Math.max(1, nodeCount / AUTO_EF_REF)));
|
|
57
63
|
return Math.min(AUTO_EF_MAX, Math.max(AUTO_EF_BASE, scaled));
|
|
58
64
|
}
|
|
65
|
+
// Candidate-list size used when searching a layer above 0. Those layers only supply the entry point
|
|
66
|
+
// for the next layer down, so a greedy walk is enough; a larger value costs work proportional to the
|
|
67
|
+
// layer's population without improving the entry point it hands off.
|
|
68
|
+
const ROUTING_EF = 1;
|
|
69
|
+
// Ceiling on the ef a query's own `offset + limit` can ask for. `limit` is unprivileged and set on
|
|
70
|
+
// every request, so this bounds what a caller can make one thread do synchronously: layer 0 holds
|
|
71
|
+
// `ef` candidates in a sorted array with an O(len) insert. Kept within a small multiple of
|
|
72
|
+
// AUTO_EF_MAX so the worst case stays the same order as the index's own auto-scaled ceiling; a
|
|
73
|
+
// caller who genuinely wants more sets an explicit `ef` and owns the cost.
|
|
74
|
+
const LIMIT_EF_MAX = 4 * AUTO_EF_MAX;
|
|
75
|
+
// How long a resolved graph size is reused before it is looked up again (see approximateNodeCount).
|
|
76
|
+
// ef moves with the square root of the count and is capped, so a slightly stale size is immaterial;
|
|
77
|
+
// this only has to be short enough that a table growing from empty picks up a larger ef promptly.
|
|
78
|
+
const NODE_COUNT_TTL = 10_000;
|
|
59
79
|
class MinHeap {
|
|
60
80
|
data = [];
|
|
61
81
|
get size() {
|
|
@@ -170,6 +190,8 @@ class HierarchicalNavigableSmallWorld {
|
|
|
170
190
|
// frozen node the object store hands back. WeakMap so entries are collected when the store evicts
|
|
171
191
|
// the frozen node — without it, every cache hit on a frozen node would re-slice and re-clone.
|
|
172
192
|
convertedNodes = new WeakMap();
|
|
193
|
+
nodeCount = 0;
|
|
194
|
+
nodeCountAt = 0;
|
|
173
195
|
constructor(indexStore, options) {
|
|
174
196
|
this.indexStore = indexStore;
|
|
175
197
|
if (indexStore) {
|
|
@@ -325,10 +347,12 @@ class HierarchicalNavigableSmallWorld {
|
|
|
325
347
|
logger.debug?.('setting entry point to', nodeId);
|
|
326
348
|
this.indexStore.put(ENTRY_POINT, nodeId, options);
|
|
327
349
|
}
|
|
328
|
-
//
|
|
350
|
+
// Pure descent — only neighbors[0] is used — so it runs greedily for the same reason
|
|
351
|
+
// search() does. The connection-building pass below keeps efConstruction: it selects the
|
|
352
|
+
// edges that get stored.
|
|
329
353
|
while (currentLevel > level) {
|
|
330
354
|
// Search for closest neighbors at current level
|
|
331
|
-
const neighbors = this.searchLayer(vector, entryPointId, entryPoint,
|
|
355
|
+
const neighbors = this.searchLayer(vector, entryPointId, entryPoint, ROUTING_EF, currentLevel, options);
|
|
332
356
|
if (neighbors.length > 0) {
|
|
333
357
|
entryPointId = neighbors[0].id; // closest neighbor becomes new entry point
|
|
334
358
|
entryPoint = neighbors[0].node;
|
|
@@ -689,6 +713,36 @@ class HierarchicalNavigableSmallWorld {
|
|
|
689
713
|
}
|
|
690
714
|
}
|
|
691
715
|
}
|
|
716
|
+
/**
|
|
717
|
+
* Number of nodes in the graph, for the ef auto-scale. Must stay O(1): it runs per query, and an
|
|
718
|
+
* exact count is a full key scan. RocksDB's `estimate-num-keys` is not a usable substitute — it
|
|
719
|
+
* counts unreconciled overwrites, which graph construction produces in bulk. See DESIGN.md for the
|
|
720
|
+
* measurements behind both. The memo is the only gate on how often the size is resolved; nothing on
|
|
721
|
+
* the query path may bypass it, or the O(1) lookup becomes per-query work again.
|
|
722
|
+
*/
|
|
723
|
+
approximateNodeCount() {
|
|
724
|
+
const now = Date.now();
|
|
725
|
+
if (this.nodeCountAt > 0 && now - this.nodeCountAt < NODE_COUNT_TTL)
|
|
726
|
+
return this.nodeCount;
|
|
727
|
+
this.nodeCount = this.resolveNodeCount();
|
|
728
|
+
this.nodeCountAt = now;
|
|
729
|
+
return this.nodeCount;
|
|
730
|
+
}
|
|
731
|
+
/** O(1) node count — the shared id counter, else a single reverse seek to the largest node id. */
|
|
732
|
+
resolveNodeCount() {
|
|
733
|
+
if (this.idIncrementer)
|
|
734
|
+
return Number(Atomics.load(this.idIncrementer, 0));
|
|
735
|
+
try {
|
|
736
|
+
for (const key of this.indexStore.getKeys({ reverse: true, limit: 1, start: Infinity, end: 0 })) {
|
|
737
|
+
if (typeof key === 'number')
|
|
738
|
+
return key + 1;
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
catch (error) {
|
|
742
|
+
logger.debug?.('could not resolve node count from the largest node id', error);
|
|
743
|
+
}
|
|
744
|
+
return 0; // empty (or unreadable) graph — autoScaleEf falls back to its floor
|
|
745
|
+
}
|
|
692
746
|
safeGetSync(key, options) {
|
|
693
747
|
try {
|
|
694
748
|
let node = this.indexStore.getSync(key, options);
|
|
@@ -929,7 +983,12 @@ class HierarchicalNavigableSmallWorld {
|
|
|
929
983
|
// returns true are admitted to the result list at layer 0; routing is unaffected. Composed by
|
|
930
984
|
// search.ts from companion AND conditions and caller-supplied vector/row filters. Must be
|
|
931
985
|
// synchronous and side-effect free. JS-API only (never from a REST query string).
|
|
932
|
-
filter
|
|
986
|
+
filter,
|
|
987
|
+
// offset + limit for a bounded query. A layer-0 search returns at most `ef` candidates, so a
|
|
988
|
+
// query asking for more rows than that used to come back short with no error — capped at 512
|
|
989
|
+
// (AUTO_EF_MAX) however large the limit was. Raising ef to cover the request keeps `limit`
|
|
990
|
+
// meaningful; the caller pays for what it asked for.
|
|
991
|
+
minResults) {
|
|
933
992
|
let limit; // only set for threshold comparators; 0 is a valid threshold (e.g. dotProduct)
|
|
934
993
|
let limitInclusive = false; // true for `le`, false for `lt`
|
|
935
994
|
switch (comparator) {
|
|
@@ -969,19 +1028,35 @@ class HierarchicalNavigableSmallWorld {
|
|
|
969
1028
|
// Resolve search ef: per-query ef wins; else an explicitly-configured efConstructionSearch;
|
|
970
1029
|
// else auto-scale with the graph size so recall holds as the table grows.
|
|
971
1030
|
let effectiveEf = this.efConstructionSearch;
|
|
972
|
-
|
|
1031
|
+
const explicitEf = ef !== undefined && ef > 0;
|
|
1032
|
+
if (explicitEf)
|
|
973
1033
|
effectiveEf = ef;
|
|
974
|
-
else if (!this.efSearchConfigured)
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
1034
|
+
else if (!this.efSearchConfigured)
|
|
1035
|
+
effectiveEf = autoScaleEf(this.approximateNodeCount());
|
|
1036
|
+
// The ef the index chose for itself, before any limit-derived widening. The filter budget below
|
|
1037
|
+
// stays calibrated against this rather than against what a caller's `limit` asked for.
|
|
1038
|
+
const resolvedEf = effectiveEf;
|
|
1039
|
+
// A bounded query must be able to come back full: layer 0 keeps at most `ef` candidates, so a
|
|
1040
|
+
// limit above the resolved ef truncated the result set with no error. Widen the candidate list
|
|
1041
|
+
// to cover the request, up to LIMIT_EF_MAX — `ef` sizes a synchronous traversal that holds every
|
|
1042
|
+
// admitted candidate in a sorted array with an O(len) insert, so an unbounded one lets a plain
|
|
1043
|
+
// `limit` stall the thread. Past the ceiling the result set is still short, as it was before.
|
|
1044
|
+
// A per-query `ef` is left authoritative: it is an explicit cost ceiling, and a caller who sets
|
|
1045
|
+
// one has said what they are willing to spend.
|
|
1046
|
+
// The ceiling is the only bound: clamping to the graph size as well would need a count exact as
|
|
1047
|
+
// of this query — the memo reads low while a table grows, truncating the very limit this
|
|
1048
|
+
// honours — and an ef above the node count is free, the traversal ending at the graph, not ef.
|
|
1049
|
+
if (minResults !== undefined && !explicitEf && minResults > effectiveEf) {
|
|
1050
|
+
effectiveEf = Math.max(effectiveEf, Math.min(minResults, LIMIT_EF_MAX));
|
|
979
1051
|
}
|
|
980
1052
|
// Predicate-aware traversal budget (#1241): matches accrue slower than visits under a selective
|
|
981
1053
|
// filter, so bound layer-0 work at ef * filterExpansion nodes. Only built when a filter is active.
|
|
1054
|
+
// Deliberately `resolvedEf`, not the limit-widened ef: this budget is what stops a selective
|
|
1055
|
+
// filter crawling the whole graph, and multiplying it by a caller's limit would turn a filtered
|
|
1056
|
+
// vector query into a record-loading scan.
|
|
982
1057
|
const filterState = filter
|
|
983
1058
|
? {
|
|
984
|
-
maxVisits:
|
|
1059
|
+
maxVisits: resolvedEf * (filterExpansion && filterExpansion > 0 ? filterExpansion : this.filterExpansion),
|
|
985
1060
|
nodesVisited: 0,
|
|
986
1061
|
filterEvaluations: 0,
|
|
987
1062
|
}
|
|
@@ -993,9 +1068,13 @@ class HierarchicalNavigableSmallWorld {
|
|
|
993
1068
|
let results = [];
|
|
994
1069
|
// For each level from top to bottom. The filter applies only at layer 0 (result admission);
|
|
995
1070
|
// upper layers route unfiltered so non-matching hubs still guide the descent.
|
|
1071
|
+
//
|
|
1072
|
+
// Only layer 0 gets the full candidate list; the layers above it just hand down an entry point,
|
|
1073
|
+
// so searching them at the full ef costs work proportional to the layer's population (~N/M
|
|
1074
|
+
// nodes) rather than to ef. See DESIGN.md.
|
|
996
1075
|
for (let l = entryPoint.level; l >= 0; l--) {
|
|
997
1076
|
// Search for closest neighbors at current level
|
|
998
|
-
results = this.searchLayer(target, entryPointId, entryPoint, effectiveEf, l, options, distanceFunction, l === 0 ? filter : undefined, l === 0 ? filterState : undefined);
|
|
1077
|
+
results = this.searchLayer(target, entryPointId, entryPoint, l === 0 ? effectiveEf : ROUTING_EF, l, options, distanceFunction, l === 0 ? filter : undefined, l === 0 ? filterState : undefined);
|
|
999
1078
|
if (results.length > 0) {
|
|
1000
1079
|
const neighbor = results[0]; // closest neighbor becomes new entry point
|
|
1001
1080
|
entryPoint = neighbor.node;
|
|
@@ -1017,18 +1096,26 @@ class HierarchicalNavigableSmallWorld {
|
|
|
1017
1096
|
* and $distance.
|
|
1018
1097
|
*/
|
|
1019
1098
|
exactDistance(searchCondition, recordVector) {
|
|
1020
|
-
if (
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
const vec = Array.isArray(recordVector) ? recordVector : Array.from(recordVector);
|
|
1099
|
+
if (!searchCondition.target)
|
|
1100
|
+
throw new hdbError_ts_1.ClientError('A target vector must be provided for an HNSW query');
|
|
1101
|
+
if (!Array.isArray(searchCondition.target))
|
|
1102
|
+
throw new hdbError_ts_1.ClientError('The target vector must be an array');
|
|
1025
1103
|
const fn = searchCondition.distance === 'euclidean'
|
|
1026
1104
|
? vector_ts_1.euclideanDistance
|
|
1027
1105
|
: searchCondition.distance === 'dotProduct'
|
|
1028
1106
|
? vector_ts_1.dotProductDistance
|
|
1029
1107
|
: searchCondition.distance === 'cosine'
|
|
1030
1108
|
? vector_ts_1.cosineDistance
|
|
1031
|
-
:
|
|
1109
|
+
: searchCondition.distance
|
|
1110
|
+
? null
|
|
1111
|
+
: this.distance;
|
|
1112
|
+
if (!fn)
|
|
1113
|
+
throw new hdbError_ts_1.ClientError('Unknown distance function');
|
|
1114
|
+
if (recordVector == null)
|
|
1115
|
+
return Infinity; // missing vector sorts last
|
|
1116
|
+
// distance fns require a plain Array (they guard on Array.isArray); records normally store a
|
|
1117
|
+
// float[] vector, but convert defensively in case a typed array slips through.
|
|
1118
|
+
const vec = Array.isArray(recordVector) ? recordVector : Array.from(recordVector);
|
|
1032
1119
|
return fn(searchCondition.target, vec);
|
|
1033
1120
|
}
|
|
1034
1121
|
/**
|
|
@@ -1186,8 +1273,11 @@ class HierarchicalNavigableSmallWorld {
|
|
|
1186
1273
|
* @returns
|
|
1187
1274
|
*/
|
|
1188
1275
|
estimateCountAsSort() {
|
|
1189
|
-
|
|
1190
|
-
|
|
1276
|
+
// Same O(1) source search() uses — this runs per query whenever a vector sort is planned
|
|
1277
|
+
// alongside another condition, where an exact getKeysCount() is a second full key scan on the
|
|
1278
|
+
// query path. Scaled back to the index-store key count it used to be given, so the planner's
|
|
1279
|
+
// condition ordering is unchanged by the switch to a node count.
|
|
1280
|
+
return Math.sqrt(this.approximateNodeCount() * INDEX_KEYS_PER_NODE * this.efConstructionSearch);
|
|
1191
1281
|
}
|
|
1192
1282
|
/**
|
|
1193
1283
|
* This is used to resolve the vector property, which should be resolved to the distance when used in a sort comparator
|
|
@@ -1195,29 +1285,28 @@ class HierarchicalNavigableSmallWorld {
|
|
|
1195
1285
|
* @param vector
|
|
1196
1286
|
* @param context
|
|
1197
1287
|
* @param entry
|
|
1288
|
+
* @param sortDefinition
|
|
1198
1289
|
*/
|
|
1199
|
-
propertyResolver(vector, context, entry) {
|
|
1200
|
-
const sortDefinition = context?.sort;
|
|
1290
|
+
propertyResolver(vector, context, entry, sortDefinition) {
|
|
1201
1291
|
if (sortDefinition) {
|
|
1292
|
+
if (!context)
|
|
1293
|
+
return this.exactDistance(sortDefinition, vector);
|
|
1202
1294
|
// set up a cache for these so they can be accessed by $distance and not be recalculated during a sort
|
|
1203
|
-
let
|
|
1204
|
-
if (
|
|
1205
|
-
|
|
1206
|
-
|
|
1295
|
+
let vectorDistanceCaches = context.vectorDistanceCaches;
|
|
1296
|
+
if (!vectorDistanceCaches)
|
|
1297
|
+
vectorDistanceCaches = context.vectorDistanceCaches = new WeakMap();
|
|
1298
|
+
let vectorDistances = vectorDistanceCaches.get(sortDefinition);
|
|
1299
|
+
const cacheKey = entry && typeof entry === 'object' ? entry : vector && typeof vector === 'object' ? vector : null;
|
|
1300
|
+
if (vectorDistances && cacheKey) {
|
|
1301
|
+
const difference = vectorDistances.get(cacheKey);
|
|
1302
|
+
if (difference !== undefined)
|
|
1207
1303
|
return difference;
|
|
1208
1304
|
}
|
|
1209
|
-
else
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
if (
|
|
1213
|
-
|
|
1214
|
-
sortDefinition.distance === 'euclidean'
|
|
1215
|
-
? vector_ts_1.euclideanDistance
|
|
1216
|
-
: sortDefinition.distance === 'dotProduct'
|
|
1217
|
-
? vector_ts_1.dotProductDistance
|
|
1218
|
-
: vector_ts_1.cosineDistance;
|
|
1219
|
-
const distance = distanceFunction(sortDefinition.target, vector);
|
|
1220
|
-
vectorDistances.set(entry, distance);
|
|
1305
|
+
else if (!vectorDistances)
|
|
1306
|
+
vectorDistanceCaches.set(sortDefinition, (vectorDistances = new WeakMap()));
|
|
1307
|
+
const distance = this.exactDistance(sortDefinition, vector);
|
|
1308
|
+
if (cacheKey)
|
|
1309
|
+
vectorDistances.set(cacheKey, distance);
|
|
1221
1310
|
return distance;
|
|
1222
1311
|
}
|
|
1223
1312
|
return vector;
|