@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.
Files changed (117) hide show
  1. package/bin/copyDb.ts +19 -7
  2. package/components/deploymentRecorder.ts +102 -11
  3. package/components/operations.js +4 -0
  4. package/config/configUtils.ts +66 -11
  5. package/config/harperConfigEnvVars.ts +114 -17
  6. package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
  7. package/dist/bin/copyDb.js +20 -7
  8. package/dist/bin/copyDb.js.map +1 -1
  9. package/dist/components/deploymentRecorder.d.ts +6 -0
  10. package/dist/components/deploymentRecorder.js +94 -12
  11. package/dist/components/deploymentRecorder.js.map +1 -1
  12. package/dist/components/operations.js +4 -0
  13. package/dist/components/operations.js.map +1 -1
  14. package/dist/config/configUtils.d.ts +6 -0
  15. package/dist/config/configUtils.js +65 -9
  16. package/dist/config/configUtils.js.map +1 -1
  17. package/dist/config/harperConfigEnvVars.js +108 -16
  18. package/dist/config/harperConfigEnvVars.js.map +1 -1
  19. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +4 -4
  20. package/dist/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js.map +1 -1
  21. package/dist/resources/DatabaseTransaction.d.ts +2 -0
  22. package/dist/resources/DatabaseTransaction.js +6 -5
  23. package/dist/resources/DatabaseTransaction.js.map +1 -1
  24. package/dist/resources/Table.d.ts +2 -1
  25. package/dist/resources/Table.js +66 -16
  26. package/dist/resources/Table.js.map +1 -1
  27. package/dist/resources/auditStore.js +27 -1
  28. package/dist/resources/auditStore.js.map +1 -1
  29. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +15 -2
  30. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js +128 -39
  31. package/dist/resources/indexes/HierarchicalNavigableSmallWorld.js.map +1 -1
  32. package/dist/resources/search.d.ts +1 -1
  33. package/dist/resources/search.js +7 -3
  34. package/dist/resources/search.js.map +1 -1
  35. package/dist/server/threads/manageThreads.js +8 -0
  36. package/dist/server/threads/manageThreads.js.map +1 -1
  37. package/dist/sqlEngine/parser/normalizer.js +37 -9
  38. package/dist/sqlEngine/parser/normalizer.js.map +1 -1
  39. package/dist/utility/environment/environmentManager.d.ts +11 -0
  40. package/dist/utility/environment/environmentManager.js +154 -0
  41. package/dist/utility/environment/environmentManager.js.map +1 -1
  42. package/dist/utility/lmdb/environmentUtility.js +2 -1
  43. package/dist/utility/lmdb/environmentUtility.js.map +1 -1
  44. package/npm-shrinkwrap.json +13 -7
  45. package/package.json +2 -2
  46. package/resources/DESIGN.md +1 -0
  47. package/resources/DatabaseTransaction.ts +7 -5
  48. package/resources/Table.ts +77 -16
  49. package/resources/auditStore.ts +32 -1
  50. package/resources/indexes/HierarchicalNavigableSmallWorld.ts +119 -45
  51. package/resources/search.ts +8 -3
  52. package/server/threads/manageThreads.js +8 -0
  53. package/studio/web/assets/{Chat-aApwhRmz.js → Chat-BMUjPklt.js} +5 -5
  54. package/studio/web/assets/{Chat-aApwhRmz.js.map → Chat-BMUjPklt.js.map} +1 -1
  55. package/studio/web/assets/{FloatingChat-sC0H91n9.js → FloatingChat-Cbghuxe5.js} +5 -5
  56. package/studio/web/assets/{FloatingChat-sC0H91n9.js.map → FloatingChat-Cbghuxe5.js.map} +1 -1
  57. package/studio/web/assets/{apiToken-DZ8JhHOI.js → apiToken-CkgTQAqc.js} +2 -2
  58. package/studio/web/assets/{apiToken-DZ8JhHOI.js.map → apiToken-CkgTQAqc.js.map} +1 -1
  59. package/studio/web/assets/{applications-9SEVLIO5.js → applications-WvF4NOTN.js} +13 -13
  60. package/studio/web/assets/applications-WvF4NOTN.js.map +1 -0
  61. package/studio/web/assets/chevron-right-anDJCGlp.js +2 -0
  62. package/studio/web/assets/chevron-right-anDJCGlp.js.map +1 -0
  63. package/studio/web/assets/index-CDeqVx71.css +1 -0
  64. package/studio/web/assets/index-Sevt3MVx.js +819 -0
  65. package/studio/web/assets/index-Sevt3MVx.js.map +1 -0
  66. package/studio/web/assets/index.lazy-Dg5YYPGg.js +14 -0
  67. package/studio/web/assets/{index.lazy-CN1zq4I4.js.map → index.lazy-Dg5YYPGg.js.map} +1 -1
  68. package/studio/web/assets/{jsonMode-Cjj7dtlr.js → jsonMode-CBSEleE7.js} +2 -2
  69. package/studio/web/assets/{jsonMode-Cjj7dtlr.js.map → jsonMode-CBSEleE7.js.map} +1 -1
  70. package/studio/web/assets/languageServices-gxedeeTo.js +2 -0
  71. package/studio/web/assets/languageServices-gxedeeTo.js.map +1 -0
  72. package/studio/web/assets/{notifications-BFAF07xr.js → notifications-Ap84YyQp.js} +2 -2
  73. package/studio/web/assets/{notifications-BFAF07xr.js.map → notifications-Ap84YyQp.js.map} +1 -1
  74. package/studio/web/assets/notifications-vehqyOLM.js +2 -0
  75. package/studio/web/assets/{notifications-CKlYVvVN.js.map → notifications-vehqyOLM.js.map} +1 -1
  76. package/studio/web/assets/{pollUnlessForbidden-HHdQZW1N.js → pollUnlessForbidden-BhzefVRn.js} +2 -2
  77. package/studio/web/assets/pollUnlessForbidden-BhzefVRn.js.map +1 -0
  78. package/studio/web/assets/{profile-A1zhEdFG.js → profile-DzDpRLHY.js} +2 -2
  79. package/studio/web/assets/{profile-A1zhEdFG.js.map → profile-DzDpRLHY.js.map} +1 -1
  80. package/studio/web/assets/queryClient-CgtkoiCY.js +2 -0
  81. package/studio/web/assets/queryClient-CgtkoiCY.js.map +1 -0
  82. package/studio/web/assets/regions-DpJ8s7iN.js +2 -0
  83. package/studio/web/assets/regions-DpJ8s7iN.js.map +1 -0
  84. package/studio/web/assets/register-BDy01-q3.js +3 -0
  85. package/studio/web/assets/register-BDy01-q3.js.map +1 -0
  86. package/studio/web/assets/register-CQHRwNP4.js +3 -0
  87. package/studio/web/assets/register-CQHRwNP4.js.map +1 -0
  88. package/studio/web/assets/{setComponentFile-SEtBt_GV.js → setComponentFile-D0aPcI3W.js} +2 -2
  89. package/studio/web/assets/{setComponentFile-SEtBt_GV.js.map → setComponentFile-D0aPcI3W.js.map} +1 -1
  90. package/studio/web/assets/setup-I15FAF9H.js +3 -0
  91. package/studio/web/assets/{setup-BisINqdH.js.map → setup-I15FAF9H.js.map} +1 -1
  92. package/studio/web/assets/status-BF1eJshJ.js +62 -0
  93. package/studio/web/assets/status-BF1eJshJ.js.map +1 -0
  94. package/studio/web/assets/{swagger-ui-react-CAi_s1PC.js → swagger-ui-react-DwSPXXhl.js} +2 -2
  95. package/studio/web/assets/{swagger-ui-react-CAi_s1PC.js.map → swagger-ui-react-DwSPXXhl.js.map} +1 -1
  96. package/studio/web/assets/{textarea-DhLMZ3PA.js → table-DpOjNQHt.js} +2 -10
  97. package/studio/web/assets/table-DpOjNQHt.js.map +1 -0
  98. package/studio/web/assets/{tsMode-DT74tlkM.js → tsMode-Bu51A-VG.js} +2 -2
  99. package/studio/web/assets/{tsMode-DT74tlkM.js.map → tsMode-Bu51A-VG.js.map} +1 -1
  100. package/studio/web/assets/{useEntityRestURL-CGRGc1n7.js → useEntityRestURL-DrV1zMrN.js} +2 -2
  101. package/studio/web/assets/{useEntityRestURL-CGRGc1n7.js.map → useEntityRestURL-DrV1zMrN.js.map} +1 -1
  102. package/studio/web/index.html +6 -7
  103. package/utility/environment/environmentManager.ts +152 -0
  104. package/utility/lmdb/environmentUtility.ts +2 -1
  105. package/studio/web/assets/applications-9SEVLIO5.js.map +0 -1
  106. package/studio/web/assets/index-C8Mv9kHV.css +0 -1
  107. package/studio/web/assets/index-Dy3uDGXb.js +0 -809
  108. package/studio/web/assets/index-Dy3uDGXb.js.map +0 -1
  109. package/studio/web/assets/index.lazy-CN1zq4I4.js +0 -14
  110. package/studio/web/assets/notifications-CKlYVvVN.js +0 -2
  111. package/studio/web/assets/pollUnlessForbidden-HHdQZW1N.js.map +0 -1
  112. package/studio/web/assets/queryClient-CbA8wM7J.js +0 -2
  113. package/studio/web/assets/queryClient-CbA8wM7J.js.map +0 -1
  114. package/studio/web/assets/setup-BisINqdH.js +0 -3
  115. package/studio/web/assets/status-BuQoCc7l.js +0 -62
  116. package/studio/web/assets/status-BuQoCc7l.js.map +0 -1
  117. 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
- const action = EVENT_TYPES[type];
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
- const AUTO_EF_REF = 1000;
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
- // For each level from top to bottom
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, this.efConstruction, currentLevel, options);
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
- if (ef !== undefined && ef > 0)
1031
+ const explicitEf = ef !== undefined && ef > 0;
1032
+ if (explicitEf)
973
1033
  effectiveEf = ef;
974
- else if (!this.efSearchConfigured) {
975
- const nodeCount = this.indexStore.getKeysCount
976
- ? this.indexStore.getKeysCount()
977
- : (this.indexStore.getStats?.()?.entryCount ?? 0);
978
- effectiveEf = autoScaleEf(nodeCount);
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: effectiveEf * (filterExpansion && filterExpansion > 0 ? filterExpansion : this.filterExpansion),
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 (recordVector == null)
1021
- return Infinity; // missing vector sorts last
1022
- // distance fns require a plain Array (they guard on Array.isArray); records normally store a
1023
- // float[] vector, but convert defensively in case a typed array slips through.
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
- : this.distance;
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
- const count = this.indexStore instanceof rocksdb_js_1.RocksDatabase ? this.indexStore.getKeysCount() : this.indexStore.getStats().entryCount;
1190
- return Math.sqrt(count * this.efConstructionSearch);
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 vectorDistances = sortDefinition.vectorDistances;
1204
- if (vectorDistances) {
1205
- const difference = vectorDistances.get(entry);
1206
- if (difference)
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
- vectorDistances = context.vectorDistances = sortDefinition.vectorDistances = new Map();
1211
- let distanceFunction = this.distance;
1212
- if (sortDefinition.type)
1213
- distanceFunction =
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;