Inteligencia artificial

RAG: qué es y cómo funciona la generación aumentada por recuperación

Por qué los LLM alucinan, y cómo la arquitectura los conecta con tus datos.

RAG: qué es y cómo funciona la generación aumentada por recuperación

Los grandes modelos de lenguaje (GPT, Claude, Gemini) tienen un conocimiento enciclopédico. Y sin embargo, tres debilidades estructurales los acompañan siempre:

  1. Alucinaciones: cuando no saben, inventan con total confianza.
  2. Conocimiento congelado: lo que saben termina en la fecha de corte de su entrenamiento.
  3. Opacidad: no pueden decir de dónde salió una respuesta ni citar fuentes.

Y una cuarta, la más importante para cualquier proyecto real: no conocen tus datos. Tu documentación interna, tu base de conocimiento, tus tickets de soporte, tu código. Nada de eso está en sus pesos.

Qué es RAG

RAG (Retrieval-Augmented Generation) es un patrón de arquitectura que conecta un LLM con fuentes de conocimiento externas: antes de generar una respuesta, el sistema recupera los fragmentos relevantes de tu corpus y los inyecta en el prompt como contexto.

La formalización viene del paper de Lewis et al. (Meta AI Research, 2020), "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks", aunque hoy el término abarca toda una familia de arquitecturas.

La analogía clásica: un LLM a secas es un estudiante haciendo un examen de memoria. Un LLM con RAG es el mismo estudiante a libro abierto: no necesita memorizar el manual, solo saber encontrar la página correcta.

mermaid
flowchart LR
    subgraph SIN["LLM sin RAG — examen de memoria"]
        direction LR
        Q1[Pregunta] --> M1[LLM]
        M1 --> R1["Respuesta sin fuentes<br/>puede alucinar · conocimiento congelado"]
    end
    subgraph CON["LLM con RAG — examen a libro abierto"]
        direction LR
        Q2[Pregunta] --> RET[Retrieval]
        RET --> CTX[Contexto recuperado]
        CTX --> M2[LLM]
        M2 --> R2["Respuesta trazable<br/>con citas y datos frescos"]
    end

Los tres pilares

1. Retrieval (recuperación)

mermaid
flowchart LR
    A["Documentos<br/>docs · PDFs · wikis · tickets · código"] --> B["Chunking<br/>fragmentos de 200–1000 tokens"]
    B --> C["Modelo de embeddings<br/>texto → vector"]
    C --> D[("Base de datos vectorial<br/>pgvector · Qdrant · Chroma · Pinecone")]

Dado un corpus (documentación, PDFs, wikis, tickets, código), el sistema trabaja en dos fases.

Fase offline (indexación):

  • Chunking: se divide cada documento en fragmentos manejables (típicamente 200–1000 tokens).
  • Embeddings: un modelo convierte cada fragmento en un vector que representa su significado.
  • Vector store: pgvector, Qdrant, Chroma, Pinecone, Weaviate… guardan e indexan esos vectores.

Fase online (consulta):

mermaid
flowchart LR
    Q["Pregunta del usuario"] --> E["Embedding de la pregunta"]
    E --> S["Búsqueda por similitud<br/>distancia coseno"]
    V[("Vector store")] -. "top-k" .-> S
    S --> K["Top-k fragmentos<br/>más relevantes"]

2. Augmentation (aumento)

Los fragmentos recuperados se insertan en un prompt con instrucciones del tipo: "responde únicamente con base en este contexto; si la información no está, di que no lo sabes".

3. Generation (generación)

El LLM genera la respuesta condicionada al contexto. Eso permite citar fuentes, reducir alucinaciones y responder con datos que jamás vio durante su entrenamiento.

mermaid
flowchart TB
    subgraph P1["1 · Retrieval"]
        direction TB
        subgraph OFF["Fase offline — indexación"]
            direction LR
            A[Documentos] --> B[Chunking] --> C[Embeddings] --> D[("Vector store")]
        end
        subgraph ON["Fase online — consulta"]
            direction LR
            E[Pregunta] --> F["Embedding de la pregunta"] --> G["Búsqueda por similitud"] --> H["Top-k fragmentos"]
        end
        D -.-> G
    end
    subgraph P2["2 · Augmentation"]
        I["Prompt aumentado<br/>pregunta + contexto + instrucciones"]
    end
    subgraph P3["3 · Generation"]
        J[LLM] --> K["Respuesta con citas<br/>y datos frescos"]
    end
    H --> I
    I --> J

Por qué importa

  • Frescura: actualizar el índice es actualizar el conocimiento. Minutos, no re-entrenamientos.
  • Trazabilidad: cada afirmación puede enlazar al fragmento exacto que la sustenta.
  • Control de acceso: la recuperación puede filtrar por metadatos, tenant o permisos.
  • Coste: inyectar unos miles de tokens seleccionados por consulta es mucho más barato que fine-tuning o meter el corpus entero en contexto.

Casos de uso reales: asistentes sobre documentación de producto, soporte alimentado por tickets históricos, búsqueda corporativa interna, asistentes legales o médicos con corpus acotados y auditables.

En resumen

RAG no hace al modelo más inteligente: le da acceso oportuno a la información correcta. Y esa frase — la información correcta en el momento correcto — es exactamente el tema del siguiente artículo: cómo RAG enriquece las búsquedas mucho más allá de las palabras clave.

Escrito por

Alejandro Ramirez

Explorando privacidad, DIY, IA, software y Linux desde Bogotá.

Acerca de

Apoya el blog

Apoya mi trabajo

Si este contenido te fue útil, invítame un café.

buymeacoffee.com/ale9420

Invitar un café

Conversación · sin comentarios

Comentarios

Comenta aquí o responde desde tu cuenta del fediverso: las dos conversaciones se juntan en este hilo.

Aún no hay comentarios. ¡Sé el primero en comentar!

Deja un comentario

Requerido, nunca se muestra públicamente