Volver a la wiki

ArcRift cherry-pick #1: sentence-trimming opcional + harness A/B en retrieval

Resumen

Se integra sentence-trimming opcional en el pipeline de retrieval de la Biblioteca (archivo-core.ts + archivo.ts + oraculo/ask.ts) para reducir ruido y consumo de tokens en el contexto del LLM. La feature es OFF por defecto — no altera el comportamiento en PROD hasta validar con el harness A/B.

Commits: ArcRift cherry-pick #1, ref aa855a6.

Cambios principales

1. Nuevas funciones de procesamiento (archivo-core.ts)

splitSentences(text: string): string[]

Fuente: functions/api/mcp/handlers/archivo-core.ts:440–510.

trimChunksBySentence(ai, queryVec, chunks, opts): Promise<ChunkMatch[]>

Fuente: functions/api/mcp/handlers/archivo-core.ts:550–610.

retrieve(env, queryVec, topK, opts, filters): Promise<RetrievalResult>

Fuente: functions/api/mcp/handlers/archivo-core.ts:620–650.

2. Toggle en bib_ask (Workers)

Fuente: functions/api/mcp/handlers/archivo.ts:191–202.

3. Toggle en Oraculo (ask.ts)

Fuente: functions/api/oraculo/ask.ts:138–149.

4. Nueva tool MCP: bib_eval_retrieval

Harness A/B reproducible para validar trimming sin redeploy.

Parámetros:

Salida:

{
  "summary": {
    "questions": 15,
    "top_k": 5,
    "trim_threshold": 0.38,
    "trim_window": 1,
    "avg_tokens_baseline": 156,
    "avg_tokens_trim": 89,
    "token_reduction_pct": 43,
    "avg_overlap_vs_baseline": 0.92
  },
  "results": [
    {
      "question": "¿Cómo configuro...?",
      "variants": {
        "baseline": {
          "chunk_ids": [1, 2, 3],
          "top_score": 0.845,
          "tokens": 180,
          "tokens_before": 200
        },
        "trim": {
          "chunk_ids": [1, 2],
          "top_score": 0.845,
          "tokens": 95,
          "tokens_before": 200,
          "overlap_vs_baseline": 0.67,
          "answer": "..."
        }
      }
    }
  ]
}

Fuente: functions/api/mcp/handlers/archivo.ts:467–574 + functions/api/mcp/tools.ts:999–1015.

5. Flags de entorno (functions/types.ts)

RETRIEVAL_TRIM?: string;              // '1' → activa trimming
RETRIEVAL_TRIM_THRESHOLD?: string;    // default '0.38'

Impacto en producción

Calibración sin redeploy

El harness bib_eval_retrieval permite ajustar trim_threshold y trim_window sin redeploy:

bib_eval_retrieval(
  questions: ["¿Multi-tenancy?", "¿RLS?"],
  trim_threshold: 0.42,
  trim_window: 2,
  synthesize: false
)

Lanzar múltiples runs con diferentes parámetros para hallar el óptimo (máx reducción de tokens, mín overlap loss). Una vez validado → actualizar env vars en Prod.

Véase también

Subir