@jcode.labs/ragmir 6.0.1 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +87 -26
  2. package/dist/chunking.d.ts +6 -0
  3. package/dist/chunking.d.ts.map +1 -1
  4. package/dist/chunking.js +15 -0
  5. package/dist/chunking.js.map +1 -1
  6. package/dist/doctor.d.ts.map +1 -1
  7. package/dist/doctor.js +7 -0
  8. package/dist/doctor.js.map +1 -1
  9. package/dist/index-policy.d.ts +9 -1
  10. package/dist/index-policy.d.ts.map +1 -1
  11. package/dist/index-policy.js +15 -0
  12. package/dist/index-policy.js.map +1 -1
  13. package/dist/ingest.d.ts.map +1 -1
  14. package/dist/ingest.js +11 -7
  15. package/dist/ingest.js.map +1 -1
  16. package/dist/query.d.ts +2 -2
  17. package/dist/query.d.ts.map +1 -1
  18. package/dist/query.js +19 -23
  19. package/dist/query.js.map +1 -1
  20. package/dist/ranking.d.ts +12 -1
  21. package/dist/ranking.d.ts.map +1 -1
  22. package/dist/ranking.js +119 -57
  23. package/dist/ranking.js.map +1 -1
  24. package/dist/retrieval-diversity.d.ts +5 -0
  25. package/dist/retrieval-diversity.d.ts.map +1 -1
  26. package/dist/retrieval-diversity.js +65 -25
  27. package/dist/retrieval-diversity.js.map +1 -1
  28. package/dist/setup.js +2 -1
  29. package/dist/setup.js.map +1 -1
  30. package/dist/storage-maintenance.d.ts.map +1 -1
  31. package/dist/storage-maintenance.js +14 -7
  32. package/dist/storage-maintenance.js.map +1 -1
  33. package/dist/store.d.ts.map +1 -1
  34. package/dist/store.js +3 -0
  35. package/dist/store.js.map +1 -1
  36. package/dist/text.d.ts +5 -0
  37. package/dist/text.d.ts.map +1 -1
  38. package/dist/text.js +28 -0
  39. package/dist/text.js.map +1 -1
  40. package/dist/types.d.ts +2 -0
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/upgrade.js +4 -2
  43. package/dist/upgrade.js.map +1 -1
  44. package/dist/version.d.ts +1 -1
  45. package/dist/version.js +1 -1
  46. package/package.json +6 -6
package/dist/ranking.js CHANGED
@@ -2,8 +2,13 @@ import { createHash } from "node:crypto";
2
2
  import { addLexicalDocument, lexicalDocument, lexicalDocumentScore, } from "./lexical-scoring.js";
3
3
  import { tokenize } from "./text.js";
4
4
  const RRF_K = 60;
5
- const RRF_VECTOR_WEIGHT = 1;
5
+ const RRF_SEMANTIC_VECTOR_WEIGHT = 1;
6
+ // The local-hash vector is another lexical signal without inverse document frequency. At full RRF
7
+ // weight it lifted common-word matches above BM25 evidence on code and document corpora, so it only
8
+ // breaks ties and backfills rows that the full-text index did not return.
9
+ const RRF_LOCAL_HASH_VECTOR_WEIGHT = 0.01;
6
10
  const RRF_LEXICAL_WEIGHT = 1;
11
+ const MIN_LEXICAL_PREFIX_LENGTH = 4;
7
12
  const MIN_FUZZY_TOKEN_LENGTH = 7;
8
13
  const MIN_TRIGRAM_DICE_SIMILARITY = 0.5;
9
14
  const TRANSFORMERS_MAXIMUM_VECTOR_DISTANCE = 1.1;
@@ -17,12 +22,14 @@ const LOW_INFORMATION_WORDS = new Set(("a about an and are as at be been by can
17
22
  "comment dois doit").split(" "));
18
23
  export function rankingPolicyFor(embeddingProvider, retrievalProfile, maxChunksPerDocument) {
19
24
  return {
20
- version: 5,
25
+ version: 6,
21
26
  embeddingProvider,
22
27
  retrievalProfile,
23
28
  maxChunksPerDocument,
24
29
  rrfK: RRF_K,
25
- vectorWeight: RRF_VECTOR_WEIGHT,
30
+ vectorWeight: embeddingProvider === "local-hash"
31
+ ? RRF_LOCAL_HASH_VECTOR_WEIGHT
32
+ : RRF_SEMANTIC_VECTOR_WEIGHT,
26
33
  lexicalWeight: RRF_LEXICAL_WEIGHT,
27
34
  maximumVectorDistance: embeddingProvider === "transformers" ? TRANSFORMERS_MAXIMUM_VECTOR_DISTANCE : null,
28
35
  };
@@ -30,6 +37,14 @@ export function rankingPolicyFor(embeddingProvider, retrievalProfile, maxChunksP
30
37
  export function rankingPolicyFingerprint(policy) {
31
38
  return createHash("sha256").update(JSON.stringify(policy)).digest("hex");
32
39
  }
40
+ /**
41
+ * Per-list depth at which reciprocal-rank fusion cannot lift a row that is absent from every
42
+ * candidate list above the demand-th fused row: such a row scores at most
43
+ * 2 / (RRF_K + depth + 1), while at least demand rows score 1 / (RRF_K + demand) or more.
44
+ */
45
+ export function fusionCandidateDepth(demand) {
46
+ return RRF_K + 2 * demand;
47
+ }
33
48
  export function queryEvidence(query) {
34
49
  const tokens = tokenize(query).filter((token) => !LOW_INFORMATION_WORDS.has(token));
35
50
  const compoundAnchors = [...query.matchAll(IDENTIFIER_PATTERN)]
@@ -49,7 +64,17 @@ export function queryEvidence(query) {
49
64
  export function rankHybridRows(query, vectorRows, textRows, policy) {
50
65
  const queryTokens = tokenize(query);
51
66
  const evidence = queryEvidence(query);
52
- const rows = mergeRows(vectorRows, textRows);
67
+ const keys = new Map();
68
+ const keyOf = (row) => {
69
+ let key = keys.get(row);
70
+ if (key === undefined) {
71
+ key = rowKey(row);
72
+ keys.set(row, key);
73
+ }
74
+ return key;
75
+ };
76
+ const compareKeys = (left, right) => keyOf(left).localeCompare(keyOf(right));
77
+ const rows = mergeRows(vectorRows, textRows, keyOf, compareKeys);
53
78
  const exactAnchorMatches = new Map();
54
79
  if (evidence.anchors.length > 0) {
55
80
  const requestedAnchors = new Set(evidence.anchors);
@@ -59,20 +84,22 @@ export function rankHybridRows(query, vectorRows, textRows, policy) {
59
84
  if (requestedAnchors.has(match[0]))
60
85
  matches.add(match[0]);
61
86
  }
62
- exactAnchorMatches.set(rowKey(row), matches.size);
87
+ exactAnchorMatches.set(keyOf(row), matches.size);
63
88
  }
64
89
  }
65
- const vectorRanked = [...vectorRows]
90
+ const vectorRanked = vectorRows
66
91
  .filter((row) => Number.isFinite(rowDistance(row)))
67
- .sort(compareVectorRows);
92
+ .sort((left, right) => rowDistance(left) - rowDistance(right) || compareKeys(left, right));
68
93
  const vectorRanks = new Map();
69
94
  vectorRanked.forEach((row, index) => {
70
- vectorRanks.set(rowKey(row), index);
95
+ vectorRanks.set(keyOf(row), index);
71
96
  });
72
97
  const ftsRows = textRows.filter((row) => typeof row._score === "number");
73
98
  const lexicalRanked = ftsRows.length > 0
74
- ? [...ftsRows].sort(compareLexicalRows).map((row) => [rowKey(row), row._score ?? 0])
75
- : [...bm25Scores(queryTokens, rows).entries()]
99
+ ? ftsRows
100
+ .sort((left, right) => (right._score ?? 0) - (left._score ?? 0) || compareKeys(left, right))
101
+ .map((row) => [keyOf(row), row._score ?? 0])
102
+ : [...bm25Scores(queryTokens, rows, keyOf).entries()]
76
103
  .filter(([, score]) => score > 0)
77
104
  .sort(compareScoredKeys);
78
105
  const lexicalRanks = new Map();
@@ -82,7 +109,7 @@ export function rankHybridRows(query, vectorRows, textRows, policy) {
82
109
  const lexicalScores = new Map(lexicalRanked);
83
110
  return rows
84
111
  .map((row) => {
85
- const key = rowKey(row);
112
+ const key = keyOf(row);
86
113
  const vectorRank = vectorRanks.get(key);
87
114
  const lexicalRank = lexicalRanks.get(key);
88
115
  const vectorScore = vectorRank === undefined ? 0 : policy.vectorWeight / (policy.rrfK + vectorRank);
@@ -98,25 +125,36 @@ export function rankHybridRows(query, vectorRows, textRows, policy) {
98
125
  };
99
126
  })
100
127
  .filter((ranked) => ranked.combinedScore > 0)
101
- .sort((left, right) => (exactAnchorMatches.get(rowKey(right.row)) ?? 0) -
102
- (exactAnchorMatches.get(rowKey(left.row)) ?? 0) || compareRankedRows(left, right));
128
+ .sort((left, right) => (exactAnchorMatches.get(keyOf(right.row)) ?? 0) -
129
+ (exactAnchorMatches.get(keyOf(left.row)) ?? 0) ||
130
+ right.combinedScore - left.combinedScore ||
131
+ rowDistance(left.row) - rowDistance(right.row) ||
132
+ compareKeys(left.row, right.row));
103
133
  }
104
134
  export function candidatePassesAbstention(evidenceOrQuery, row, policy) {
105
135
  const evidence = typeof evidenceOrQuery === "string" ? queryEvidence(evidenceOrQuery) : evidenceOrQuery;
106
- const lexicalSupport = hasLexicalEvidence(evidence, row.searchText);
136
+ return abstentionFilter(evidence, policy)(row);
137
+ }
138
+ /**
139
+ * Compile the abstention rule once per query. Candidates are then checked lazily in ranked order,
140
+ * so the query tokens, prefixes, and trigrams are not rebuilt for every candidate.
141
+ */
142
+ export function abstentionFilter(evidence, policy) {
143
+ const hasLexicalEvidence = lexicalEvidenceMatcher(evidence);
107
144
  if (policy.embeddingProvider === "local-hash" || evidence.anchors.length > 0) {
108
- return lexicalSupport;
145
+ return (row) => hasLexicalEvidence(row.searchText);
109
146
  }
110
- return (lexicalSupport ||
111
- (policy.maximumVectorDistance !== null && rowDistance(row) <= policy.maximumVectorDistance));
147
+ const maximumVectorDistance = policy.maximumVectorDistance;
148
+ return (row) => (maximumVectorDistance !== null && rowDistance(row) <= maximumVectorDistance) ||
149
+ hasLexicalEvidence(row.searchText);
112
150
  }
113
151
  export function tokensAreLexicallyRelated(queryToken, textToken) {
114
152
  if (queryToken === textToken) {
115
153
  return true;
116
154
  }
117
- if (queryToken.length >= 4 &&
118
- textToken.length >= 4 &&
119
- sharedPrefixLength(queryToken, textToken) >= 4) {
155
+ if (queryToken.length >= MIN_LEXICAL_PREFIX_LENGTH &&
156
+ textToken.length >= MIN_LEXICAL_PREFIX_LENGTH &&
157
+ sharedPrefixLength(queryToken, textToken) >= MIN_LEXICAL_PREFIX_LENGTH) {
120
158
  return true;
121
159
  }
122
160
  if (queryToken.length < MIN_FUZZY_TOKEN_LENGTH ||
@@ -128,18 +166,54 @@ export function tokensAreLexicallyRelated(queryToken, textToken) {
128
166
  }
129
167
  return trigramDiceSimilarity(queryToken, textToken) >= MIN_TRIGRAM_DICE_SIMILARITY;
130
168
  }
131
- function hasLexicalEvidence(evidence, text) {
169
+ function lexicalEvidenceMatcher(evidence) {
132
170
  if (evidence.anchors.length > 0) {
133
- for (const match of normalizeAnchor(text).matchAll(IDENTIFIER_PATTERN)) {
134
- if (evidence.anchors.some((anchor) => identifiersAreRelated(anchor, match[0])))
135
- return true;
136
- }
137
171
  const standaloneAnchors = evidence.anchors.filter((anchor) => !/[-_./]/u.test(anchor));
138
- const textTokens = standaloneAnchors.length > 0 ? tokenize(text) : [];
139
- return standaloneAnchors.some((anchor) => textTokens.includes(anchor));
172
+ return (text) => {
173
+ for (const match of normalizeAnchor(text).matchAll(IDENTIFIER_PATTERN)) {
174
+ if (evidence.anchors.some((anchor) => identifiersAreRelated(anchor, match[0])))
175
+ return true;
176
+ }
177
+ if (standaloneAnchors.length === 0)
178
+ return false;
179
+ const textTokens = tokenize(text);
180
+ return standaloneAnchors.some((anchor) => textTokens.includes(anchor));
181
+ };
140
182
  }
141
- const textTokens = tokenize(text);
142
- return evidence.tokens.some((queryToken) => textTokens.some((textToken) => tokensAreLexicallyRelated(queryToken, textToken)));
183
+ const queryTokens = new Set(evidence.tokens);
184
+ if (queryTokens.size === 0) {
185
+ return () => false;
186
+ }
187
+ const prefixes = new Set([...queryTokens]
188
+ .filter((token) => token.length >= MIN_LEXICAL_PREFIX_LENGTH)
189
+ .map((token) => token.slice(0, MIN_LEXICAL_PREFIX_LENGTH)));
190
+ const fuzzyTokens = [...queryTokens]
191
+ .filter(isFuzzyComparable)
192
+ .map((token) => ({ token, trigrams: tokenTrigrams(token) }));
193
+ // Same relation as tokensAreLexicallyRelated, evaluated against precomputed query features.
194
+ return (text) => {
195
+ for (const textToken of tokenize(text)) {
196
+ if (queryTokens.has(textToken))
197
+ return true;
198
+ if (textToken.length >= MIN_LEXICAL_PREFIX_LENGTH &&
199
+ prefixes.has(textToken.slice(0, MIN_LEXICAL_PREFIX_LENGTH))) {
200
+ return true;
201
+ }
202
+ if (fuzzyTokens.length === 0 || !isFuzzyComparable(textToken))
203
+ continue;
204
+ const textTrigrams = tokenTrigrams(textToken);
205
+ for (const { token, trigrams } of fuzzyTokens) {
206
+ if (Math.abs(token.length - textToken.length) <= 1 &&
207
+ trigramSetDiceSimilarity(trigrams, textTrigrams) >= MIN_TRIGRAM_DICE_SIMILARITY) {
208
+ return true;
209
+ }
210
+ }
211
+ }
212
+ return false;
213
+ };
214
+ }
215
+ function isFuzzyComparable(token) {
216
+ return token.length >= MIN_FUZZY_TOKEN_LENGTH && /^[a-z0-9_-]+$/u.test(token);
143
217
  }
144
218
  function identifiersAreRelated(queryAnchor, textAnchor) {
145
219
  if (queryAnchor === textAnchor) {
@@ -193,26 +267,27 @@ function isSingleEditApart(left, right) {
193
267
  }
194
268
  return true;
195
269
  }
196
- function mergeRows(vectorRows, textRows) {
270
+ function mergeRows(vectorRows, textRows, keyOf, compareKeys) {
197
271
  const rows = new Map();
198
- for (const row of [...textRows].sort(compareRowKeys)) {
199
- rows.set(rowKey(row), row);
272
+ for (const row of [...textRows].sort(compareKeys)) {
273
+ rows.set(keyOf(row), row);
200
274
  }
201
- for (const row of [...vectorRows].sort(compareRowKeys)) {
202
- const existing = rows.get(rowKey(row));
275
+ for (const row of [...vectorRows].sort(compareKeys)) {
276
+ const key = keyOf(row);
277
+ const existing = rows.get(key);
203
278
  if (!existing) {
204
- rows.set(rowKey(row), row);
279
+ rows.set(key, row);
205
280
  continue;
206
281
  }
207
282
  const merged = { ...existing, ...row };
208
283
  if (existing._score !== undefined) {
209
284
  merged._score = existing._score;
210
285
  }
211
- rows.set(rowKey(row), merged);
286
+ rows.set(key, merged);
212
287
  }
213
288
  return [...rows.values()];
214
289
  }
215
- function bm25Scores(queryTokens, rows) {
290
+ function bm25Scores(queryTokens, rows, keyOf) {
216
291
  const scores = new Map();
217
292
  if (queryTokens.length === 0 || rows.length === 0) {
218
293
  return scores;
@@ -229,28 +304,14 @@ function bm25Scores(queryTokens, rows) {
229
304
  for (const { row, document } of documents) {
230
305
  const score = lexicalDocumentScore(document, statistics, uniqueQueryTokens);
231
306
  if (score > 0) {
232
- scores.set(rowKey(row), score);
307
+ scores.set(keyOf(row), score);
233
308
  }
234
309
  }
235
310
  return scores;
236
311
  }
237
- function compareVectorRows(left, right) {
238
- return rowDistance(left) - rowDistance(right) || compareRowKeys(left, right);
239
- }
240
- function compareLexicalRows(left, right) {
241
- return (right._score ?? 0) - (left._score ?? 0) || compareRowKeys(left, right);
242
- }
243
312
  function compareScoredKeys(left, right) {
244
313
  return right[1] - left[1] || left[0].localeCompare(right[0]);
245
314
  }
246
- function compareRankedRows(left, right) {
247
- return (right.combinedScore - left.combinedScore ||
248
- rowDistance(left.row) - rowDistance(right.row) ||
249
- compareRowKeys(left.row, right.row));
250
- }
251
- function compareRowKeys(left, right) {
252
- return rowKey(left).localeCompare(rowKey(right));
253
- }
254
315
  function rowDistance(row) {
255
316
  return typeof row._distance === "number" && row._distance >= 0
256
317
  ? row._distance
@@ -266,15 +327,16 @@ function normalizeAnchor(value) {
266
327
  .toLowerCase();
267
328
  }
268
329
  function trigramDiceSimilarity(left, right) {
269
- const leftTrigrams = tokenTrigrams(left);
270
- const rightTrigrams = tokenTrigrams(right);
330
+ return trigramSetDiceSimilarity(tokenTrigrams(left), tokenTrigrams(right));
331
+ }
332
+ function trigramSetDiceSimilarity(left, right) {
271
333
  let shared = 0;
272
- for (const trigram of leftTrigrams) {
273
- if (rightTrigrams.has(trigram)) {
334
+ for (const trigram of left) {
335
+ if (right.has(trigram)) {
274
336
  shared += 1;
275
337
  }
276
338
  }
277
- return (2 * shared) / (leftTrigrams.size + rightTrigrams.size);
339
+ return (2 * shared) / (left.size + right.size);
278
340
  }
279
341
  function tokenTrigrams(token) {
280
342
  return new Set(Array.from({ length: token.length - 2 }, (_value, index) => token.slice(index, index + 3)));
@@ -1 +1 @@
1
- {"version":3,"file":"ranking.js","sourceRoot":"","sources":["../src/ranking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ranking.js","sourceRoot":"","sources":["../src/ranking.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,11 @@ export interface DocumentDiversityOptions<Row extends DiversifiableRow> {
8
8
  topK: number;
9
9
  maxChunksPerDocument: number;
10
10
  isExactPathMatch?: (row: Row) => boolean;
11
+ /**
12
+ * Relevance gate evaluated lazily in ranked order. Rows that fail it are excluded exactly as if
13
+ * the input had been filtered first, but most candidates below the selected rows are never tested.
14
+ */
15
+ isRelevant?: (row: Row) => boolean;
11
16
  }
12
17
  export interface DocumentDiversityResult<Row extends DiversifiableRow> {
13
18
  rows: Array<RankedRow<Row>>;
@@ -1 +1 @@
1
- {"version":3,"file":"retrieval-diversity.d.ts","sourceRoot":"","sources":["../src/retrieval-diversity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzD,UAAU,gBAAiB,SAAQ,UAAU;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,wBAAwB,CAAC,GAAG,SAAS,gBAAgB;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAA;CACzC;AAED,MAAM,WAAW,uBAAuB,CAAC,GAAG,SAAS,gBAAgB;IACnE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3B,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED,wBAAgB,iBAAiB,CAAC,GAAG,SAAS,gBAAgB,EAC5D,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAC3B,OAAO,EAAE,wBAAwB,CAAC,GAAG,CAAC,GACrC,uBAAuB,CAAC,GAAG,CAAC,CA0D9B"}
1
+ {"version":3,"file":"retrieval-diversity.d.ts","sourceRoot":"","sources":["../src/retrieval-diversity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzD,UAAU,gBAAiB,SAAQ,UAAU;IAC3C,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,wBAAwB,CAAC,GAAG,SAAS,gBAAgB;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAA;IACxC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAA;CACnC;AAED,MAAM,WAAW,uBAAuB,CAAC,GAAG,SAAS,gBAAgB;IACnE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IAC3B,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED,wBAAgB,iBAAiB,CAAC,GAAG,SAAS,gBAAgB,EAC5D,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAC3B,OAAO,EAAE,wBAAwB,CAAC,GAAG,CAAC,GACrC,uBAAuB,CAAC,GAAG,CAAC,CA0D9B"}
@@ -1,5 +1,5 @@
1
1
  export function selectDiverseRows(rows, options) {
2
- const uniqueRows = deduplicateText(rows, options.isExactPathMatch);
2
+ const uniqueRowAt = uniqueRelevantRows(rows, options.isRelevant, options.isExactPathMatch);
3
3
  const selected = [];
4
4
  const selectedKeys = new Set();
5
5
  const perDocument = new Map();
@@ -21,14 +21,14 @@ export function selectDiverseRows(rows, options) {
21
21
  perDocument.set(row.row.relativePath, documentCount + 1);
22
22
  return true;
23
23
  };
24
- for (const row of uniqueRows) {
24
+ for (let index = 0, row = uniqueRowAt(index); row; index += 1, row = uniqueRowAt(index)) {
25
25
  appendRow(row, true, false);
26
26
  if (selected.length >= options.topK) {
27
27
  return { rows: selected, backfillActivated: false };
28
28
  }
29
29
  }
30
30
  let backfillActivated = false;
31
- for (const row of uniqueRows) {
31
+ for (let index = 0, row = uniqueRowAt(index); row; index += 1, row = uniqueRowAt(index)) {
32
32
  if (appendRow(row, false, false)) {
33
33
  backfillActivated = true;
34
34
  }
@@ -36,7 +36,7 @@ export function selectDiverseRows(rows, options) {
36
36
  return { rows: selected, backfillActivated };
37
37
  }
38
38
  }
39
- for (const row of uniqueRows) {
39
+ for (let index = 0, row = uniqueRowAt(index); row; index += 1, row = uniqueRowAt(index)) {
40
40
  if (appendRow(row, false, true)) {
41
41
  backfillActivated = true;
42
42
  }
@@ -46,30 +46,70 @@ export function selectDiverseRows(rows, options) {
46
46
  }
47
47
  return { rows: selected, backfillActivated };
48
48
  }
49
- function deduplicateText(rows, isExactPathMatch) {
50
- const uniqueRows = [];
51
- const textIndexes = new Map();
52
- for (const row of rows) {
53
- const textKey = row.row.text.replace(/\s+/gu, " ").trim().toLowerCase();
54
- const existingIndex = textIndexes.get(textKey);
55
- if (existingIndex === undefined) {
56
- textIndexes.set(textKey, uniqueRows.length);
57
- uniqueRows.push(row);
58
- continue;
49
+ /**
50
+ * Lazily yield relevant rows with duplicate texts collapsed. Each text keeps the position of its
51
+ * first relevant row and the representative an eager pass would choose: an exact path match, then
52
+ * the most canonical path, with earlier rows winning ties.
53
+ */
54
+ function uniqueRelevantRows(rows, isRelevant, isExactPathMatch) {
55
+ const textKeys = rows.map((ranked) => ranked.row.text.replace(/\s+/gu, " ").trim().toLowerCase());
56
+ const rowsByText = new Map();
57
+ textKeys.forEach((textKey, index) => {
58
+ const group = rowsByText.get(textKey);
59
+ if (group) {
60
+ group.push(index);
59
61
  }
60
- const existing = uniqueRows[existingIndex];
61
- if (!existing) {
62
- continue;
62
+ else {
63
+ rowsByText.set(textKey, [index]);
63
64
  }
64
- const existingIsExact = isExactPathMatch?.(existing.row) ?? false;
65
- const candidateIsExact = isExactPathMatch?.(row.row) ?? false;
66
- if (candidateIsExact !== existingIsExact
67
- ? candidateIsExact
68
- : preferCanonicalPath(row.row.relativePath, existing.row.relativePath)) {
69
- uniqueRows[existingIndex] = row;
65
+ });
66
+ const relevance = [];
67
+ const relevant = (index) => {
68
+ const known = relevance[index];
69
+ if (known !== undefined) {
70
+ return known;
70
71
  }
71
- }
72
- return uniqueRows;
72
+ const ranked = rows[index];
73
+ const result = ranked !== undefined && (isRelevant?.(ranked.row) ?? true);
74
+ relevance[index] = result;
75
+ return result;
76
+ };
77
+ const isExact = (row) => isExactPathMatch?.(row) ?? false;
78
+ const representative = (group, firstIndex) => {
79
+ let chosen = rows[firstIndex];
80
+ for (const index of group) {
81
+ const candidate = rows[index];
82
+ if (index <= firstIndex || !candidate || !chosen || !relevant(index)) {
83
+ continue;
84
+ }
85
+ const candidateIsExact = isExact(candidate.row);
86
+ if (candidateIsExact !== isExact(chosen.row)
87
+ ? candidateIsExact
88
+ : preferCanonicalPath(candidate.row.relativePath, chosen.row.relativePath)) {
89
+ chosen = candidate;
90
+ }
91
+ }
92
+ return chosen;
93
+ };
94
+ const consumedTexts = new Set();
95
+ const uniqueRows = [];
96
+ let cursor = 0;
97
+ return (index) => {
98
+ while (uniqueRows.length <= index && cursor < rows.length) {
99
+ const rowIndex = cursor;
100
+ cursor += 1;
101
+ const textKey = textKeys[rowIndex];
102
+ if (textKey === undefined || consumedTexts.has(textKey) || !relevant(rowIndex)) {
103
+ continue;
104
+ }
105
+ consumedTexts.add(textKey);
106
+ const chosen = representative(rowsByText.get(textKey) ?? [rowIndex], rowIndex);
107
+ if (chosen) {
108
+ uniqueRows.push(chosen);
109
+ }
110
+ }
111
+ return uniqueRows[index];
112
+ };
73
113
  }
74
114
  function overlapsDocumentSpan(left, right) {
75
115
  if (left.relativePath !== right.relativePath) {
@@ -1 +1 @@
1
- {"version":3,"file":"retrieval-diversity.js","sourceRoot":"","sources":["../src/retrieval-diversity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retrieval-diversity.js","sourceRoot":"","sources":["../src/retrieval-diversity.ts"],"names":[],"mappings":"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"}
package/dist/setup.js CHANGED
@@ -72,7 +72,8 @@ function canAutoIngest(report) {
72
72
  (report.chunksIndexed === 0 ||
73
73
  report.missingFromIndex > 0 ||
74
74
  report.staleInIndex > 0 ||
75
- !report.readiness.indexPolicyCurrent));
75
+ !report.readiness.indexPolicyCurrent ||
76
+ !report.readiness.lexicalIndexCurrent));
76
77
  }
77
78
  function setupNextSteps(report) {
78
79
  if (report.ready) {
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage-maintenance.d.ts","sourceRoot":"","sources":["../src/storage-maintenance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAQxE,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,EAAE,KAAK,8BAA8B,EAA2B,MAAM,mBAAmB,CAAA;AAWhG,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,oBAAoB,GACpB,yBAAyB,CAAA;AAE7B,MAAM,MAAM,wBAAwB,GAChC,QAAQ,GACR,yBAAyB,GACzB,yBAAyB,GACzB,oBAAoB,GACpB,0BAA0B,CAAA;AAE9B,MAAM,WAAW,yBAAyB;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,CAAC,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAA;IAClE,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,0BAA0B,EAAE,MAAM,CAAA;IAClC,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,aAAa,EAAE;QACb,OAAO,EAAE,OAAO,CAAA;QAChB,WAAW,EAAE,MAAM,CAAA;QACnB,aAAa,EAAE,MAAM,CAAA;QACrB,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,eAAe,EAAE,8BAA8B,GAAG,IAAI,CAAA;IACtD,OAAO,EAAE,wBAAwB,EAAE,CAAA;IACnC,cAAc,EAAE,wBAAwB,EAAE,CAAA;IAC1C,gBAAgB,EAAE,wBAAwB,EAAE,CAAA;IAC5C,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;IACnC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAmBD,wBAAsB,eAAe,CACnC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAUnC;AAED,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,UAAU,EACvB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAUnC;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAwJnC"}
1
+ {"version":3,"file":"storage-maintenance.d.ts","sourceRoot":"","sources":["../src/storage-maintenance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAQxE,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,EAAE,KAAK,8BAA8B,EAA2B,MAAM,mBAAmB,CAAA;AAehG,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,oBAAoB,GACpB,yBAAyB,CAAA;AAE7B,MAAM,MAAM,wBAAwB,GAChC,QAAQ,GACR,yBAAyB,GACzB,yBAAyB,GACzB,oBAAoB,GACpB,0BAA0B,CAAA;AAE9B,MAAM,WAAW,yBAAyB;IACxC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,CAAC,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAA;IAClE,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,0BAA0B,EAAE,MAAM,CAAA;IAClC,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,aAAa,EAAE;QACb,OAAO,EAAE,OAAO,CAAA;QAChB,WAAW,EAAE,MAAM,CAAA;QACnB,aAAa,EAAE,MAAM,CAAA;QACrB,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;IACD,eAAe,EAAE,8BAA8B,GAAG,IAAI,CAAA;IACtD,OAAO,EAAE,wBAAwB,EAAE,CAAA;IACnC,cAAc,EAAE,wBAAwB,EAAE,CAAA;IAC1C,gBAAgB,EAAE,wBAAwB,EAAE,CAAA;IAC5C,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;IACnC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAmBD,wBAAsB,eAAe,CACnC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAUnC;AAED,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,UAAU,EACvB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAUnC;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAwJnC"}
@@ -15,6 +15,10 @@ const MAINTENANCE_STATE_SCHEMA_VERSION = 1;
15
15
  const MUTATION_COMPACTION_THRESHOLD = 20;
16
16
  const MINIMUM_AUTOMATIC_COMPACTION_ROWS = 100_000;
17
17
  const MINIMUM_FRAGMENT_COUNT = 8;
18
+ // Per-file commits leave one small fragment per indexed file. A few hundred of them made full-text
19
+ // and exhaustive vector reads two to three times slower on ordinary repositories, so compaction no
20
+ // longer waits for the 100,000-row threshold once fragmentation reaches this size.
21
+ const AUTOMATIC_COMPACTION_FRAGMENT_COUNT = 64;
18
22
  const SMALL_FRAGMENT_RATIO_THRESHOLD = 0.25;
19
23
  const OLD_VERSION_RETENTION_MS = 7 * 24 * 60 * 60 * 1_000;
20
24
  export async function optimizeStorage(options = {}) {
@@ -244,21 +248,24 @@ function maintenanceReasons(health, mutationsSinceOptimization, forced) {
244
248
  if (automaticCompactionEligible && mutationsSinceOptimization >= MUTATION_COMPACTION_THRESHOLD) {
245
249
  reasons.push("mutation-threshold");
246
250
  }
247
- if (automaticCompactionEligible &&
248
- health.fragments.total >= MINIMUM_FRAGMENT_COUNT &&
249
- health.fragments.smallRatio >= SMALL_FRAGMENT_RATIO_THRESHOLD) {
251
+ if (fragmentationRequiresCompaction(health, automaticCompactionEligible)) {
250
252
  reasons.push("fragmentation-threshold");
251
253
  }
252
254
  return reasons;
253
255
  }
256
+ function fragmentationRequiresCompaction(health, automaticCompactionEligible) {
257
+ if (health.fragments.smallRatio < SMALL_FRAGMENT_RATIO_THRESHOLD) {
258
+ return false;
259
+ }
260
+ return (health.fragments.total >= AUTOMATIC_COMPACTION_FRAGMENT_COUNT ||
261
+ (automaticCompactionEligible && health.fragments.total >= MINIMUM_FRAGMENT_COUNT));
262
+ }
254
263
  function maintenanceActions(health, mutationsSinceOptimization, forced) {
255
264
  const actions = [];
256
265
  const automaticCompactionEligible = health.totalRows >= MINIMUM_AUTOMATIC_COMPACTION_ROWS;
257
266
  const compact = forced ||
258
- (automaticCompactionEligible &&
259
- (mutationsSinceOptimization >= MUTATION_COMPACTION_THRESHOLD ||
260
- (health.fragments.total >= MINIMUM_FRAGMENT_COUNT &&
261
- health.fragments.smallRatio >= SMALL_FRAGMENT_RATIO_THRESHOLD)));
267
+ fragmentationRequiresCompaction(health, automaticCompactionEligible) ||
268
+ (automaticCompactionEligible && mutationsSinceOptimization >= MUTATION_COMPACTION_THRESHOLD);
262
269
  if (compact) {
263
270
  actions.push("compact-fragments", "prune-old-versions");
264
271
  }