Yeda AI Tips · #129

English

Pon un puntaje de confianza entre el regex y el LLM

La capa secreta entre el regex y tu LLM es un puntaje de confianza. La mayoría de los equipos que construyen pipelines de extracción eligen un bando: regex puro (rápido, frágil) o LLM puro (flexible, lento, cobrado por token). Los equipos que logran sistemas baratos y precisos no eligen: ponen un puntuador en el medio y dejan que cada ítem elija su propio camino.

Por qué una capa intermedia

En pipelines sobre texto estructurado o semiestructurado — facturas, líneas de log, títulos de productos, campos de formularios — un parser determinístico bien ajustado suele resolver la gran mayoría de las entradas, a menudo más del 95%, con costo marginal prácticamente cero y latencia de submilisegundos. Una llamada al LLM por el mismo ítem cuesta dinero real y de cientos de milisegundos a segundos.

Mandar todo al modelo significa pagar precio de modelo por trabajo que un regex ya hace. No mandar nada significa parsear mal, en silencio, ese 2–5% raro. La solución es una cascada: parsear determinísticamente, puntuar cuánto confías en ese parseo y escalar solo por debajo de un umbral. Es la misma idea detrás de las cascadas de LLM del paper FrugalGPT, que mostró que encadenar de modelos baratos a caros puede igualar la calidad del mejor modelo con hasta un 98% de reducción de costo en sus benchmarks.

El pipeline de tres etapas

  1. Parsear. Corre primero la capa determinística — regex, una gramática o un motor de reglas. Emite campos candidatos.
  2. Puntuar. Una función pequeña asigna a cada parseo una confianza en [0, 1] a partir de señales concretas (abajo).
  3. Enrutar. En o por encima del umbral (0.95 es un punto de partida razonable): acepta el parseo directamente. Por debajo: manda solo ese ítem al LLM, idealmente adjuntando el parseo fallido como contexto.
result = regex_parse(text)
score  = confidence(result, text)

if score >= 0.95:
    return result                    # free path — most items
return llm_parse(text, hint=result)  # paid path — edge cases only

Qué entra en el puntaje

No necesitas un modelo entrenado para empezar. Señales baratas y honestas:

SeñalSube la confianzaBaja la confianza
Cobertura del matchEl patrón consumió toda la entradaCaracteres sobrantes sin match
Validación de camposLas fechas parsean, los totales suman, los IDs pasan checksumUn "precio" de $0.00 o 999999
AmbigüedadExactamente un patrón hizo matchDos patrones hicieron match a la vez
DistribuciónValores dentro de rangos históricosValores atípicos frente a tu corpus

Empieza con una combinación ponderada a mano de estas señales. Si más adelante quieres que el puntaje signifique algo ("0.9 = correcto el 90% de las veces"), calíbralo contra una muestra etiquetada — Platt scaling y regresión isotónica son las herramientas estándar, ambas incluidas en el módulo de calibración de scikit-learn.

Cómo elegir el umbral

El umbral es una perilla de negocio, no una constante. Si lo bajas, gastas menos pero aceptas más errores silenciosos; si lo subes, compras precisión con llamadas al LLM. Mide dos números sobre una muestra etiquetada: tasa de escalamiento (qué fracción va al modelo) y tasa de error residual (con qué frecuencia un parseo aceptado está mal). Mueve el umbral hasta que ambos quepan en tu presupuesto y tu tolerancia al error — y registra cada decisión de ruteo para re-ajustar con datos de producción.

Trucos para usuarios avanzados

Recursos

Read this article in English

¿Construyendo una funcionalidad con IA? Yeda AI diseña, audita y entrega sistemas LLM de producción.

Habla con nosotros · Lee el blog