M. Fernández

RAG sin humo: lo que importa en producción

Un sistema de recuperación aumentada se gana o se pierde en el troceado, la búsqueda híbrida y la evaluación, no en el modelo que elijas.

Cuando alguien me cuenta que su RAG "no funciona", casi nunca el problema es el modelo. Es lo que le llega al modelo. Si el contexto es malo, el mejor LLM del mundo responderá con elegancia algo equivocado.

Trocea con criterio

El tamaño fijo de 500 tokens es un buen punto de partida y un mal destino. Un contrato, una factura y un artículo no se parten igual. Parte por estructura: títulos, párrafos, filas. Y guarda con cada trozo su contexto: documento, sección, fecha.

Un truco barato: antepón al trozo una línea con el título del documento y de la sección antes de calcular el embedding. Recupera mejor porque el vector sabe de qué habla.

Busca de dos maneras

Los embeddings entienden el significado, pero fallan con nombres propios, códigos y siglas. La búsqueda por palabras clave hace justo lo contrario. Combinar ambas es lo que más mejora un sistema real. Una forma simple de fusionar rankings es la fusión recíproca:

def rrf(rankings: list[list[str]], k: int = 60) -> list[str]:
    """Fusiona varias listas ordenadas de ids en una sola."""
    score: dict[str, float] = {}
    for ranking in rankings:
        for pos, doc_id in enumerate(ranking, start=1):
            score[doc_id] = score.get(doc_id, 0) + 1 / (k + pos)
    return sorted(score, key=score.get, reverse=True)

top = rrf([vector_search(q), keyword_search(q)])[:8]

No necesita calibrar puntuaciones de sistemas distintos, y eso la hace muy robusta.

Evalúa antes de optimizar

Antes de tocar nada, escribe veinte preguntas reales con su respuesta esperada y el documento donde está. Mide dos cosas por separado:

  • Si el trozo correcto aparece entre los resultados recuperados.
  • Si la respuesta final es fiel a lo recuperado.

Separarlas te dice si el fallo está en buscar o en redactar. Sin esta medida, cada cambio es una opinión.

Qué haría primero

  1. Un conjunto pequeño de preguntas de evaluación.
  2. Troceado por estructura con contexto en cada trozo.
  3. Búsqueda híbrida con fusión de rankings.
  4. Solo después, un reordenador y prompts más finos.

El orden importa: cada paso se apoya en el anterior, y casi siempre el primer 70 % de la mejora llega en los tres primeros.

¿Te ha servido? Hay más.

Una nota al mes con lo mejor que escribo y leo sobre IA aplicada.

Sigue leyendo