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

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

Cómo detectar y manejar alucinaciones en modelos de lenguaje

Señales, pruebas y estrategias para detectar y reducir alucinaciones: chequeo con evidencia (RAG), consistencia, verificación externa, abstención controlada y un “modo seguro”. Incluye micro-workflow en n8n y tips para Laravel.

Cómo detectar y manejar alucinaciones en modelos de lenguaje

Cómo detectar y manejar alucinaciones en modelos de lenguaje

Las alucinaciones son respuestas convincentes pero incorrectas o no sustentadas. No basta con “modelos mejores”: necesitas detección, métricas y un plan de contención.

En el post anterior construimos guardrails de salida. Hoy diseñamos una línea anti-alucinación que detecta y mitiga errores factuales en asistentes con o sin RAG.

Taxonomía rápida de alucinaciones

  • Fabricación: inventa hechos, citas o APIs.
  • Desfase temporal: afirma como vigente algo obsoleto.
  • Desajuste numérico: cifras/fechas que no cuadran con la evidencia.
  • Misatribución: cita la fuente errónea o mezcla autor/obra.
  • Razonamiento roto: pasos lógicos incorrectos o conclusiones no implicadas.

Cómo detectarlas (señales y pruebas)

  1. Grounding check (RAG): cada afirmación clave debe estar respaldada por un fragmento del contexto. Si no, marca “no sustentada”.
  2. Consistencia interna: verifica que números, entidades y fechas se usen de forma coherente a lo largo de la respuesta.
  3. Desacuerdo con evidencia: ejecuta una verificación breve por criterio (¿la frase está soportada, contradice o es insuficiente?).
  4. Autocomprobación: pide al modelo una revisión breve contra reglas (“no inventes, cita, abstente si falta evidencia”) y compara versiones (self-consistency).
  5. Verificación externa (cuando procede): consulta una fuente confiable (API/DB corporativa) para campos sensibles (precios, existencias, políticas).
  6. Señales de forma: ausencia de citas cuando son obligatorias, JSON inválido, lenguaje excesivamente especulativo sin disclaimers.

Métricas que importan

  • Groundedness: % de frases respaldadas por evidencia citada.
  • Tasa de abstención sana: % de “no sé” cuando falta evidencia.
  • Hallucination rate: % de respuestas con al menos una afirmación no sustentada.
  • Correcciones: % de respuestas arregladas por el revisor/guardrail.
  • Coste/latencia del pipeline con y sin verificaciones.

Estrategias de mitigación

  • Abstención explícita: “No lo sé con la evidencia actual.” cuando el recall es bajo o no hay citas.
  • RAG disciplinado: buen chunking, filtros por metadatos, Top-K prudente, y prompts que exijan citas.
  • Contratos de salida (JSON/tabla) para validar estructura y detectar extravíos.
  • Revisor breve (LLM “juez” con rúbrica) para marcar no sustentadas y sugerir correcciones mínimas.
  • Campos críticos por reglas: fechas, importes, IDs → valida con regex/formatos o APIs de verdad.
  • Plantillas de “modo seguro”: si la verificación falla, devuelve una versión neutra y pedirá más datos.

Plantillas útiles

1) Respuesta con citas obligatorias

Reglas:
- Usa solo el CONTEXTO proporcionado; si falta, abstente.
- Cita fuente y URL/título por cada hecho clave.
Salida:
{"answer":"...","citations":[{"title":"...","url":"..."}]}

2) Verificador factual (rúbrica breve)

Rol: Verificador.
Para cada afirmación clave, etiqueta: "soportada", "contradice", "insuficiente".
Devuelve:
{"claims":[{"text":"...","status":"supported|refuted|insufficient","evidence":["..."]}],
 "is_safe": true|false}

3) Safe answer (fallback)

{"answer":"No tengo evidencia suficiente para confirmar ese dato. ¿Puedes compartir la fuente o más contexto?","citations":[]}

Micro-workflow en n8n: “Centinela de alucinaciones”

  1. Webhook → recibe {query, contextDocs[]}.
  2. LLM (respuesta) → responde con citas obligatorias.
  3. LLM (verificador) → evalúa afirmaciones contra contextDocs (supported/refuted/insufficient).
  4. IF → si is_safe=false o hay “insufficient/refuted” → activar safe answer o pedir aclaración.
  5. Database → registra groundedness, tasa de abstención, costo y p95.
  6. Notifier → alerta si el hallucination rate supera umbral.

Tips para Laravel/PHP

  • Valida estructura con json_validate() (PHP ≥8.3) y reglas de Validator para campos críticos.
  • Guarda trazas por request_id: contexto usado, citas, veredicto del verificador, decisión final.
  • Endpoint de verificación: POST /verify que reciba {answer, context[]} y devuelva veredicto y reason codes.
  • Métrica hallucination_rate diaria por tenant/modelo; umbral → activar “modo seguro” por defecto.

Errores comunes (y cómo evitarlos)

  • Responder sin contexto suficiente → exige abstención.
  • RAG sin filtros → ruido en Top-K; usa metadatos y colecciones permitidas.
  • Sin verificador → alucinaciones sutiles pasan a producción.
  • Medir solo “gusto” → usa groundedness, tasa de abstención y veredicto factual.

Conclusión

Las alucinaciones no se “eliminan”, se gestionan: detección automática, abstención honesta, verificación de hechos y un fallback seguro. Con eso, tu asistente será confiable incluso cuando el modelo falle.

  • Alucinaciones
  • RAG
  • Verificación
  • n8n
  • Laravel