@absolutejs/absolute 0.19.0-beta.552 → 0.19.0-beta.554

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.
@@ -335,10 +335,12 @@ export type RAGQueryResult = {
335
335
  };
336
336
  export type RAGHybridRetrievalMode = 'vector' | 'lexical' | 'hybrid';
337
337
  export type RAGHybridFusionMode = 'rrf' | 'max';
338
+ export type RAGSourceBalanceStrategy = 'cap' | 'round_robin';
338
339
  export type RAGHybridSearchOptions = {
339
340
  mode?: RAGHybridRetrievalMode;
340
341
  lexicalTopK?: number;
341
342
  maxResultsPerSource?: number;
343
+ sourceBalanceStrategy?: RAGSourceBalanceStrategy;
342
344
  fusion?: RAGHybridFusionMode;
343
345
  fusionConstant?: number;
344
346
  lexicalWeight?: number;
@@ -497,6 +499,7 @@ export type RAGRetrievalTrace = {
497
499
  candidateTopK: number;
498
500
  lexicalTopK: number;
499
501
  maxResultsPerSource?: number;
502
+ sourceBalanceStrategy?: RAGSourceBalanceStrategy;
500
503
  mode: RAGHybridRetrievalMode;
501
504
  runVector: boolean;
502
505
  runLexical: boolean;
@@ -1244,8 +1247,11 @@ export type RAGEvaluationRunDiff = {
1244
1247
  };
1245
1248
  traceSummaryDelta?: {
1246
1249
  modesChanged: boolean;
1250
+ sourceBalanceStrategiesChanged: boolean;
1247
1251
  vectorCases: number;
1248
1252
  lexicalCases: number;
1253
+ balancedCases: number;
1254
+ roundRobinCases: number;
1249
1255
  transformedCases: number;
1250
1256
  variantCases: number;
1251
1257
  averageFinalCount: number;
@@ -1263,6 +1269,8 @@ export type RAGEvaluationCaseTraceSnapshot = {
1263
1269
  status: RAGEvaluationCaseResult['status'];
1264
1270
  traceMode?: RAGHybridRetrievalMode;
1265
1271
  previousTraceMode?: RAGHybridRetrievalMode;
1272
+ sourceBalanceStrategy?: RAGSourceBalanceStrategy;
1273
+ previousSourceBalanceStrategy?: RAGSourceBalanceStrategy;
1266
1274
  transformedQuery?: string;
1267
1275
  previousTransformedQuery?: string;
1268
1276
  variantQueries: string[];
@@ -1424,8 +1432,11 @@ export type RAGRerankerCandidate = {
1424
1432
  export type RAGRetrievalTraceComparisonSummary = {
1425
1433
  totalCases: number;
1426
1434
  modes: RAGHybridRetrievalMode[];
1435
+ sourceBalanceStrategies: RAGSourceBalanceStrategy[];
1427
1436
  vectorCases: number;
1428
1437
  lexicalCases: number;
1438
+ balancedCases: number;
1439
+ roundRobinCases: number;
1429
1440
  transformedCases: number;
1430
1441
  variantCases: number;
1431
1442
  averageFinalCount: number;
@@ -2206,8 +2206,11 @@ var summarizeRetrievalTraces = (traces) => {
2206
2206
  }
2207
2207
  const totalCases = traces.length;
2208
2208
  const modeSet = new Set;
2209
+ const sourceBalanceStrategySet = new Set;
2209
2210
  let vectorCases = 0;
2210
2211
  let lexicalCases = 0;
2212
+ let balancedCases = 0;
2213
+ let roundRobinCases = 0;
2211
2214
  let transformedCases = 0;
2212
2215
  let variantCases = 0;
2213
2216
  let finalCountSum = 0;
@@ -2217,12 +2220,19 @@ var summarizeRetrievalTraces = (traces) => {
2217
2220
  let lexicalTopKSum = 0;
2218
2221
  for (const trace of traces) {
2219
2222
  modeSet.add(trace.mode);
2223
+ sourceBalanceStrategySet.add(trace.sourceBalanceStrategy ?? "cap");
2220
2224
  if (trace.runVector) {
2221
2225
  vectorCases += 1;
2222
2226
  }
2223
2227
  if (trace.runLexical) {
2224
2228
  lexicalCases += 1;
2225
2229
  }
2230
+ if (typeof trace.maxResultsPerSource === "number") {
2231
+ balancedCases += 1;
2232
+ if (trace.sourceBalanceStrategy === "round_robin") {
2233
+ roundRobinCases += 1;
2234
+ }
2235
+ }
2226
2236
  if (trace.transformedQuery !== trace.query) {
2227
2237
  transformedCases += 1;
2228
2238
  }
@@ -2240,9 +2250,12 @@ var summarizeRetrievalTraces = (traces) => {
2240
2250
  averageFinalCount: roundTraceAverage(finalCountSum, totalCases),
2241
2251
  averageLexicalCount: roundTraceAverage(lexicalCountSum, totalCases),
2242
2252
  averageLexicalTopK: roundTraceAverage(lexicalTopKSum, totalCases),
2253
+ balancedCases,
2243
2254
  averageVectorCount: roundTraceAverage(vectorCountSum, totalCases),
2244
2255
  lexicalCases,
2245
2256
  modes: Array.from(modeSet),
2257
+ roundRobinCases,
2258
+ sourceBalanceStrategies: Array.from(sourceBalanceStrategySet),
2246
2259
  stageCounts: buildTraceStageCounts(traces),
2247
2260
  totalCases,
2248
2261
  transformedCases,
@@ -2578,7 +2591,7 @@ var buildEvaluationCaseTraceSnapshot = ({
2578
2591
  }) => {
2579
2592
  const stageCounts = currentTrace ? buildTraceStageCounts([currentTrace]) : {};
2580
2593
  const previousStageCounts = previousTrace?.stageCounts ?? {};
2581
- const traceChange = !previousTrace ? currentTrace ? "new" : "unchanged" : previousTrace.traceMode !== currentTrace?.mode || previousTrace.transformedQuery !== (currentTrace?.transformedQuery || undefined) || previousTrace.variantQueries.join("|") !== (currentTrace?.variantQueries ?? []).join("|") || previousTrace.finalCount !== (currentTrace?.resultCounts.final ?? 0) || previousTrace.vectorCount !== (currentTrace?.resultCounts.vector ?? 0) || previousTrace.lexicalCount !== (currentTrace?.resultCounts.lexical ?? 0) || previousTrace.candidateTopK !== (currentTrace?.candidateTopK ?? 0) || previousTrace.lexicalTopK !== (currentTrace?.lexicalTopK ?? 0) || !areStageCountsEqual(previousStageCounts, stageCounts) ? "changed" : "unchanged";
2594
+ const traceChange = !previousTrace ? currentTrace ? "new" : "unchanged" : previousTrace.traceMode !== currentTrace?.mode || previousTrace.sourceBalanceStrategy !== currentTrace?.sourceBalanceStrategy || previousTrace.transformedQuery !== (currentTrace?.transformedQuery || undefined) || previousTrace.variantQueries.join("|") !== (currentTrace?.variantQueries ?? []).join("|") || previousTrace.finalCount !== (currentTrace?.resultCounts.final ?? 0) || previousTrace.vectorCount !== (currentTrace?.resultCounts.vector ?? 0) || previousTrace.lexicalCount !== (currentTrace?.resultCounts.lexical ?? 0) || previousTrace.candidateTopK !== (currentTrace?.candidateTopK ?? 0) || previousTrace.lexicalTopK !== (currentTrace?.lexicalTopK ?? 0) || !areStageCountsEqual(previousStageCounts, stageCounts) ? "changed" : "unchanged";
2582
2595
  return {
2583
2596
  candidateTopK: currentTrace?.candidateTopK ?? 0,
2584
2597
  caseId: caseResult.caseId,
@@ -2590,6 +2603,7 @@ var buildEvaluationCaseTraceSnapshot = ({
2590
2603
  previousFinalCount: previousTrace?.finalCount,
2591
2604
  previousLexicalCount: previousTrace?.lexicalCount,
2592
2605
  previousLexicalTopK: previousTrace?.lexicalTopK,
2606
+ previousSourceBalanceStrategy: previousTrace?.sourceBalanceStrategy,
2593
2607
  previousStageCounts,
2594
2608
  previousTraceMode: previousTrace?.traceMode,
2595
2609
  previousTransformedQuery: previousTrace?.transformedQuery,
@@ -2598,6 +2612,7 @@ var buildEvaluationCaseTraceSnapshot = ({
2598
2612
  query: caseResult.query,
2599
2613
  stageCounts,
2600
2614
  status: caseResult.status,
2615
+ sourceBalanceStrategy: currentTrace?.sourceBalanceStrategy,
2601
2616
  traceChange,
2602
2617
  traceMode: currentTrace?.mode,
2603
2618
  transformedQuery: currentTrace?.transformedQuery || undefined,
@@ -2642,6 +2657,7 @@ var buildEvaluationCaseTraceSnapshots = ({
2642
2657
  },
2643
2658
  runLexical: currentSnapshot.lexicalCount > 0,
2644
2659
  runVector: currentSnapshot.vectorCount > 0,
2660
+ sourceBalanceStrategy: currentSnapshot.sourceBalanceStrategy ?? "cap",
2645
2661
  steps: [],
2646
2662
  topK: caseResult.topK,
2647
2663
  transformedQuery: currentSnapshot.transformedQuery ?? caseResult.query,
@@ -2672,6 +2688,7 @@ var formatRetrievalComparisonHeadline = (entry) => [
2672
2688
  `latency ${entry.response.summary.averageLatencyMs.toFixed(1)}ms`
2673
2689
  ].join(" \xB7 ");
2674
2690
  var formatTraceModes = (modes) => modes.length > 0 ? modes.join(" / ") : "n/a";
2691
+ var formatSourceBalanceStrategies = (strategies) => strategies.length > 0 ? strategies.join(" / ") : "n/a";
2675
2692
  var formatTraceStageSummary = (stageCounts) => {
2676
2693
  const topStages = Object.entries(stageCounts).sort((left, right) => right[1] - left[1]).slice(0, 3);
2677
2694
  return topStages.length > 0 ? topStages.map(([stage, count]) => `${stage} ${count}`).join(" \xB7 ") : "n/a";
@@ -2707,9 +2724,21 @@ var buildRAGComparisonTraceSummaryRows = (entry) => {
2707
2724
  }
2708
2725
  return [
2709
2726
  { label: "Modes", value: formatTraceModes(trace.modes) },
2727
+ {
2728
+ label: "Balance",
2729
+ value: formatSourceBalanceStrategies(trace.sourceBalanceStrategies)
2730
+ },
2710
2731
  { label: "Avg final", value: trace.averageFinalCount.toFixed(1) },
2711
2732
  { label: "Avg vector", value: trace.averageVectorCount.toFixed(1) },
2712
2733
  { label: "Avg lexical", value: trace.averageLexicalCount.toFixed(1) },
2734
+ {
2735
+ label: "Balanced",
2736
+ value: formatTraceRatio(trace.balancedCases, trace.totalCases)
2737
+ },
2738
+ {
2739
+ label: "Round robin",
2740
+ value: formatTraceRatio(trace.roundRobinCases, trace.totalCases)
2741
+ },
2713
2742
  {
2714
2743
  label: "Transforms",
2715
2744
  value: formatTraceRatio(trace.transformedCases, trace.totalCases)
@@ -2757,6 +2786,12 @@ var buildRAGComparisonTraceDiffRows = (entry, leader) => {
2757
2786
  value: `${formatTraceModes(trace.modes)} vs ${formatTraceModes(leaderTrace.modes)}`
2758
2787
  });
2759
2788
  }
2789
+ if (formatSourceBalanceStrategies(trace.sourceBalanceStrategies) !== formatSourceBalanceStrategies(leaderTrace.sourceBalanceStrategies)) {
2790
+ rows.push({
2791
+ label: "Balance vs leader",
2792
+ value: `${formatSourceBalanceStrategies(trace.sourceBalanceStrategies)} vs ${formatSourceBalanceStrategies(leaderTrace.sourceBalanceStrategies)}`
2793
+ });
2794
+ }
2760
2795
  rows.push({
2761
2796
  label: "Final delta",
2762
2797
  value: formatSignedDelta(trace.averageFinalCount - leaderTrace.averageFinalCount, 1)
@@ -2769,6 +2804,12 @@ var buildRAGComparisonTraceDiffRows = (entry, leader) => {
2769
2804
  }, {
2770
2805
  label: "Transform delta",
2771
2806
  value: formatTraceCountDelta(trace.transformedCases - leaderTrace.transformedCases)
2807
+ }, {
2808
+ label: "Balanced delta",
2809
+ value: formatTraceCountDelta(trace.balancedCases - leaderTrace.balancedCases)
2810
+ }, {
2811
+ label: "Round robin delta",
2812
+ value: formatTraceCountDelta(trace.roundRobinCases - leaderTrace.roundRobinCases)
2772
2813
  });
2773
2814
  if (stageDelta) {
2774
2815
  rows.push({ label: "Stage delta", value: stageDelta });
@@ -2932,7 +2973,7 @@ var buildRAGEvaluationHistoryRows = (history) => {
2932
2973
  if (history.latestRun.traceSummary) {
2933
2974
  rows.push({
2934
2975
  label: "Latest trace",
2935
- value: `${formatTraceModes(history.latestRun.traceSummary.modes)} \xB7 final ${history.latestRun.traceSummary.averageFinalCount.toFixed(1)} \xB7 vector ${history.latestRun.traceSummary.averageVectorCount.toFixed(1)} \xB7 lexical ${history.latestRun.traceSummary.averageLexicalCount.toFixed(1)}`
2976
+ value: `${formatTraceModes(history.latestRun.traceSummary.modes)} \xB7 balance ${formatSourceBalanceStrategies(history.latestRun.traceSummary.sourceBalanceStrategies)} \xB7 final ${history.latestRun.traceSummary.averageFinalCount.toFixed(1)} \xB7 vector ${history.latestRun.traceSummary.averageVectorCount.toFixed(1)} \xB7 lexical ${history.latestRun.traceSummary.averageLexicalCount.toFixed(1)}`
2936
2977
  });
2937
2978
  }
2938
2979
  if (history.previousRun) {
@@ -2968,6 +3009,9 @@ var buildRAGEvaluationHistoryRows = (history) => {
2968
3009
  rows.push({
2969
3010
  label: "Trace mode shift",
2970
3011
  value: history.diff.traceSummaryDelta.modesChanged ? "changed" : "stable"
3012
+ }, {
3013
+ label: "Trace balance shift",
3014
+ value: history.diff.traceSummaryDelta.sourceBalanceStrategiesChanged ? "changed" : "stable"
2971
3015
  }, {
2972
3016
  label: "Trace final delta",
2973
3017
  value: formatSignedDelta(history.diff.traceSummaryDelta.averageFinalCount, 1)
@@ -2977,6 +3021,12 @@ var buildRAGEvaluationHistoryRows = (history) => {
2977
3021
  }, {
2978
3022
  label: "Trace lexical delta",
2979
3023
  value: formatSignedDelta(history.diff.traceSummaryDelta.averageLexicalCount, 1)
3024
+ }, {
3025
+ label: "Trace balanced delta",
3026
+ value: formatTraceCountDelta(history.diff.traceSummaryDelta.balancedCases)
3027
+ }, {
3028
+ label: "Trace round robin delta",
3029
+ value: formatTraceCountDelta(history.diff.traceSummaryDelta.roundRobinCases)
2980
3030
  }, {
2981
3031
  label: "Trace transform delta",
2982
3032
  value: formatTraceCountDelta(history.diff.traceSummaryDelta.transformedCases)
@@ -3006,6 +3056,8 @@ var buildRAGEvaluationCaseTracePresentations = (history) => {
3006
3056
  const label = entry.label ?? entry.caseId;
3007
3057
  const currentMode = entry.traceMode ?? "no-trace";
3008
3058
  const previousMode = entry.previousTraceMode ?? "n/a";
3059
+ const currentBalance = entry.sourceBalanceStrategy ?? "cap";
3060
+ const previousBalance = entry.previousSourceBalanceStrategy ?? "n/a";
3009
3061
  const currentVariants = entry.variantQueries.length > 0 ? entry.variantQueries.join(", ") : "none";
3010
3062
  const previousVariants = entry.previousVariantQueries.length > 0 ? entry.previousVariantQueries.join(", ") : "none";
3011
3063
  const currentStages = Object.keys(entry.stageCounts).length > 0 ? Object.entries(entry.stageCounts).map(([stage, count]) => `${stage} ${count}`).join(", ") : "none";
@@ -3013,12 +3065,16 @@ var buildRAGEvaluationCaseTracePresentations = (history) => {
3013
3065
  return {
3014
3066
  caseId: entry.caseId,
3015
3067
  label,
3016
- summary: `${entry.traceChange} \xB7 ${previousMode}\u2192${currentMode} \xB7 final ${entry.previousFinalCount ?? 0}\u2192${entry.finalCount}`,
3068
+ summary: `${entry.traceChange} \xB7 ${previousMode}\u2192${currentMode} \xB7 ${previousBalance}\u2192${currentBalance} \xB7 final ${entry.previousFinalCount ?? 0}\u2192${entry.finalCount}`,
3017
3069
  traceChange: entry.traceChange,
3018
3070
  rows: [
3019
3071
  { label: "Query", value: entry.query },
3020
3072
  { label: "Trace change", value: entry.traceChange },
3021
3073
  { label: "Mode", value: `${previousMode}\u2192${currentMode}` },
3074
+ {
3075
+ label: "Balance",
3076
+ value: `${previousBalance}\u2192${currentBalance}`
3077
+ },
3022
3078
  {
3023
3079
  label: "Transformed query",
3024
3080
  value: `${entry.previousTransformedQuery?.trim() || "n/a"}\u2192${entry.transformedQuery?.trim() || "n/a"}`
@@ -3090,12 +3146,15 @@ var buildRAGEvaluationRunDiff = ({
3090
3146
  averageLexicalCount: (current.traceSummary?.averageLexicalCount ?? 0) - (previous?.traceSummary?.averageLexicalCount ?? 0),
3091
3147
  averageLexicalTopK: (current.traceSummary?.averageLexicalTopK ?? 0) - (previous?.traceSummary?.averageLexicalTopK ?? 0),
3092
3148
  averageVectorCount: (current.traceSummary?.averageVectorCount ?? 0) - (previous?.traceSummary?.averageVectorCount ?? 0),
3149
+ balancedCases: (current.traceSummary?.balancedCases ?? 0) - (previous?.traceSummary?.balancedCases ?? 0),
3093
3150
  lexicalCases: (current.traceSummary?.lexicalCases ?? 0) - (previous?.traceSummary?.lexicalCases ?? 0),
3094
3151
  modesChanged: (current.traceSummary?.modes ?? []).join("|") !== (previous?.traceSummary?.modes ?? []).join("|"),
3152
+ roundRobinCases: (current.traceSummary?.roundRobinCases ?? 0) - (previous?.traceSummary?.roundRobinCases ?? 0),
3095
3153
  stageCounts: diffTraceStageCounts({
3096
3154
  current: current.traceSummary?.stageCounts ?? {},
3097
3155
  previous: previous?.traceSummary?.stageCounts ?? {}
3098
3156
  }),
3157
+ sourceBalanceStrategiesChanged: (current.traceSummary?.sourceBalanceStrategies ?? []).join("|") !== (previous?.traceSummary?.sourceBalanceStrategies ?? []).join("|"),
3099
3158
  transformedCases: (current.traceSummary?.transformedCases ?? 0) - (previous?.traceSummary?.transformedCases ?? 0),
3100
3159
  variantCases: (current.traceSummary?.variantCases ?? 0) - (previous?.traceSummary?.variantCases ?? 0),
3101
3160
  vectorCases: (current.traceSummary?.vectorCases ?? 0) - (previous?.traceSummary?.vectorCases ?? 0)
@@ -4475,5 +4534,5 @@ export {
4475
4534
  AIStreamKey
4476
4535
  };
4477
4536
 
4478
- //# debugId=BCFCEA2080243A1864756E2164756E21
4537
+ //# debugId=5E360CD51068D3C964756E2164756E21
4479
4538
  //# sourceMappingURL=index.js.map