CreaRack-SL

bib_eval_retrieval: Harness A/B de retrieval

Descripción

MCP tool que compara variantes de retrieval (baseline = chunks enteros vs trim = recortado a frases) sobre un golden set de preguntas. Aisla el retrieval (no llama LLM salvo synthesize=true) y devuelve métricas reproducibles.

Esquema MCP

name: bib_eval_retrieval
inputs:
  - questions?: string[]          # Golden set. Si faltan, usa ultimas 15 de oraculo_queries
  - variants?: ('baseline'|'trim')[]
  - top_k?: number (default 5, max 20)
  - trim_threshold?: number (default 0.38)
  - trim_window?: number (default 1)
  - synthesize?: boolean (default false) - Sintetiza respuesta por variante si true
  - source_type?: string
  - app?: string
output: {summary, results[]}

Output

{
  summary: {
    questions: 15,
    top_k: 5,
    trim_threshold: 0.38,
    trim_window: 1,
    avg_tokens_baseline: 650,
    avg_tokens_trim: 480,
    token_reduction_pct: 26,
    avg_overlap_vs_baseline: 0.82
  },
  results: [
    {
      question: "cómo funciona multi-tenancy",
      variants: {
        baseline: {
          chunk_ids: [12, 45, 67],
          top_score: 0.897,
          tokens: 720,
          tokens_before: 720
        },
        trim: {
          chunk_ids: [12, 45, 67],
          top_score: 0.897,
          tokens: 520,
          tokens_before: 720,
          overlap_vs_baseline: 1.0
        }
      }
    },
    ...
  ]
}

Golden set automático

Si no se pasan questions:

  1. Query oraculo_queries últimas 15 preguntas únicas.
  2. Filtrar por length > 8 (descartar ruido).

Métricas clave

MétricaFórmulaSignificado
token_reduction_pct(1 - trim_tokens / baseline_tokens) × 100Ahorro de tokens (%)
overlap_vs_baselineintersect(trim_ids, baseline_ids) / baseline_ids.lengthCoherencia de chunks (0-1)
avg_tokens_baseline/trimMedia de tokens por preguntaCosto real

Uso típico

# Medir baseline vs trim estándar
{"tool": "bib_eval_retrieval", "arguments": {}}

# Calibrar threshold sin redesploy
{"tool": "bib_eval_retrieval", "arguments": {
  "trim_threshold": 0.42,
  "trim_window": 2,
  "synthesize": false
}}

# Con sintetización (más caro)
{"tool": "bib_eval_retrieval", "arguments": {
  "synthesize": true,
  "top_k": 10
}}

Decisión de Fase 3

Datos para validar si small-to-big puro merece implementarse:

  1. Token reduction > 20%? (Línea: avg_tokens_trim).
  2. Overlap > 70%? (Conserva coherencia).
  3. Respuestas igual de buenas? (Si synthesize=true, revisar answers).

Si sí a 1-3 → proceder Fase 3.

Notas

  • Determinismo: Mismo golden set + threshold → mismo output.
  • Costo: ~5s para 15 preguntas (sin sintetización).
  • Golden set actualizado vivo: oraculo_queries crece con cada pregunta real → harness siempre con datos frescos.

Véase también

  • [[feature—biblioteca—arcrift-sentence-trimming]]
  • [[entity—functions—service—retrieve]]