Desarrollo de páginas web y software a medida en Ecuador

jivsoft@hotmail.com +593 97 876 6762
Publicado: /

RAG con feedback humano: mejora continua para tu asistente inteligente

Cierra el ciclo de calidad en tu RAG: captura feedback explícito/implícito, detecta causas raíz y aplica correcciones que mejoren recuperación, ranking, prompts y corpus. Incluye micro-workflow en n8n y tips para Laravel.

RAG con feedback humano: mejora continua para tu asistente inteligente

RAG con feedback humano: mejora continua para tu asistente inteligente

Tu asistente mejora cuando el usuario opina y tú actúas con método. Diseña un ciclo de feedback que corrija recuperación, ranking, prompts y el propio corpus.

En el post anterior vimos cómo contener alucinaciones. Hoy cerramos el círculo: feedback humano en RAG para identificar fallas y convertirlas en mejoras persistentes del sistema.

Qué feedback recoger (y cómo usarlo)

  • Explícito: 👍/👎, razón seleccionable (p. ej., “faltó evidencia”, “cita incorrecta”, “desactualizado”), edición de la respuesta, suggested answer.
  • Implícito: clic en documento, tiempo de lectura (dwell), scroll, abandono, reformulación de la misma pregunta.
  • Débil pero útil: escalado a humano, tickets creados, reintentos con más contexto.

Dónde aplicar las mejoras

  1. Recuperación: sinónimos y expansiones de consulta, filtros por metadatos, Top-K, reranking.
  2. Ranking: ajustar pesos (título > cuerpo), priorizar frescura o autoridad.
  3. Prompting: exigir citas, política de abstención y formato; añadir ejemplos few-shot con casos fallados.
  4. Chunking/ingesta: tamaños y solapes; títulos y anclas; división por secciones reales.
  5. Corpus: subir/actualizar documentos faltantes; retirar fuentes engañosas; normalizar versiones.

Diagnóstico de causa raíz (plantilla)

{
  "request_id": "uuid",
  "vote": "up|down",
  "reason": "missing_context|wrong_citation|hallucination|outdated|tone|format|latency",
  "signals": {"clicks":[{"docId":"...","dwell_ms":4200}], "reformulated": true},
  "gold_decision": "supported|insufficient|refuted|null",
  "action_suggested": ["add_doc","fix_chunking","expand_query","lower_topk","update_prompt"]
}

La clave es normalizar razones para generar acciones automáticas.

Micro-workflow en n8n: “Feedback → Mejora”

  1. Webhook → recibe {request_id, vote, reason, signals}.
  2. Function (triage) → mapea reason a acciones:
    • missing_contextexpand_query (sinónimos, HyDE), subir Top-K temporal.
    • wrong_citation → re-rank forzado por source=trusted; revisar fragmentos.
    • outdated → crear tarea “actualizar doc” y marcar colección para reindex.
    • hallucination → reforzar abstención y exigir citas.
  3. HTTP/DB → registra feedback y enlaza a request_id, usuario y versión de pipeline.
  4. Branch:
    • Si expand_query → vuelve a ejecutar RAG con expansión + rerank y guarda el delta de calidad.
    • Si add_doc → crea ticket en backlog “corpus” (con URL/fuente sugerida).
    • Si update_prompt → abre PR de plantilla (A/B listo).
  5. Notifier → avisa al owner del corpus cuando haya ≥N votos negativos sobre el mismo tema.
  6. Database → agrega métricas: win-rate post-corrección, groundedness y costo.

Métricas de mejora continua

  • Acceptance rate (👍 / total) y su evolución por tema.
  • Groundedness (% de hechos con cita válida) y Recall@K post-expand_query.
  • Time-to-fix (de feedback a corrección efectiva).
  • Click-through a documentos citados y dwell medio.
  • Coste/latencia del pipeline con y sin correcciones automáticas.

A/B de correcciones

No “confíes” en tu cambio: pruébalo. Mantén dos variantes (pipeline.vN vs pipeline.vN+1) y mide: aceptación, groundedness, costo y p95. Promociona solo si mejora sin romper seguridad.

Anti-patrones

  • Feedback libre no estructurado (texto suelto) → difícil de accionar. Usa razones normalizadas.
  • Sobreajuste a casos raros → exige N ejemplos antes de cambiar el prompt o el corpus.
  • Reintentos ciegos → reintenta con differences concretas (qué falló) o abstente.
  • Sin versión de pipeline → imposible saber qué cambio ayudó o dañó.

Tips para Laravel/PHP

  • Esquema:
    feedback(id, request_id, user_id, vote, reason, meta_json, created_at)
    pipeline_versions(id, name, rag_index_v, embedder_v, prompt_v, chunker_v, created_at)
  • Endpoints: POST /feedback (rate limit + auth), GET /feedback/stats (por tema/colección).
  • Jobs: RetryRAG (con expansión), ReindexCollection, UpdatePromptVariant.
  • Política de datos: anonimiza PII, guarda solo metadatos y docId/URL pública.
  • Observabilidad: añade request_id y pipeline_version a cada traza/registro.

Conclusión

El feedback humano convierte un RAG “reactivo” en un sistema que aprende de sus errores. Con razones normalizadas, acciones automáticas y A/B disciplinado, tu asistente mejorará semana a semana.

  • RAG
  • Feedback
  • Groundedness
  • n8n
  • Laravel