causantic 0.9.4 → 0.10.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 (201) hide show
  1. package/README.md +70 -56
  2. package/dist/cli/skill-templates.d.ts.map +1 -1
  3. package/dist/cli/skill-templates.js +11 -8
  4. package/dist/cli/skill-templates.js.map +1 -1
  5. package/dist/clusters/cluster-manager.d.ts +16 -0
  6. package/dist/clusters/cluster-manager.d.ts.map +1 -1
  7. package/dist/clusters/cluster-manager.js +119 -1
  8. package/dist/clusters/cluster-manager.js.map +1 -1
  9. package/dist/config/loader.d.ts +16 -0
  10. package/dist/config/loader.d.ts.map +1 -1
  11. package/dist/config/loader.js +51 -0
  12. package/dist/config/loader.js.map +1 -1
  13. package/dist/config/memory-config.d.ts +26 -0
  14. package/dist/config/memory-config.d.ts.map +1 -1
  15. package/dist/config/memory-config.js +22 -0
  16. package/dist/config/memory-config.js.map +1 -1
  17. package/dist/eval/experiments/embedding-model-comparison/run-experiment.d.ts +20 -0
  18. package/dist/eval/experiments/embedding-model-comparison/run-experiment.d.ts.map +1 -0
  19. package/dist/eval/experiments/embedding-model-comparison/run-experiment.js +289 -0
  20. package/dist/eval/experiments/embedding-model-comparison/run-experiment.js.map +1 -0
  21. package/dist/eval/experiments/index-differentiation/alignment-analysis.d.ts +53 -0
  22. package/dist/eval/experiments/index-differentiation/alignment-analysis.d.ts.map +1 -0
  23. package/dist/eval/experiments/index-differentiation/alignment-analysis.js +91 -0
  24. package/dist/eval/experiments/index-differentiation/alignment-analysis.js.map +1 -0
  25. package/dist/eval/experiments/index-differentiation/discrimination-test.d.ts +24 -0
  26. package/dist/eval/experiments/index-differentiation/discrimination-test.d.ts.map +1 -0
  27. package/dist/eval/experiments/index-differentiation/discrimination-test.js +79 -0
  28. package/dist/eval/experiments/index-differentiation/discrimination-test.js.map +1 -0
  29. package/dist/eval/experiments/index-differentiation/index.d.ts +11 -0
  30. package/dist/eval/experiments/index-differentiation/index.d.ts.map +1 -0
  31. package/dist/eval/experiments/index-differentiation/index.js +8 -0
  32. package/dist/eval/experiments/index-differentiation/index.js.map +1 -0
  33. package/dist/eval/experiments/index-differentiation/refinement-test.d.ts +32 -0
  34. package/dist/eval/experiments/index-differentiation/refinement-test.d.ts.map +1 -0
  35. package/dist/eval/experiments/index-differentiation/refinement-test.js +203 -0
  36. package/dist/eval/experiments/index-differentiation/refinement-test.js.map +1 -0
  37. package/dist/eval/experiments/index-differentiation/run-experiment.d.ts +20 -0
  38. package/dist/eval/experiments/index-differentiation/run-experiment.d.ts.map +1 -0
  39. package/dist/eval/experiments/index-differentiation/run-experiment.js +338 -0
  40. package/dist/eval/experiments/index-differentiation/run-experiment.js.map +1 -0
  41. package/dist/eval/experiments/index-differentiation/similarity-analysis.d.ts +31 -0
  42. package/dist/eval/experiments/index-differentiation/similarity-analysis.d.ts.map +1 -0
  43. package/dist/eval/experiments/index-differentiation/similarity-analysis.js +60 -0
  44. package/dist/eval/experiments/index-differentiation/similarity-analysis.js.map +1 -0
  45. package/dist/eval/experiments/index-differentiation/types.d.ts +114 -0
  46. package/dist/eval/experiments/index-differentiation/types.d.ts.map +1 -0
  47. package/dist/eval/experiments/index-differentiation/types.js +8 -0
  48. package/dist/eval/experiments/index-differentiation/types.js.map +1 -0
  49. package/dist/eval/experiments/index-vs-chunk/jeopardy-experiment.d.ts +19 -0
  50. package/dist/eval/experiments/index-vs-chunk/jeopardy-experiment.d.ts.map +1 -0
  51. package/dist/eval/experiments/index-vs-chunk/jeopardy-experiment.js +328 -0
  52. package/dist/eval/experiments/index-vs-chunk/jeopardy-experiment.js.map +1 -0
  53. package/dist/eval/experiments/index-vs-chunk/jeopardy-generator.d.ts +27 -0
  54. package/dist/eval/experiments/index-vs-chunk/jeopardy-generator.d.ts.map +1 -0
  55. package/dist/eval/experiments/index-vs-chunk/jeopardy-generator.js +154 -0
  56. package/dist/eval/experiments/index-vs-chunk/jeopardy-generator.js.map +1 -0
  57. package/dist/eval/experiments/index-vs-chunk/query-generator.d.ts +23 -0
  58. package/dist/eval/experiments/index-vs-chunk/query-generator.d.ts.map +1 -0
  59. package/dist/eval/experiments/index-vs-chunk/query-generator.js +113 -0
  60. package/dist/eval/experiments/index-vs-chunk/query-generator.js.map +1 -0
  61. package/dist/eval/experiments/index-vs-chunk/run-experiment.d.ts +17 -0
  62. package/dist/eval/experiments/index-vs-chunk/run-experiment.d.ts.map +1 -0
  63. package/dist/eval/experiments/index-vs-chunk/run-experiment.js +341 -0
  64. package/dist/eval/experiments/index-vs-chunk/run-experiment.js.map +1 -0
  65. package/dist/eval/experiments/index-vs-chunk/types.d.ts +71 -0
  66. package/dist/eval/experiments/index-vs-chunk/types.d.ts.map +1 -0
  67. package/dist/eval/experiments/index-vs-chunk/types.js +8 -0
  68. package/dist/eval/experiments/index-vs-chunk/types.js.map +1 -0
  69. package/dist/eval/experiments/pipeline-dropout/run-experiment.d.ts +18 -0
  70. package/dist/eval/experiments/pipeline-dropout/run-experiment.d.ts.map +1 -0
  71. package/dist/eval/experiments/pipeline-dropout/run-experiment.js +347 -0
  72. package/dist/eval/experiments/pipeline-dropout/run-experiment.js.map +1 -0
  73. package/dist/eval/experiments/rescorer-ceiling/analyze-misses.d.ts +17 -0
  74. package/dist/eval/experiments/rescorer-ceiling/analyze-misses.d.ts.map +1 -0
  75. package/dist/eval/experiments/rescorer-ceiling/analyze-misses.js +247 -0
  76. package/dist/eval/experiments/rescorer-ceiling/analyze-misses.js.map +1 -0
  77. package/dist/eval/experiments/rescorer-ceiling/benchmark-rescorers.d.ts +18 -0
  78. package/dist/eval/experiments/rescorer-ceiling/benchmark-rescorers.d.ts.map +1 -0
  79. package/dist/eval/experiments/rescorer-ceiling/benchmark-rescorers.js +443 -0
  80. package/dist/eval/experiments/rescorer-ceiling/benchmark-rescorers.js.map +1 -0
  81. package/dist/eval/experiments/rescorer-ceiling/run-experiment.d.ts +16 -0
  82. package/dist/eval/experiments/rescorer-ceiling/run-experiment.d.ts.map +1 -0
  83. package/dist/eval/experiments/rescorer-ceiling/run-experiment.js +226 -0
  84. package/dist/eval/experiments/rescorer-ceiling/run-experiment.js.map +1 -0
  85. package/dist/index-entries/index-generator.d.ts +74 -0
  86. package/dist/index-entries/index-generator.d.ts.map +1 -0
  87. package/dist/index-entries/index-generator.js +323 -0
  88. package/dist/index-entries/index-generator.js.map +1 -0
  89. package/dist/index-entries/index-refresher.d.ts +54 -0
  90. package/dist/index-entries/index-refresher.d.ts.map +1 -0
  91. package/dist/index-entries/index-refresher.js +203 -0
  92. package/dist/index-entries/index-refresher.js.map +1 -0
  93. package/dist/index-entries/index.d.ts +6 -0
  94. package/dist/index-entries/index.d.ts.map +1 -0
  95. package/dist/index-entries/index.js +6 -0
  96. package/dist/index-entries/index.js.map +1 -0
  97. package/dist/index.d.ts +4 -0
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +5 -0
  100. package/dist/index.js.map +1 -1
  101. package/dist/ingest/index-entry-hook.d.ts +15 -0
  102. package/dist/ingest/index-entry-hook.d.ts.map +1 -0
  103. package/dist/ingest/index-entry-hook.js +84 -0
  104. package/dist/ingest/index-entry-hook.js.map +1 -0
  105. package/dist/ingest/ingest-session.d.ts.map +1 -1
  106. package/dist/ingest/ingest-session.js +72 -18
  107. package/dist/ingest/ingest-session.js.map +1 -1
  108. package/dist/ingest/session-state.d.ts +49 -0
  109. package/dist/ingest/session-state.d.ts.map +1 -0
  110. package/dist/ingest/session-state.js +158 -0
  111. package/dist/ingest/session-state.js.map +1 -0
  112. package/dist/maintenance/scheduler.d.ts.map +1 -1
  113. package/dist/maintenance/scheduler.js +25 -0
  114. package/dist/maintenance/scheduler.js.map +1 -1
  115. package/dist/maintenance/tasks/backfill-index.d.ts +27 -0
  116. package/dist/maintenance/tasks/backfill-index.d.ts.map +1 -0
  117. package/dist/maintenance/tasks/backfill-index.js +44 -0
  118. package/dist/maintenance/tasks/backfill-index.js.map +1 -0
  119. package/dist/mcp/tools.d.ts +4 -0
  120. package/dist/mcp/tools.d.ts.map +1 -1
  121. package/dist/mcp/tools.js +115 -7
  122. package/dist/mcp/tools.js.map +1 -1
  123. package/dist/models/embedder.js +2 -2
  124. package/dist/models/embedder.js.map +1 -1
  125. package/dist/models/model-registry.d.ts +2 -0
  126. package/dist/models/model-registry.d.ts.map +1 -1
  127. package/dist/models/model-registry.js +15 -0
  128. package/dist/models/model-registry.js.map +1 -1
  129. package/dist/repomap/cache.d.ts +58 -0
  130. package/dist/repomap/cache.d.ts.map +1 -0
  131. package/dist/repomap/cache.js +101 -0
  132. package/dist/repomap/cache.js.map +1 -0
  133. package/dist/repomap/graph.d.ts +54 -0
  134. package/dist/repomap/graph.d.ts.map +1 -0
  135. package/dist/repomap/graph.js +113 -0
  136. package/dist/repomap/graph.js.map +1 -0
  137. package/dist/repomap/index.d.ts +83 -0
  138. package/dist/repomap/index.d.ts.map +1 -0
  139. package/dist/repomap/index.js +99 -0
  140. package/dist/repomap/index.js.map +1 -0
  141. package/dist/repomap/parser.d.ts +43 -0
  142. package/dist/repomap/parser.d.ts.map +1 -0
  143. package/dist/repomap/parser.js +994 -0
  144. package/dist/repomap/parser.js.map +1 -0
  145. package/dist/repomap/regex-parser.d.ts +24 -0
  146. package/dist/repomap/regex-parser.d.ts.map +1 -0
  147. package/dist/repomap/regex-parser.js +190 -0
  148. package/dist/repomap/regex-parser.js.map +1 -0
  149. package/dist/repomap/renderer.d.ts +40 -0
  150. package/dist/repomap/renderer.d.ts.map +1 -0
  151. package/dist/repomap/renderer.js +163 -0
  152. package/dist/repomap/renderer.js.map +1 -0
  153. package/dist/repomap/scanner.d.ts +32 -0
  154. package/dist/repomap/scanner.d.ts.map +1 -0
  155. package/dist/repomap/scanner.js +171 -0
  156. package/dist/repomap/scanner.js.map +1 -0
  157. package/dist/retrieval/chain-assembler.d.ts.map +1 -1
  158. package/dist/retrieval/chain-assembler.js +22 -3
  159. package/dist/retrieval/chain-assembler.js.map +1 -1
  160. package/dist/retrieval/index.d.ts +2 -0
  161. package/dist/retrieval/index.d.ts.map +1 -1
  162. package/dist/retrieval/index.js +2 -0
  163. package/dist/retrieval/index.js.map +1 -1
  164. package/dist/retrieval/mmr.d.ts +1 -0
  165. package/dist/retrieval/mmr.d.ts.map +1 -1
  166. package/dist/retrieval/mmr.js +35 -1
  167. package/dist/retrieval/mmr.js.map +1 -1
  168. package/dist/retrieval/search-assembler.d.ts +10 -1
  169. package/dist/retrieval/search-assembler.d.ts.map +1 -1
  170. package/dist/retrieval/search-assembler.js +249 -81
  171. package/dist/retrieval/search-assembler.js.map +1 -1
  172. package/dist/retrieval/session-reconstructor.d.ts +36 -0
  173. package/dist/retrieval/session-reconstructor.d.ts.map +1 -1
  174. package/dist/retrieval/session-reconstructor.js +126 -0
  175. package/dist/retrieval/session-reconstructor.js.map +1 -1
  176. package/dist/storage/db.d.ts.map +1 -1
  177. package/dist/storage/db.js +15 -0
  178. package/dist/storage/db.js.map +1 -1
  179. package/dist/storage/index-entry-store.d.ts +71 -0
  180. package/dist/storage/index-entry-store.d.ts.map +1 -0
  181. package/dist/storage/index-entry-store.js +275 -0
  182. package/dist/storage/index-entry-store.js.map +1 -0
  183. package/dist/storage/index.d.ts +5 -2
  184. package/dist/storage/index.d.ts.map +1 -1
  185. package/dist/storage/index.js +5 -1
  186. package/dist/storage/index.js.map +1 -1
  187. package/dist/storage/migrations.d.ts.map +1 -1
  188. package/dist/storage/migrations.js +102 -0
  189. package/dist/storage/migrations.js.map +1 -1
  190. package/dist/storage/schema.sql +68 -2
  191. package/dist/storage/session-state-store.d.ts +61 -0
  192. package/dist/storage/session-state-store.d.ts.map +1 -0
  193. package/dist/storage/session-state-store.js +119 -0
  194. package/dist/storage/session-state-store.js.map +1 -0
  195. package/dist/storage/types.d.ts +50 -0
  196. package/dist/storage/types.d.ts.map +1 -1
  197. package/dist/storage/vector-store.d.ts +17 -2
  198. package/dist/storage/vector-store.d.ts.map +1 -1
  199. package/dist/storage/vector-store.js +96 -36
  200. package/dist/storage/vector-store.js.map +1 -1
  201. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze-misses.js","sourceRoot":"","sources":["../../../../src/eval/experiments/rescorer-ceiling/analyze-misses.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Re-scorer Benchmark
3
+ *
4
+ * Compares three re-scoring approaches on the same candidate set:
5
+ * 1. Cross-encoder (ms-marco-MiniLM-L-6-v2) — local ONNX model
6
+ * 2. Query expansion — LLM generates reformulations, max-sim re-scoring
7
+ * 3. LLM reranker — Haiku directly ranks candidates
8
+ *
9
+ * For each approach, measures:
10
+ * - How many ground-truth chunks get promoted into top-5, top-10
11
+ * - Budget assembly survival rate (20K token budget)
12
+ * - Latency per query
13
+ *
14
+ * Usage:
15
+ * npx tsx src/eval/experiments/rescorer-ceiling/benchmark-rescorers.ts [--sample-size=50]
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=benchmark-rescorers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark-rescorers.d.ts","sourceRoot":"","sources":["../../../../src/eval/experiments/rescorer-ceiling/benchmark-rescorers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
@@ -0,0 +1,443 @@
1
+ /**
2
+ * Re-scorer Benchmark
3
+ *
4
+ * Compares three re-scoring approaches on the same candidate set:
5
+ * 1. Cross-encoder (ms-marco-MiniLM-L-6-v2) — local ONNX model
6
+ * 2. Query expansion — LLM generates reformulations, max-sim re-scoring
7
+ * 3. LLM reranker — Haiku directly ranks candidates
8
+ *
9
+ * For each approach, measures:
10
+ * - How many ground-truth chunks get promoted into top-5, top-10
11
+ * - Budget assembly survival rate (20K token budget)
12
+ * - Latency per query
13
+ *
14
+ * Usage:
15
+ * npx tsx src/eval/experiments/rescorer-ceiling/benchmark-rescorers.ts [--sample-size=50]
16
+ */
17
+ import { pipeline } from '@huggingface/transformers';
18
+ import Anthropic from '@anthropic-ai/sdk';
19
+ import { getDb } from '../../../storage/db.js';
20
+ import { vectorStore, indexVectorStore } from '../../../storage/vector-store.js';
21
+ import { getChunkById } from '../../../storage/chunk-store.js';
22
+ import { getIndexEntryCount, getIndexedChunkCount, dereferenceToChunkIds, } from '../../../storage/index-entry-store.js';
23
+ import { getAllClusters, getClusterChunkIds } from '../../../storage/cluster-store.js';
24
+ import { Embedder } from '../../../models/embedder.js';
25
+ import { getModel } from '../../../models/model-registry.js';
26
+ import { loadConfig, toRuntimeConfig } from '../../../config/loader.js';
27
+ import { cosineSimilarity } from '../../../utils/angular-distance.js';
28
+ import { createSecretStore } from '../../../utils/secret-store.js';
29
+ import { generateSearchQueries } from '../index-vs-chunk/query-generator.js';
30
+ // ── Constants ──────────────────────────────────────────────────────────────
31
+ const CROSS_ENCODER_MODEL = 'Xenova/ms-marco-MiniLM-L-6-v2';
32
+ const CROSS_ENCODER_MAX_CHARS = 512 * 4; // ~512 tokens
33
+ const VECTOR_K = 500; // Candidate pool size
34
+ const QUERY_EXPANSION_COUNT = 5;
35
+ const LLM_RERANK_TOP_N = 30; // Send top-N to LLM for reranking
36
+ // ── Helpers ────────────────────────────────────────────────────────────────
37
+ function createRng(seed) {
38
+ let s = seed;
39
+ return () => {
40
+ s = (s * 1664525 + 1013904223) & 0x7fffffff;
41
+ return s / 0x7fffffff;
42
+ };
43
+ }
44
+ function sampleChunks(sampleSize, seed) {
45
+ getDb();
46
+ const clusters = getAllClusters();
47
+ if (clusters.length === 0)
48
+ throw new Error('No clusters found.');
49
+ const rng = createRng(seed);
50
+ const result = [];
51
+ const shuffled = [...clusters].sort(() => rng() - 0.5);
52
+ for (const cluster of shuffled) {
53
+ if (result.length >= sampleSize)
54
+ break;
55
+ const chunkIds = getClusterChunkIds(cluster.id);
56
+ if (chunkIds.length < 2)
57
+ continue;
58
+ const numPicks = Math.min(2, Math.ceil(sampleSize / clusters.length), chunkIds.length);
59
+ const shuffledIds = [...chunkIds].sort(() => rng() - 0.5);
60
+ for (let i = 0; i < numPicks && result.length < sampleSize; i++) {
61
+ const chunk = getChunkById(shuffledIds[i]);
62
+ if (!chunk || chunk.content.length < 100)
63
+ continue;
64
+ result.push({
65
+ id: chunk.id,
66
+ sessionSlug: chunk.sessionSlug,
67
+ content: chunk.content,
68
+ clusterId: cluster.id,
69
+ clusterName: cluster.name,
70
+ });
71
+ }
72
+ }
73
+ return result;
74
+ }
75
+ function budgetSurvival(ranked, targetId, tokenMap, budget) {
76
+ let used = 0;
77
+ for (const item of ranked) {
78
+ const tokens = tokenMap.get(item.chunkId) ?? 500;
79
+ if (used + tokens > budget)
80
+ return false;
81
+ used += tokens;
82
+ if (item.chunkId === targetId)
83
+ return true;
84
+ }
85
+ return false;
86
+ }
87
+ function findRank(items, targetId) {
88
+ const idx = items.findIndex((i) => i.chunkId === targetId);
89
+ return idx >= 0 ? idx + 1 : 0;
90
+ }
91
+ // ── Approach 1: Cross-encoder ──────────────────────────────────────────────
92
+ async function loadCrossEncoder() {
93
+ console.log(`Loading cross-encoder: ${CROSS_ENCODER_MODEL}...`);
94
+ const start = Date.now();
95
+ const pipe = await pipeline('text-classification', CROSS_ENCODER_MODEL, {
96
+ dtype: 'fp32',
97
+ });
98
+ console.log(` Loaded in ${Date.now() - start}ms`);
99
+ return pipe;
100
+ }
101
+ async function crossEncoderRescore(pipe, query, candidates) {
102
+ const scored = [];
103
+ for (const c of candidates) {
104
+ const truncated = c.content.slice(0, CROSS_ENCODER_MAX_CHARS);
105
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
106
+ const result = await pipe({ text: query, text_pair: truncated }, { topk: 1 });
107
+ const score = Array.isArray(result) ? result[0].score : result.score;
108
+ scored.push({ chunkId: c.chunkId, score });
109
+ }
110
+ return scored.sort((a, b) => b.score - a.score);
111
+ }
112
+ // ── Approach 2: Query expansion ────────────────────────────────────────────
113
+ async function expandQuery(client, query, model) {
114
+ const response = await client.messages.create({
115
+ model,
116
+ max_tokens: 300,
117
+ messages: [{
118
+ role: 'user',
119
+ content: `Generate ${QUERY_EXPANSION_COUNT} alternative search queries for finding the same information as: "${query}"
120
+
121
+ Each query should approach the topic from a different angle (synonyms, related concepts, specific details, broader framing).
122
+
123
+ Return ONLY the queries, one per line, no numbering or bullets.`,
124
+ }],
125
+ });
126
+ const text = response.content[0].type === 'text' ? response.content[0].text : '';
127
+ return text.split('\n').map((l) => l.trim()).filter((l) => l.length > 0).slice(0, QUERY_EXPANSION_COUNT);
128
+ }
129
+ async function queryExpansionRescore(embedder, originalEmbedding, expansionEmbeddings, candidates) {
130
+ const allEmbeddings = [originalEmbedding, ...expansionEmbeddings];
131
+ const scored = [];
132
+ for (const c of candidates) {
133
+ const chunkEmb = await vectorStore.get(c.chunkId);
134
+ if (!chunkEmb) {
135
+ scored.push({ chunkId: c.chunkId, score: 0 });
136
+ continue;
137
+ }
138
+ // Max similarity across all query variants
139
+ let maxSim = -1;
140
+ for (const qEmb of allEmbeddings) {
141
+ const sim = cosineSimilarity(qEmb, chunkEmb);
142
+ if (sim > maxSim)
143
+ maxSim = sim;
144
+ }
145
+ scored.push({ chunkId: c.chunkId, score: maxSim });
146
+ }
147
+ return scored.sort((a, b) => b.score - a.score);
148
+ }
149
+ // ── Approach 3: LLM reranker ───────────────────────────────────────────────
150
+ async function llmRerank(client, query, candidates, model) {
151
+ // Take only top-N by vector score to keep prompt small
152
+ const topCandidates = candidates.slice(0, LLM_RERANK_TOP_N);
153
+ const passages = topCandidates.map((c, i) => {
154
+ const snippet = c.content.slice(0, 400);
155
+ return `[${i}] ${snippet}`;
156
+ }).join('\n\n');
157
+ const response = await client.messages.create({
158
+ model,
159
+ max_tokens: 200,
160
+ messages: [{
161
+ role: 'user',
162
+ content: `Query: "${query}"
163
+
164
+ Rank these passages by relevance to the query. Return ONLY the passage numbers in order from most to least relevant, comma-separated. Example: 3,0,7,1,5
165
+
166
+ ${passages}`,
167
+ }],
168
+ });
169
+ const text = response.content[0].type === 'text' ? response.content[0].text : '';
170
+ const indices = text.match(/\d+/g)?.map(Number) ?? [];
171
+ // Build ranked list from LLM ordering, then append unranked candidates
172
+ const ranked = [];
173
+ const seen = new Set();
174
+ for (const idx of indices) {
175
+ if (idx >= 0 && idx < topCandidates.length) {
176
+ const c = topCandidates[idx];
177
+ if (!seen.has(c.chunkId)) {
178
+ ranked.push({ chunkId: c.chunkId, score: topCandidates.length - ranked.length });
179
+ seen.add(c.chunkId);
180
+ }
181
+ }
182
+ }
183
+ // Append remaining candidates not ranked by LLM
184
+ for (const c of candidates) {
185
+ if (!seen.has(c.chunkId)) {
186
+ ranked.push({ chunkId: c.chunkId, score: 0 });
187
+ seen.add(c.chunkId);
188
+ }
189
+ }
190
+ return ranked;
191
+ }
192
+ // ── Main ───────────────────────────────────────────────────────────────────
193
+ async function runBenchmark() {
194
+ const args = process.argv.slice(2);
195
+ const sampleSizeArg = args.find((a) => a.startsWith('--sample-size='));
196
+ const sampleSize = sampleSizeArg ? parseInt(sampleSizeArg.split('=')[1], 10) : 30;
197
+ const seed = 42;
198
+ console.log('=== Re-scorer Benchmark ===\n');
199
+ getDb();
200
+ const externalConfig = loadConfig();
201
+ const config = toRuntimeConfig(externalConfig);
202
+ const maxTokens = config.mcpMaxResponseTokens;
203
+ const useIndex = config.semanticIndex.useForSearch && getIndexEntryCount() > 0;
204
+ let entriesPerChunk = 1;
205
+ if (useIndex) {
206
+ const indexedChunks = getIndexedChunkCount();
207
+ entriesPerChunk = indexedChunks > 0 ? getIndexEntryCount() / indexedChunks : 1;
208
+ }
209
+ console.log(`Candidate pool: K=${VECTOR_K}`);
210
+ console.log(`Budget: ${maxTokens} tokens`);
211
+ console.log(`LLM rerank top-N: ${LLM_RERANK_TOP_N}`);
212
+ vectorStore.setModelId(config.embeddingModel);
213
+ if (useIndex)
214
+ indexVectorStore.setModelId(config.embeddingModel);
215
+ // Get Anthropic client
216
+ if (!process.env.ANTHROPIC_API_KEY) {
217
+ try {
218
+ const store = createSecretStore();
219
+ const storedKey = await store.get('anthropic-api-key');
220
+ if (storedKey)
221
+ process.env.ANTHROPIC_API_KEY = storedKey;
222
+ }
223
+ catch { /* */ }
224
+ }
225
+ const anthropic = new Anthropic();
226
+ // Sample and generate queries
227
+ console.log(`\nSampling ${sampleSize} chunks...`);
228
+ const sampledChunks = sampleChunks(sampleSize, seed);
229
+ console.log(` Sampled ${sampledChunks.length} chunks`);
230
+ console.log('Generating queries...');
231
+ const queries = await generateSearchQueries(sampledChunks, config.clusterRefreshModel);
232
+ console.log(` Generated ${queries.length} queries`);
233
+ // Prepare embedder
234
+ const embedder = new Embedder();
235
+ await embedder.load(getModel(config.embeddingModel));
236
+ console.log('Embedding queries...');
237
+ const queryEmbeddings = [];
238
+ for (const q of queries) {
239
+ const { embedding } = await embedder.embed(q.query, true);
240
+ queryEmbeddings.push(embedding);
241
+ }
242
+ console.log(` Embedded ${queryEmbeddings.length} queries`);
243
+ // Build candidate pools
244
+ console.log(`\nBuilding candidate pools (K=${VECTOR_K})...`);
245
+ const queryDataList = [];
246
+ for (let qi = 0; qi < queries.length; qi++) {
247
+ const q = queries[qi];
248
+ const embedding = queryEmbeddings[qi];
249
+ const targetId = q.groundTruthChunkId;
250
+ // Get candidates via index or chunk path
251
+ let candidateIds;
252
+ if (useIndex) {
253
+ const indexLimit = Math.ceil(VECTOR_K * entriesPerChunk);
254
+ const results = await indexVectorStore.search(embedding, indexLimit);
255
+ // Dereference index entries to chunk IDs
256
+ const chunkScoreMap = new Map();
257
+ for (const r of results) {
258
+ const chunkIds = dereferenceToChunkIds([r.id]);
259
+ const score = Math.max(0, 1 - r.distance);
260
+ for (const cid of chunkIds) {
261
+ const existing = chunkScoreMap.get(cid);
262
+ if (existing === undefined || score > existing) {
263
+ chunkScoreMap.set(cid, score);
264
+ }
265
+ }
266
+ }
267
+ candidateIds = [...chunkScoreMap.entries()]
268
+ .map(([id, score]) => ({ id, score }))
269
+ .sort((a, b) => b.score - a.score);
270
+ }
271
+ else {
272
+ const results = await vectorStore.search(embedding, VECTOR_K);
273
+ candidateIds = results.map((r) => ({ id: r.id, score: Math.max(0, 1 - r.distance) }));
274
+ }
275
+ // Load chunk content for candidates
276
+ const candidates = [];
277
+ for (const { id, score } of candidateIds) {
278
+ const chunk = getChunkById(id);
279
+ if (chunk) {
280
+ candidates.push({
281
+ chunkId: id,
282
+ content: chunk.content,
283
+ tokens: chunk.approxTokens || 500,
284
+ vectorScore: score,
285
+ });
286
+ }
287
+ }
288
+ const targetInPool = candidates.some((c) => c.chunkId === targetId);
289
+ queryDataList.push({ query: q.query, targetId, embedding, candidates, targetInPool });
290
+ }
291
+ const inPool = queryDataList.filter((q) => q.targetInPool).length;
292
+ console.log(` ${inPool}/${queryDataList.length} targets in candidate pool`);
293
+ // Only benchmark queries where target is in the pool (otherwise re-scoring can't help)
294
+ const benchmarkable = queryDataList.filter((q) => q.targetInPool);
295
+ console.log(` Benchmarking ${benchmarkable.length} queries\n`);
296
+ if (benchmarkable.length === 0) {
297
+ console.log('No benchmarkable queries. Exiting.');
298
+ await embedder.dispose();
299
+ return;
300
+ }
301
+ // Token map for budget calculations
302
+ const tokenMap = new Map();
303
+ for (const qd of benchmarkable) {
304
+ for (const c of qd.candidates) {
305
+ tokenMap.set(c.chunkId, c.tokens);
306
+ }
307
+ }
308
+ // ── Baseline: vector score ordering ──────────────────────────────────────
309
+ console.log('── Baseline (vector score) ──');
310
+ let baselineTop5 = 0, baselineTop10 = 0, baselineBudget = 0;
311
+ const baselineRanks = [];
312
+ for (const qd of benchmarkable) {
313
+ const rank = findRank(qd.candidates, qd.targetId);
314
+ baselineRanks.push(rank);
315
+ if (rank > 0 && rank <= 5)
316
+ baselineTop5++;
317
+ if (rank > 0 && rank <= 10)
318
+ baselineTop10++;
319
+ if (budgetSurvival(qd.candidates, qd.targetId, tokenMap, maxTokens))
320
+ baselineBudget++;
321
+ }
322
+ const baselineMedianRank = [...baselineRanks].sort((a, b) => a - b)[Math.floor(baselineRanks.length / 2)];
323
+ console.log(` Top-5: ${baselineTop5}/${benchmarkable.length} (${((baselineTop5 / benchmarkable.length) * 100).toFixed(0)}%)`);
324
+ console.log(` Top-10: ${baselineTop10}/${benchmarkable.length} (${((baselineTop10 / benchmarkable.length) * 100).toFixed(0)}%)`);
325
+ console.log(` Budget: ${baselineBudget}/${benchmarkable.length} (${((baselineBudget / benchmarkable.length) * 100).toFixed(0)}%)`);
326
+ console.log(` Median rank: ${baselineMedianRank}\n`);
327
+ // ── Approach 1: Cross-encoder ────────────────────────────────────────────
328
+ console.log('── Cross-encoder (ms-marco-MiniLM-L-6-v2) ──');
329
+ const crossEncoder = await loadCrossEncoder();
330
+ let ceTop5 = 0, ceTop10 = 0, ceBudget = 0;
331
+ const ceRanks = [];
332
+ const ceTimings = [];
333
+ for (let i = 0; i < benchmarkable.length; i++) {
334
+ const qd = benchmarkable[i];
335
+ const start = Date.now();
336
+ const reranked = await crossEncoderRescore(crossEncoder, qd.query, qd.candidates);
337
+ ceTimings.push(Date.now() - start);
338
+ const rank = findRank(reranked, qd.targetId);
339
+ ceRanks.push(rank);
340
+ if (rank > 0 && rank <= 5)
341
+ ceTop5++;
342
+ if (rank > 0 && rank <= 10)
343
+ ceTop10++;
344
+ if (budgetSurvival(reranked, qd.targetId, tokenMap, maxTokens))
345
+ ceBudget++;
346
+ if ((i + 1) % 5 === 0)
347
+ console.log(` Query ${i + 1}/${benchmarkable.length}`);
348
+ }
349
+ const ceMedianRank = [...ceRanks].sort((a, b) => a - b)[Math.floor(ceRanks.length / 2)];
350
+ const ceMedianTime = [...ceTimings].sort((a, b) => a - b)[Math.floor(ceTimings.length / 2)];
351
+ console.log(` Top-5: ${ceTop5}/${benchmarkable.length} (${((ceTop5 / benchmarkable.length) * 100).toFixed(0)}%)`);
352
+ console.log(` Top-10: ${ceTop10}/${benchmarkable.length} (${((ceTop10 / benchmarkable.length) * 100).toFixed(0)}%)`);
353
+ console.log(` Budget: ${ceBudget}/${benchmarkable.length} (${((ceBudget / benchmarkable.length) * 100).toFixed(0)}%)`);
354
+ console.log(` Median rank: ${ceMedianRank}`);
355
+ console.log(` Median latency: ${ceMedianTime}ms\n`);
356
+ // Dispose cross-encoder to free memory before next approach
357
+ await crossEncoder.dispose?.();
358
+ // ── Approach 2: Query expansion ──────────────────────────────────────────
359
+ console.log('── Query expansion (5 reformulations) ──');
360
+ let qeTop5 = 0, qeTop10 = 0, qeBudget = 0;
361
+ const qeRanks = [];
362
+ const qeTimings = [];
363
+ for (let i = 0; i < benchmarkable.length; i++) {
364
+ const qd = benchmarkable[i];
365
+ const start = Date.now();
366
+ // Generate expansions
367
+ const expansions = await expandQuery(anthropic, qd.query, config.clusterRefreshModel);
368
+ // Embed expansions
369
+ const expansionEmbeddings = [];
370
+ for (const exp of expansions) {
371
+ const { embedding } = await embedder.embed(exp, true);
372
+ expansionEmbeddings.push(embedding);
373
+ }
374
+ // Re-score candidates
375
+ const reranked = await queryExpansionRescore(embedder, qd.embedding, expansionEmbeddings, qd.candidates);
376
+ qeTimings.push(Date.now() - start);
377
+ const rank = findRank(reranked, qd.targetId);
378
+ qeRanks.push(rank);
379
+ if (rank > 0 && rank <= 5)
380
+ qeTop5++;
381
+ if (rank > 0 && rank <= 10)
382
+ qeTop10++;
383
+ if (budgetSurvival(reranked, qd.targetId, tokenMap, maxTokens))
384
+ qeBudget++;
385
+ if ((i + 1) % 5 === 0)
386
+ console.log(` Query ${i + 1}/${benchmarkable.length}`);
387
+ }
388
+ const qeMedianRank = [...qeRanks].sort((a, b) => a - b)[Math.floor(qeRanks.length / 2)];
389
+ const qeMedianTime = [...qeTimings].sort((a, b) => a - b)[Math.floor(qeTimings.length / 2)];
390
+ console.log(` Top-5: ${qeTop5}/${benchmarkable.length} (${((qeTop5 / benchmarkable.length) * 100).toFixed(0)}%)`);
391
+ console.log(` Top-10: ${qeTop10}/${benchmarkable.length} (${((qeTop10 / benchmarkable.length) * 100).toFixed(0)}%)`);
392
+ console.log(` Budget: ${qeBudget}/${benchmarkable.length} (${((qeBudget / benchmarkable.length) * 100).toFixed(0)}%)`);
393
+ console.log(` Median rank: ${qeMedianRank}`);
394
+ console.log(` Median latency: ${qeMedianTime}ms\n`);
395
+ // ── Approach 3: LLM reranker ─────────────────────────────────────────────
396
+ console.log(`── LLM reranker (top-${LLM_RERANK_TOP_N} → Haiku) ──`);
397
+ let llmTop5 = 0, llmTop10 = 0, llmBudget = 0;
398
+ const llmRanks = [];
399
+ const llmTimings = [];
400
+ for (let i = 0; i < benchmarkable.length; i++) {
401
+ const qd = benchmarkable[i];
402
+ const start = Date.now();
403
+ const reranked = await llmRerank(anthropic, qd.query, qd.candidates, config.clusterRefreshModel);
404
+ llmTimings.push(Date.now() - start);
405
+ const rank = findRank(reranked, qd.targetId);
406
+ llmRanks.push(rank);
407
+ if (rank > 0 && rank <= 5)
408
+ llmTop5++;
409
+ if (rank > 0 && rank <= 10)
410
+ llmTop10++;
411
+ if (budgetSurvival(reranked, qd.targetId, tokenMap, maxTokens))
412
+ llmBudget++;
413
+ if ((i + 1) % 5 === 0)
414
+ console.log(` Query ${i + 1}/${benchmarkable.length}`);
415
+ }
416
+ const llmMedianRank = [...llmRanks].sort((a, b) => a - b)[Math.floor(llmRanks.length / 2)];
417
+ const llmMedianTime = [...llmTimings].sort((a, b) => a - b)[Math.floor(llmTimings.length / 2)];
418
+ console.log(` Top-5: ${llmTop5}/${benchmarkable.length} (${((llmTop5 / benchmarkable.length) * 100).toFixed(0)}%)`);
419
+ console.log(` Top-10: ${llmTop10}/${benchmarkable.length} (${((llmTop10 / benchmarkable.length) * 100).toFixed(0)}%)`);
420
+ console.log(` Budget: ${llmBudget}/${benchmarkable.length} (${((llmBudget / benchmarkable.length) * 100).toFixed(0)}%)`);
421
+ console.log(` Median rank: ${llmMedianRank}`);
422
+ console.log(` Median latency: ${llmMedianTime}ms\n`);
423
+ // ── Summary ──────────────────────────────────────────────────────────────
424
+ const total = queryDataList.length;
425
+ console.log('══ Summary ══\n');
426
+ console.log(`Total queries: ${total}`);
427
+ console.log(`In candidate pool (K=${VECTOR_K}): ${inPool}/${total} (${((inPool / total) * 100).toFixed(0)}%)`);
428
+ console.log(`Benchmarkable: ${benchmarkable.length}\n`);
429
+ console.log(' Approach Top-5 Top-10 Budget Med.Rank Med.Latency');
430
+ console.log(' ──────────────────────────────────────────────────────────────────────────');
431
+ const pct = (n) => `${((n / benchmarkable.length) * 100).toFixed(0)}%`.padStart(4);
432
+ console.log(` Baseline (vector) ${pct(baselineTop5)} ${pct(baselineTop10)} ${pct(baselineBudget)} ${String(baselineMedianRank).padStart(4)} 0ms`);
433
+ console.log(` Cross-encoder ${pct(ceTop5)} ${pct(ceTop10)} ${pct(ceBudget)} ${String(ceMedianRank).padStart(4)} ${String(ceMedianTime).padStart(5)}ms`);
434
+ console.log(` Query expansion ${pct(qeTop5)} ${pct(qeTop10)} ${pct(qeBudget)} ${String(qeMedianRank).padStart(4)} ${String(qeMedianTime).padStart(5)}ms`);
435
+ console.log(` LLM reranker ${pct(llmTop5)} ${pct(llmTop10)} ${pct(llmBudget)} ${String(llmMedianRank).padStart(4)} ${String(llmMedianTime).padStart(5)}ms`);
436
+ await embedder.dispose();
437
+ console.log('\nDone.');
438
+ }
439
+ runBenchmark().catch((err) => {
440
+ console.error('Benchmark failed:', err);
441
+ process.exit(1);
442
+ });
443
+ //# sourceMappingURL=benchmark-rescorers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark-rescorers.js","sourceRoot":"","sources":["../../../../src/eval/experiments/rescorer-ceiling/benchmark-rescorers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Re-scorer Ceiling Analysis
3
+ *
4
+ * Measures how much headroom a second-stage re-scorer would have by answering:
5
+ * 1. At high K values, what % of ground-truth chunks appear in vector search?
6
+ * 2. When found, what's their rank distribution?
7
+ * 3. If a perfect re-scorer promoted every found target to rank 1,
8
+ * what would budget assembly look like?
9
+ *
10
+ * Tests both raw chunk search and index entry search paths.
11
+ *
12
+ * Usage:
13
+ * npx tsx src/eval/experiments/rescorer-ceiling/run-experiment.ts [--sample-size=50]
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=run-experiment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-experiment.d.ts","sourceRoot":"","sources":["../../../../src/eval/experiments/rescorer-ceiling/run-experiment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}