You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(core): diversify retrieval results by document (#161)
Release highlights:
- Broaden top-k document coverage while preserving the requested result count.
- Keep lexical fallback available for corpora larger than one scan batch.
Release details:
- Add a configurable document cap across CLI, MCP, ask, evaluation, and portable status.
- Over-retrieve before ranking, then diversify with ranked backfill.
- Scan lexical fallback batches across the full eligible corpus.
- Refresh compatible dependencies and pin patched transitive packages.
Verification:
- Pass pnpm validate on the release branch with 609 tests.
- Pass audit, CI, Linux, macOS, Commitlint, and CodeQL checks.
- Pass 100/100 reference quality cases with recall@10 1.000.
Copy file name to clipboardExpand all lines: docs/configuration.md
+26-13Lines changed: 26 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,6 +24,7 @@ edit JSON only for a real need.
24
24
|`embeddingModelRevision`| Pinned commit for bundled profiles | Use an immutable 40-character commit for reproducible model artifacts. Unknown custom models default to the mutable `main` revision until explicitly pinned. |
25
25
|`embeddingModelDigest`|`null`|`rgr models pull --enable` records a SHA-256 identity for the resolved local artifact tree. Do not set it by hand unless the local files were verified independently. |
26
26
|`topK`|`8`| Change the CLI and TypeScript default, up to the hard limit of 100. MCP requests without `topK` start at the lower of this value and 3. |
27
+
|`maxChunksPerDocument`|`1`| Limit primary ranked passages from one document before final `topK` truncation, up to 100. Ranked backfill preserves the requested result count when the candidate set has too few documents. |
|`mcpMaxOutputBytes`|`32768`| Cap variable-size MCP tool and resource JSON; the server also enforces an absolute 1 MiB ceiling. |
29
30
|`chunkSize` / `chunkOverlap`|`1200` / `200`| Tune chunking, then rebuild the index. Chunk size is capped at 1,000,000 characters. |
@@ -32,7 +33,7 @@ edit JSON only for a real need.
32
33
|`embeddingBatchSize`|`32`| Bound one model call; values above `128` are rejected. |
33
34
|`sourceFingerprintMode`|`fast`| Use `strict` to hash every source on every inventory instead of reusing unchanged private fingerprints. |
34
35
|`incrementalFailurePolicy`|`preserve-last-good`| Use `remove-stale` only when failed changed files must disappear immediately. |
35
-
|`hybridTextScanLimit`|`5000`|Bound only the complete-scan fallback used when FTS is unavailable; values above 10,000 are rejected. A fallback smaller than the active corpus is rejected instead of returning silently truncated lexical evidence. |
36
+
|`hybridTextScanLimit`|`5000`|Set the batch size for the complete lexical scan used when FTS is unavailable; values above 10,000 are rejected. The fallback scans every matching chunk across as many batches as the corpus requires. |
36
37
|`workloadLimits`| See below | Bound active search, embedding, and ingestion work plus their queues and queue deadlines. |
37
38
|`includeExtensions`|`[]`| Add safe custom text extensions. |
38
39
@@ -81,21 +82,33 @@ Profiles bound retrieval work. They are candidate and diversification budgets, n
81
82
a larger budget improves every corpus. Evaluate the profile against a representative golden set
0 commit comments