causantic 0.9.3 → 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 +23 -18
  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
@@ -51,6 +51,8 @@ export interface ExternalConfig {
51
51
  device?: string;
52
52
  /** Embedding model ID from model registry. Default: 'jina-small'. */
53
53
  model?: string;
54
+ /** Embed chunks eagerly during ingestion. Default: false. */
55
+ eager?: boolean;
54
56
  };
55
57
  maintenance?: {
56
58
  /** Hour of day (0-23) to run reclustering. Default: 2. */
@@ -61,6 +63,10 @@ export interface ExternalConfig {
61
63
  mmrLambda?: number;
62
64
  /** Feedback weight for cluster expansion scoring. Default: 0.1 */
63
65
  feedbackWeight?: number;
66
+ /** Primary retrieval method. Default: 'keyword'. */
67
+ primary?: 'keyword' | 'vector' | 'hybrid';
68
+ /** Use vector search to enrich keyword results when primary is 'keyword'. Default: false. */
69
+ vectorEnrichment?: boolean;
64
70
  };
65
71
  recency?: {
66
72
  /** Amplitude of the time-decay boost (multiplied by exp decay). Default: 0.3 */
@@ -74,6 +80,16 @@ export interface ExternalConfig {
74
80
  /** Reference token count for penalty calculation. Must be > 0. Default: 500 */
75
81
  referenceTokens?: number;
76
82
  };
83
+ semanticIndex?: {
84
+ /** Enable semantic index generation. Default: true. */
85
+ enabled?: boolean;
86
+ /** Target description length in tokens. Default: 130. */
87
+ targetDescriptionTokens?: number;
88
+ /** Max entries to backfill per maintenance run. Default: 500. */
89
+ batchRefreshLimit?: number;
90
+ /** Use index entries for search when available. Default: true. */
91
+ useForSearch?: boolean;
92
+ };
77
93
  }
78
94
  /** Default external config values */
79
95
  declare const EXTERNAL_DEFAULTS: Required<ExternalConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,7 @@ const EXTERNAL_DEFAULTS = {
50
50
  embedding: {
51
51
  device: 'auto',
52
52
  model: 'jina-small',
53
+ eager: false,
53
54
  },
54
55
  maintenance: {
55
56
  clusterHour: 2,
@@ -57,6 +58,8 @@ const EXTERNAL_DEFAULTS = {
57
58
  retrieval: {
58
59
  mmrLambda: 0.7,
59
60
  feedbackWeight: 0.1,
61
+ primary: 'keyword',
62
+ vectorEnrichment: false,
60
63
  },
61
64
  recency: {
62
65
  decayFactor: 0.3,
@@ -66,6 +69,12 @@ const EXTERNAL_DEFAULTS = {
66
69
  enabled: true,
67
70
  referenceTokens: 500,
68
71
  },
72
+ semanticIndex: {
73
+ enabled: false,
74
+ targetDescriptionTokens: 130,
75
+ batchRefreshLimit: 500,
76
+ useForSearch: true,
77
+ },
69
78
  };
70
79
  /**
71
80
  * Load config from a JSON file.
@@ -183,6 +192,10 @@ function loadEnvConfig() {
183
192
  config.embedding = config.embedding ?? {};
184
193
  config.embedding.model = process.env.CAUSANTIC_EMBEDDING_MODEL;
185
194
  }
195
+ if (process.env.CAUSANTIC_EMBEDDING_EAGER) {
196
+ config.embedding = config.embedding ?? {};
197
+ config.embedding.eager = process.env.CAUSANTIC_EMBEDDING_EAGER === 'true';
198
+ }
186
199
  // Retrieval
187
200
  if (process.env.CAUSANTIC_RETRIEVAL_MMR_LAMBDA) {
188
201
  config.retrieval = config.retrieval ?? {};
@@ -192,6 +205,15 @@ function loadEnvConfig() {
192
205
  config.retrieval = config.retrieval ?? {};
193
206
  config.retrieval.feedbackWeight = parseFloat(process.env.CAUSANTIC_RETRIEVAL_FEEDBACK_WEIGHT);
194
207
  }
208
+ if (process.env.CAUSANTIC_RETRIEVAL_PRIMARY) {
209
+ config.retrieval = config.retrieval ?? {};
210
+ config.retrieval.primary = process.env.CAUSANTIC_RETRIEVAL_PRIMARY;
211
+ }
212
+ if (process.env.CAUSANTIC_RETRIEVAL_VECTOR_ENRICHMENT) {
213
+ config.retrieval = config.retrieval ?? {};
214
+ config.retrieval.vectorEnrichment =
215
+ process.env.CAUSANTIC_RETRIEVAL_VECTOR_ENRICHMENT === 'true';
216
+ }
195
217
  // Recency
196
218
  if (process.env.CAUSANTIC_RECENCY_DECAY_FACTOR) {
197
219
  config.recency = config.recency ?? {};
@@ -201,6 +223,15 @@ function loadEnvConfig() {
201
223
  config.recency = config.recency ?? {};
202
224
  config.recency.halfLifeHours = parseFloat(process.env.CAUSANTIC_RECENCY_HALF_LIFE_HOURS);
203
225
  }
226
+ // Semantic Index
227
+ if (process.env.CAUSANTIC_SEMANTIC_INDEX_ENABLED) {
228
+ config.semanticIndex = config.semanticIndex ?? {};
229
+ config.semanticIndex.enabled = process.env.CAUSANTIC_SEMANTIC_INDEX_ENABLED === 'true';
230
+ }
231
+ if (process.env.CAUSANTIC_SEMANTIC_INDEX_USE_FOR_SEARCH) {
232
+ config.semanticIndex = config.semanticIndex ?? {};
233
+ config.semanticIndex.useForSearch = process.env.CAUSANTIC_SEMANTIC_INDEX_USE_FOR_SEARCH === 'true';
234
+ }
204
235
  return config;
205
236
  }
206
237
  /**
@@ -284,6 +315,11 @@ export function validateExternalConfig(config) {
284
315
  }
285
316
  }
286
317
  // Retrieval validation
318
+ if (config.retrieval?.primary !== undefined) {
319
+ if (!['keyword', 'vector', 'hybrid'].includes(config.retrieval.primary)) {
320
+ errors.push("retrieval.primary must be 'keyword', 'vector', or 'hybrid'");
321
+ }
322
+ }
287
323
  if (config.retrieval?.mmrLambda !== undefined) {
288
324
  if (config.retrieval.mmrLambda < 0 || config.retrieval.mmrLambda > 1) {
289
325
  errors.push('retrieval.mmrLambda must be between 0 and 1 (inclusive)');
@@ -373,8 +409,12 @@ export function toRuntimeConfig(external) {
373
409
  // LLM
374
410
  clusterRefreshModel: external.llm.clusterRefreshModel ?? DEFAULT_CONFIG.clusterRefreshModel,
375
411
  refreshRateLimitPerMin: external.llm.refreshRateLimitPerMin ?? DEFAULT_CONFIG.refreshRateLimitPerMin,
412
+ // Retrieval strategy
413
+ retrievalPrimary: external.retrieval?.primary ?? DEFAULT_CONFIG.retrievalPrimary,
414
+ vectorEnrichment: external.retrieval?.vectorEnrichment ?? DEFAULT_CONFIG.vectorEnrichment,
376
415
  // Embedding
377
416
  embeddingModel: external.embedding?.model ?? DEFAULT_CONFIG.embeddingModel,
417
+ embeddingEager: external.embedding?.eager ?? DEFAULT_CONFIG.embeddingEager,
378
418
  // Retrieval
379
419
  mmrReranking: {
380
420
  lambda: external.retrieval?.mmrLambda ?? DEFAULT_CONFIG.mmrReranking.lambda,
@@ -390,6 +430,17 @@ export function toRuntimeConfig(external) {
390
430
  enabled: external.lengthPenalty?.enabled ?? DEFAULT_CONFIG.lengthPenalty.enabled,
391
431
  referenceTokens: external.lengthPenalty?.referenceTokens ?? DEFAULT_CONFIG.lengthPenalty.referenceTokens,
392
432
  },
433
+ // Repo map (uses DEFAULT_CONFIG defaults — no external config mapping yet)
434
+ repomap: DEFAULT_CONFIG.repomap,
435
+ // Semantic index
436
+ semanticIndex: {
437
+ enabled: external.semanticIndex?.enabled ?? DEFAULT_CONFIG.semanticIndex.enabled,
438
+ targetDescriptionTokens: external.semanticIndex?.targetDescriptionTokens ??
439
+ DEFAULT_CONFIG.semanticIndex.targetDescriptionTokens,
440
+ batchRefreshLimit: external.semanticIndex?.batchRefreshLimit ??
441
+ DEFAULT_CONFIG.semanticIndex.batchRefreshLimit,
442
+ useForSearch: external.semanticIndex?.useForSearch ?? DEFAULT_CONFIG.semanticIndex.useForSearch,
443
+ },
393
444
  };
394
445
  }
395
446
  // Re-export for convenience
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
@@ -60,12 +60,38 @@ export interface MemoryConfig {
60
60
  };
61
61
  /** Ratio of new chunks that triggers a full recluster. Default: 0.3 (30%). */
62
62
  incrementalClusterThreshold: number;
63
+ /** Primary retrieval method. 'keyword' = FTS5 only, 'hybrid' = BM25+vector+RRF. Default: 'keyword'. */
64
+ retrievalPrimary: 'keyword' | 'vector' | 'hybrid';
65
+ /** Use vector search to enrich keyword results when primary is 'keyword'. Default: false. */
66
+ vectorEnrichment: boolean;
63
67
  /** Embedding model ID (from model registry). Default: 'jina-small'. */
64
68
  embeddingModel: string;
69
+ /** Embed chunks eagerly during ingestion. When false, chunks stored without vectors. Default: false. */
70
+ embeddingEager: boolean;
65
71
  /** Path to SQLite database file */
66
72
  dbPath: string;
67
73
  /** Path to LanceDB vector store directory */
68
74
  vectorStorePath: string;
75
+ /** Configuration for the semantic index layer */
76
+ semanticIndex: {
77
+ /** Enable index entry generation. Default: true. */
78
+ enabled: boolean;
79
+ /** Target description length in tokens. Default: 130. */
80
+ targetDescriptionTokens: number;
81
+ /** Max entries per maintenance backfill run. Default: 500. */
82
+ batchRefreshLimit: number;
83
+ /** Use index entries for search when available. Default: true. */
84
+ useForSearch: boolean;
85
+ };
86
+ /** Configuration for the structural repo map */
87
+ repomap: {
88
+ /** Enable repo map generation. Default: true. */
89
+ enabled: boolean;
90
+ /** Maximum tokens for the repo map output. Default: 1024. */
91
+ maxTokens: number;
92
+ /** Supported language extensions. Default: TS/JS only. */
93
+ languages: string[];
94
+ };
69
95
  }
70
96
  /**
71
97
  * Default configuration values.
@@ -1 +1 @@
1
- {"version":3,"file":"memory-config.d.ts","sourceRoot":"","sources":["../../src/config/memory-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IAGvB,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;IAGtB,gDAAgD;IAChD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAG7B,mDAAmD;IACnD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,sBAAsB,EAAE,MAAM,CAAC;IAG/B,oDAAoD;IACpD,YAAY,EAAE;QACZ,iCAAiC;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,uCAAuC;QACvC,YAAY,EAAE,MAAM,CAAC;QACrB,wCAAwC;QACxC,aAAa,EAAE,MAAM,CAAC;QACtB,wCAAwC;QACxC,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IAEF,2DAA2D;IAC3D,gBAAgB,EAAE;QAChB,kCAAkC;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,+BAA+B;QAC/B,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,+DAA+D;IAC/D,YAAY,EAAE;QACZ,2DAA2D;QAC3D,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IAEvB,yDAAyD;IACzD,OAAO,EAAE;QACP,sDAAsD;QACtD,WAAW,EAAE,MAAM,CAAC;QACpB,6DAA6D;QAC7D,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,yFAAyF;IACzF,aAAa,EAAE;QACb,2CAA2C;QAC3C,OAAO,EAAE,OAAO,CAAC;QACjB,kEAAkE;QAClE,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IAGF,8EAA8E;IAC9E,2BAA2B,EAAE,MAAM,CAAC;IAGpC,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAC;IAGvB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,YAqD5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CAE7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAuB7D"}
1
+ {"version":3,"file":"memory-config.d.ts","sourceRoot":"","sources":["../../src/config/memory-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IAGvB,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;IAGtB,gDAAgD;IAChD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAG7B,mDAAmD;IACnD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,sBAAsB,EAAE,MAAM,CAAC;IAG/B,oDAAoD;IACpD,YAAY,EAAE;QACZ,iCAAiC;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,uCAAuC;QACvC,YAAY,EAAE,MAAM,CAAC;QACrB,wCAAwC;QACxC,aAAa,EAAE,MAAM,CAAC;QACtB,wCAAwC;QACxC,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IAEF,2DAA2D;IAC3D,gBAAgB,EAAE;QAChB,kCAAkC;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,+BAA+B;QAC/B,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,+DAA+D;IAC/D,YAAY,EAAE;QACZ,2DAA2D;QAC3D,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAC;IAEvB,yDAAyD;IACzD,OAAO,EAAE;QACP,sDAAsD;QACtD,WAAW,EAAE,MAAM,CAAC;QACpB,6DAA6D;QAC7D,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,yFAAyF;IACzF,aAAa,EAAE;QACb,2CAA2C;QAC3C,OAAO,EAAE,OAAO,CAAC;QACjB,kEAAkE;QAClE,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IAGF,8EAA8E;IAC9E,2BAA2B,EAAE,MAAM,CAAC;IAGpC,uGAAuG;IACvG,gBAAgB,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClD,6FAA6F;IAC7F,gBAAgB,EAAE,OAAO,CAAC;IAG1B,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAC;IACvB,wGAAwG;IACxG,cAAc,EAAE,OAAO,CAAC;IAGxB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,eAAe,EAAE,MAAM,CAAC;IAGxB,iDAAiD;IACjD,aAAa,EAAE;QACb,oDAAoD;QACpD,OAAO,EAAE,OAAO,CAAC;QACjB,yDAAyD;QACzD,uBAAuB,EAAE,MAAM,CAAC;QAChC,8DAA8D;QAC9D,iBAAiB,EAAE,MAAM,CAAC;QAC1B,kEAAkE;QAClE,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IAGF,gDAAgD;IAChD,OAAO,EAAE;QACP,iDAAiD;QACjD,OAAO,EAAE,OAAO,CAAC;QACjB,6DAA6D;QAC7D,SAAS,EAAE,MAAM,CAAC;QAClB,0DAA0D;QAC1D,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,YA8E5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CAE7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAuB7D"}
@@ -46,11 +46,33 @@ export const DEFAULT_CONFIG = {
46
46
  },
47
47
  // Clustering (incremental)
48
48
  incrementalClusterThreshold: 0.3,
49
+ // Retrieval strategy
50
+ retrievalPrimary: 'keyword',
51
+ vectorEnrichment: false,
49
52
  // Embedding
50
53
  embeddingModel: 'jina-small',
54
+ embeddingEager: false,
51
55
  // Storage - defaults to ~/.causantic/
52
56
  dbPath: '~/.causantic/memory.db',
53
57
  vectorStorePath: '~/.causantic/vectors',
58
+ // Semantic index (opt-in — requires eager embedding)
59
+ semanticIndex: {
60
+ enabled: false,
61
+ targetDescriptionTokens: 130,
62
+ batchRefreshLimit: 500,
63
+ useForSearch: true,
64
+ },
65
+ // Repo map
66
+ repomap: {
67
+ enabled: true,
68
+ maxTokens: 1024,
69
+ languages: [
70
+ 'typescript', 'javascript', 'python', 'java', 'c', 'cpp',
71
+ 'rust', 'go', 'ruby', 'c-sharp', 'php', 'bash',
72
+ 'scala', 'kotlin', 'swift', 'haskell', 'lua', 'dart',
73
+ 'zig', 'elixir', 'perl', 'r',
74
+ ],
75
+ },
54
76
  };
55
77
  /**
56
78
  * Get configuration with overrides applied.
@@ -1 +1 @@
1
- {"version":3,"file":"memory-config.js","sourceRoot":"","sources":["../../src/config/memory-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyFH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,aAAa;IACb,gBAAgB,EAAE,GAAG;IACrB,cAAc,EAAE,CAAC;IAEjB,gBAAgB;IAChB,aAAa,EAAE,EAAE,EAAE,kCAAkC;IAErD,cAAc;IACd,oBAAoB,EAAE,GAAG;IACzB,oBAAoB,EAAE,KAAK;IAE3B,cAAc;IACd,mBAAmB,EAAE,yBAAyB;IAC9C,sBAAsB,EAAE,EAAE,EAAE,qCAAqC;IAEjE,gBAAgB;IAChB,YAAY,EAAE;QACZ,IAAI,EAAE,EAAE;QACR,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,kBAAkB,EAAE,EAAE;KACvB;IACD,gBAAgB,EAAE;QAChB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;KACf;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,GAAG;KACZ;IACD,qBAAqB;IACrB,cAAc,EAAE,GAAG;IAEnB,OAAO,EAAE;QACP,WAAW,EAAE,GAAG;QAChB,aAAa,EAAE,EAAE;KAClB;IAED,iBAAiB;IACjB,aAAa,EAAE;QACb,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,GAAG;KACrB;IAED,2BAA2B;IAC3B,2BAA2B,EAAE,GAAG;IAEhC,YAAY;IACZ,cAAc,EAAE,YAAY;IAE5B,sCAAsC;IACtC,MAAM,EAAE,wBAAwB;IAChC,eAAe,EAAE,sBAAsB;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,YAAmC,EAAE;IAC7D,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,SAAS,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,MAAM,CAAC,gBAAgB,IAAI,CAAC,IAAI,MAAM,CAAC,gBAAgB,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,MAAM,CAAC,oBAAoB,GAAG,GAAG,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,CAAC,oBAAoB,GAAG,GAAG,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,CAAC,sBAAsB,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"memory-config.js","sourceRoot":"","sources":["../../src/config/memory-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Embedding Model Comparison Benchmark
3
+ *
4
+ * Compares retrieval quality across different embedding models using the
5
+ * same set of queries and ground-truth chunks. Self-contained — does not
6
+ * require reindexing the vector store for each model.
7
+ *
8
+ * Steps:
9
+ * 1. Sample chunks across diverse clusters
10
+ * 2. Generate natural language search queries via LLM (done once)
11
+ * 3. For each model: embed all chunks + queries, compute cosine rankings
12
+ * 4. Compare recall@K, MRR, hit rate across models
13
+ *
14
+ * Usage:
15
+ * npx tsx src/eval/experiments/embedding-model-comparison/run-experiment.ts
16
+ * npx tsx src/eval/experiments/embedding-model-comparison/run-experiment.ts --sample-size=100
17
+ * npx tsx src/eval/experiments/embedding-model-comparison/run-experiment.ts --models=jina-small,nomic-v1.5,arctic-embed-m
18
+ */
19
+ export {};
20
+ //# sourceMappingURL=run-experiment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-experiment.d.ts","sourceRoot":"","sources":["../../../../src/eval/experiments/embedding-model-comparison/run-experiment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
@@ -0,0 +1,289 @@
1
+ /**
2
+ * Embedding Model Comparison Benchmark
3
+ *
4
+ * Compares retrieval quality across different embedding models using the
5
+ * same set of queries and ground-truth chunks. Self-contained — does not
6
+ * require reindexing the vector store for each model.
7
+ *
8
+ * Steps:
9
+ * 1. Sample chunks across diverse clusters
10
+ * 2. Generate natural language search queries via LLM (done once)
11
+ * 3. For each model: embed all chunks + queries, compute cosine rankings
12
+ * 4. Compare recall@K, MRR, hit rate across models
13
+ *
14
+ * Usage:
15
+ * npx tsx src/eval/experiments/embedding-model-comparison/run-experiment.ts
16
+ * npx tsx src/eval/experiments/embedding-model-comparison/run-experiment.ts --sample-size=100
17
+ * npx tsx src/eval/experiments/embedding-model-comparison/run-experiment.ts --models=jina-small,nomic-v1.5,arctic-embed-m
18
+ */
19
+ import { writeFileSync } from 'fs';
20
+ import { getDb } from '../../../storage/db.js';
21
+ import { getChunkById } from '../../../storage/chunk-store.js';
22
+ import { getAllClusters, getClusterChunkIds } from '../../../storage/cluster-store.js';
23
+ import { Embedder } from '../../../models/embedder.js';
24
+ import { getModel, getAllModelIds } from '../../../models/model-registry.js';
25
+ import { loadConfig, toRuntimeConfig } from '../../../config/loader.js';
26
+ import { generateSearchQueries } from '../index-vs-chunk/query-generator.js';
27
+ // ── Helpers ────────────────────────────────────────────────────────────────
28
+ function createRng(seed) {
29
+ let s = seed;
30
+ return () => {
31
+ s = (s * 1664525 + 1013904223) & 0x7fffffff;
32
+ return s / 0x7fffffff;
33
+ };
34
+ }
35
+ function cosineSimilarity(a, b) {
36
+ let dot = 0;
37
+ let normA = 0;
38
+ let normB = 0;
39
+ for (let i = 0; i < a.length; i++) {
40
+ dot += a[i] * b[i];
41
+ normA += a[i] * a[i];
42
+ normB += b[i] * b[i];
43
+ }
44
+ const denom = Math.sqrt(normA) * Math.sqrt(normB);
45
+ return denom > 0 ? dot / denom : 0;
46
+ }
47
+ function sampleChunks(sampleSize, seed) {
48
+ getDb();
49
+ const clusters = getAllClusters();
50
+ if (clusters.length === 0) {
51
+ throw new Error('No clusters found. Run clustering first.');
52
+ }
53
+ const rng = createRng(seed);
54
+ const result = [];
55
+ const shuffled = [...clusters].sort(() => rng() - 0.5);
56
+ for (const cluster of shuffled) {
57
+ if (result.length >= sampleSize)
58
+ break;
59
+ const chunkIds = getClusterChunkIds(cluster.id);
60
+ if (chunkIds.length < 2)
61
+ continue;
62
+ const numPicks = Math.min(2, Math.ceil(sampleSize / clusters.length), chunkIds.length);
63
+ const shuffledIds = [...chunkIds].sort(() => rng() - 0.5);
64
+ for (let i = 0; i < numPicks && result.length < sampleSize; i++) {
65
+ const chunk = getChunkById(shuffledIds[i]);
66
+ if (!chunk || chunk.content.length < 100)
67
+ continue;
68
+ result.push({
69
+ id: chunk.id,
70
+ sessionSlug: chunk.sessionSlug,
71
+ content: chunk.content,
72
+ clusterId: cluster.id,
73
+ clusterName: cluster.name,
74
+ });
75
+ }
76
+ }
77
+ return result;
78
+ }
79
+ function computeMetrics(ranks) {
80
+ const recallAtK = (k) => ranks.filter((r) => r > 0 && r <= k).length / ranks.length;
81
+ const mrr = ranks.filter((r) => r > 0).reduce((sum, r) => sum + 1 / r, 0) / ranks.length;
82
+ const hitRate = ranks.filter((r) => r > 0).length / ranks.length;
83
+ return {
84
+ recallAt1: recallAtK(1),
85
+ recallAt5: recallAtK(5),
86
+ recallAt10: recallAtK(10),
87
+ recallAt20: recallAtK(20),
88
+ mrr,
89
+ hitRate,
90
+ };
91
+ }
92
+ function fmt(n, d = 1) {
93
+ return n.toFixed(d);
94
+ }
95
+ // ── Main ───────────────────────────────────────────────────────────────────
96
+ async function runBenchmark() {
97
+ const args = process.argv.slice(2);
98
+ const sampleSizeArg = args.find((a) => a.startsWith('--sample-size='));
99
+ const sampleSize = sampleSizeArg ? parseInt(sampleSizeArg.split('=')[1], 10) : 100;
100
+ const modelsArg = args.find((a) => a.startsWith('--models='));
101
+ const modelIds = modelsArg
102
+ ? modelsArg.split('=')[1].split(',')
103
+ : ['jina-small', 'nomic-v1.5', 'arctic-embed-m'];
104
+ const seed = 42;
105
+ console.log('=== Embedding Model Comparison Benchmark ===\n');
106
+ console.log(`Models: ${modelIds.join(', ')}`);
107
+ // Validate model IDs
108
+ const allModels = getAllModelIds();
109
+ for (const id of modelIds) {
110
+ if (!allModels.includes(id)) {
111
+ console.error(`Unknown model: ${id}. Available: ${allModels.join(', ')}`);
112
+ process.exit(1);
113
+ }
114
+ }
115
+ const externalConfig = loadConfig();
116
+ const config = toRuntimeConfig(externalConfig);
117
+ // 1. Sample chunks
118
+ console.log(`\nSampling ${sampleSize} chunks across clusters...`);
119
+ const sampledChunks = sampleChunks(sampleSize, seed);
120
+ console.log(` Sampled ${sampledChunks.length} chunks from ${new Set(sampledChunks.map((c) => c.clusterId)).size} clusters`);
121
+ // 2. Generate search queries (once, model-independent)
122
+ console.log('\nGenerating natural language search queries via LLM...');
123
+ const queries = await generateSearchQueries(sampledChunks, config.clusterRefreshModel);
124
+ console.log(` Generated ${queries.length} queries (${sampledChunks.length - queries.length} failed)`);
125
+ if (queries.length === 0) {
126
+ console.error('No queries generated. Check API key.');
127
+ process.exit(1);
128
+ }
129
+ // Build ground truth chunk content map
130
+ const chunkContentMap = new Map();
131
+ for (const q of queries) {
132
+ const chunk = getChunkById(q.groundTruthChunkId);
133
+ if (chunk)
134
+ chunkContentMap.set(chunk.id, chunk.content);
135
+ }
136
+ // Also gather a corpus of distractor chunks for ranking
137
+ // Use all sampled chunks as the search corpus
138
+ for (const sc of sampledChunks) {
139
+ if (!chunkContentMap.has(sc.id)) {
140
+ chunkContentMap.set(sc.id, sc.content);
141
+ }
142
+ }
143
+ const corpusIds = [...chunkContentMap.keys()];
144
+ console.log(` Corpus size: ${corpusIds.length} chunks`);
145
+ // 3. Benchmark each model
146
+ const embedder = new Embedder();
147
+ const allModelMetrics = [];
148
+ const perQuery = queries.map((q) => ({
149
+ query: q.query,
150
+ groundTruthChunkId: q.groundTruthChunkId,
151
+ ranks: {},
152
+ }));
153
+ for (const modelId of modelIds) {
154
+ console.log(`\n── Model: ${modelId} ──`);
155
+ // Load model
156
+ const modelConfig = getModel(modelId);
157
+ const loadStats = await embedder.load(modelConfig);
158
+ console.log(` Loaded in ${fmt(loadStats.loadTimeMs, 0)}ms (${fmt(loadStats.heapUsedMB, 1)} MB heap)`);
159
+ console.log(` context: ${modelConfig.contextTokens} tokens, pooling: ${modelConfig.pooling}`);
160
+ // Truncate corpus to model's context window (~4 chars/token).
161
+ // This keeps memory bounded (avoids O(seq_len²) attention blowup)
162
+ // and ensures a fair comparison at each model's native capacity.
163
+ const maxChars = Math.min(modelConfig.contextTokens, 512) * 4;
164
+ const corpusTexts = corpusIds.map((id) => {
165
+ const text = chunkContentMap.get(id);
166
+ return text.length > maxChars ? text.slice(0, maxChars) : text;
167
+ });
168
+ // Embed corpus one-at-a-time to keep memory bounded
169
+ console.log(` Embedding ${corpusTexts.length} corpus chunks...`);
170
+ const corpusStart = performance.now();
171
+ const corpusEmbeddings = [];
172
+ for (let i = 0; i < corpusTexts.length; i++) {
173
+ if ((i + 1) % 25 === 0)
174
+ console.log(` Chunk ${i + 1}/${corpusTexts.length}`);
175
+ const result = await embedder.embed(corpusTexts[i], false);
176
+ corpusEmbeddings.push(result.embedding);
177
+ }
178
+ const corpusEmbedMs = performance.now() - corpusStart;
179
+ console.log(` Corpus embedded in ${fmt(corpusEmbedMs, 0)}ms (${fmt(corpusEmbedMs / corpusTexts.length, 1)}ms/chunk)`);
180
+ // Embed queries and rank
181
+ console.log(` Running ${queries.length} queries...`);
182
+ const queryStart = performance.now();
183
+ const ranks = [];
184
+ let totalEmbedMs = 0;
185
+ for (let i = 0; i < queries.length; i++) {
186
+ const q = queries[i];
187
+ if ((i + 1) % 50 === 0 || i === queries.length - 1) {
188
+ console.log(` Query ${i + 1}/${queries.length}`);
189
+ }
190
+ const embedResult = await embedder.embed(q.query, true);
191
+ totalEmbedMs += embedResult.inferenceMs;
192
+ // Rank all corpus chunks by cosine similarity
193
+ const similarities = corpusIds.map((id, j) => ({
194
+ id,
195
+ sim: cosineSimilarity(embedResult.embedding, corpusEmbeddings[j]),
196
+ }));
197
+ similarities.sort((a, b) => b.sim - a.sim);
198
+ const rank = similarities.findIndex((s) => s.id === q.groundTruthChunkId) + 1;
199
+ ranks.push(rank);
200
+ perQuery[i].ranks[modelId] = rank;
201
+ }
202
+ const queryMs = performance.now() - queryStart;
203
+ // Compute metrics
204
+ const metrics = computeMetrics(ranks);
205
+ const modelMetrics = {
206
+ modelId,
207
+ loadTimeMs: loadStats.loadTimeMs,
208
+ embedTimeMs: corpusEmbedMs + queryMs,
209
+ meanEmbedMs: totalEmbedMs / queries.length,
210
+ ...metrics,
211
+ };
212
+ allModelMetrics.push(modelMetrics);
213
+ console.log(` Recall@1: ${fmt(metrics.recallAt1 * 100)}% | Recall@5: ${fmt(metrics.recallAt5 * 100)}% | MRR: ${fmt(metrics.mrr, 3)} | Hit@20: ${fmt(metrics.hitRate * 100)}%`);
214
+ await embedder.dispose();
215
+ }
216
+ // 4. Display comparison
217
+ console.log('\n══ Results ══\n');
218
+ // Header
219
+ const colW = 14;
220
+ const metricCol = 16;
221
+ const header = 'Metric'.padEnd(metricCol) + modelIds.map((m) => m.padStart(colW)).join('');
222
+ console.log(` ${header}`);
223
+ console.log(` ${'─'.repeat(metricCol + modelIds.length * colW)}`);
224
+ const rows = [
225
+ ['Recall@1', (m) => `${fmt(m.recallAt1 * 100)}%`],
226
+ ['Recall@5', (m) => `${fmt(m.recallAt5 * 100)}%`],
227
+ ['Recall@10', (m) => `${fmt(m.recallAt10 * 100)}%`],
228
+ ['Recall@20', (m) => `${fmt(m.recallAt20 * 100)}%`],
229
+ ['MRR', (m) => fmt(m.mrr, 3)],
230
+ ['Hit Rate', (m) => `${fmt(m.hitRate * 100)}%`],
231
+ ['Load (ms)', (m) => fmt(m.loadTimeMs, 0)],
232
+ ['Embed (ms/q)', (m) => fmt(m.meanEmbedMs, 1)],
233
+ ];
234
+ for (const [label, fn] of rows) {
235
+ const values = allModelMetrics.map((m) => fn(m).padStart(colW)).join('');
236
+ console.log(` ${label.padEnd(metricCol)}${values}`);
237
+ }
238
+ // Head-to-head
239
+ const headToHead = {};
240
+ for (const a of modelIds) {
241
+ headToHead[a] = {};
242
+ for (const b of modelIds) {
243
+ if (a === b)
244
+ continue;
245
+ headToHead[a][b] = perQuery.filter((q) => {
246
+ const ra = q.ranks[a];
247
+ const rb = q.ranks[b];
248
+ return ra > 0 && (rb === 0 || ra < rb);
249
+ }).length;
250
+ }
251
+ }
252
+ console.log('\n Head-to-head wins:');
253
+ for (const a of modelIds) {
254
+ for (const b of modelIds) {
255
+ if (a >= b)
256
+ continue;
257
+ const aWins = headToHead[a][b];
258
+ const bWins = headToHead[b][a];
259
+ const ties = perQuery.filter((q) => q.ranks[a] > 0 && q.ranks[a] === q.ranks[b]).length;
260
+ const bothMiss = perQuery.filter((q) => q.ranks[a] === 0 && q.ranks[b] === 0).length;
261
+ console.log(` ${a} vs ${b}: ${aWins} / ${bWins} / ${ties} ties / ${bothMiss} both miss`);
262
+ }
263
+ }
264
+ // Best model summary
265
+ const best = [...allModelMetrics].sort((a, b) => b.mrr - a.mrr)[0];
266
+ console.log(`\n Best MRR: ${best.modelId} (${fmt(best.mrr, 3)})`);
267
+ const report = {
268
+ timestamp: new Date().toISOString(),
269
+ sampleSize,
270
+ queryCount: queries.length,
271
+ corpusSize: corpusIds.length,
272
+ models: allModelMetrics,
273
+ perQuery,
274
+ headToHead,
275
+ };
276
+ return report;
277
+ }
278
+ // ── CLI entrypoint ─────────────────────────────────────────────────────────
279
+ runBenchmark()
280
+ .then((report) => {
281
+ const outPath = 'embedding-model-comparison-report.json';
282
+ writeFileSync(outPath, JSON.stringify(report, null, 2));
283
+ console.log(`\nReport written to ${outPath}`);
284
+ })
285
+ .catch((err) => {
286
+ console.error('Benchmark failed:', err);
287
+ process.exit(1);
288
+ });
289
+ //# sourceMappingURL=run-experiment.js.map