Skip to content

English · Español

00 — Por qué RAG: LLMs closed-book vs open-book

RAG es una opción arquitectónica, no un truco. Decide dónde vive el conocimiento: en los pesos (closed-book) o en una base externa (open-book). Hay tradeoffs en frescura, escala, actualización, atribución, alucinación. La intuición es: meter todo lo memorizable en un índice barato, y dejar al modelo razonar sobre lo que se le entrega.


El cuadro closed-book

Un modelo de lenguaje preentrenado almacena su conocimiento implícitamente en sus pesos. Le preguntas a GPT-4 "¿cuál es la capital de Francia?", y responde "París" en virtud de haber visto ese hecho (en muchas formas) durante el pretraining. El modelo es closed-book: en tiempo de inferencia no se consulta ningún conocimiento externo.

Esto funciona bien cuando:

  • El conocimiento es denso en la distribución de entrenamiento.
  • El conocimiento no cambia con frecuencia.
  • No necesitas citar una fuente.
  • El conjunto total de conocimiento cabe cómodamente en los parámetros del modelo.

Funciona mal cuando:

  • El conocimiento es raro en la distribución de entrenamiento (hechos de la long tail).
  • El conocimiento es fresco (posterior al corte del entrenamiento).
  • Necesitas citas para verificabilidad o auditoría.
  • El conjunto total de conocimiento es más grande de lo que el modelo puede memorizar (p. ej., el corpus de 10M documentos de tu empresa).
  • Necesitas actualizaciones sin reentrenar (el conocimiento cambia; no puedes reentrenar un modelo de 7B cada semana).

La alternativa open-book

Retrieval-Augmented Generation (RAG) (Lewis et al., 2020) invierte la estrategia de almacenamiento:

  1. Almacenar el conocimiento en un índice externo buscable (base vectorial, corpus BM25, etc.).
  2. En tiempo de consulta, recuperar los chunks más relevantes.
  3. Inyectar los chunks recuperados en el contexto del modelo.
  4. El modelo genera una respuesta fundamentada (grounding) en los chunks recuperados.

El rol del modelo cambia de "recordar el hecho" a "razonar sobre el contexto dado". Por eso incluso los LLMs pequeños pueden ser efectivos con una buena recuperación: no necesitan saber la respuesta ellos mismos — necesitan leerla correctamente y responder.

La perspectiva de dos sistemas

El RAG moderno son dos sistemas:

  • Un retriever (barato, rápido, escala a miles de millones de documentos).
  • Un lector/generador (caro, lento, escala con la calidad de atención).

El trabajo del retriever: meter el contexto relevante en la ventana del lector con un recall@k alto. El trabajo del lector: sintetizar una respuesta a partir de ese contexto.

Este desacoplamiento es la ganancia. Cada sistema puede mejorarse independientemente. Cada uno puede usar familias distintas de modelos (sentence-transformers para recuperación; LLaMA-7B para lectura). Y cada uno es evaluable de forma independiente (hit-rate para recuperación; faithfulness para lectura).

Cuándo domina RAG

Para nuestro caso de uso de la Fase 29 — responder preguntas de gramática verbal inglesa — RAG es la elección obvia por varias razones:

  1. Hechos raros: MiniGPT se entrenó sobre un corpus minúsculo. No ha visto, p. ej., "el past participle de write es written" miles de veces. RAG nos permite inyectar este hecho de forma fiable.
  2. Citas: Un tutor de gramática que dice "el past participle de write es written (regla: Irregular Past Participles, §3.2)" es mucho más confiable que uno que dice "el past participle de write es written" sin más.
  3. Actualizable: Añadir un nuevo verbo a la KB — no hace falta reentrenar.
  4. Auditable: Cuando el modelo da una respuesta equivocada, puedes comprobar si falló la recuperación (chunks erróneos) o falló la lectura (chunks correctos, razonamiento erróneo).

Cuándo basta con closed-book

Para una tarea de alto volumen y ruta caliente con conocimiento estable — p. ej., "¿es gramatical esta frase inglesa?" — un modelo con fine-tune (la ruta LoRA de la Fase 28) puede ser más rápido y barato que RAG. No hay latencia de recuperación; ningún sistema externo que gestionar. El Lab 02 de la Fase 28 ya lo mostró: el fine-tuning LoRA de MiniGPT sobre verbos irregulares puede elevar la accuracy de la tarea sin recuperación.

La elección entre fine-tuning y RAG no es excluyente. Muchos sistemas en producción hacen ambos: fine-tune para comportamiento (formato de salida, estilo, calibración), recuperar para hechos (el contenido real de la respuesta).

Para la Fase 29 usamos RAG en solitario para la tarea del verb-tutor para mantener el pipeline mínimo. En la Fase 32 (agente) revisitamos la combinación fine-tune + recuperar.

Por qué fallar al meter el conocimiento por fine-tuning

Un instinto razonable: "en vez de RAG, haz fine-tune a MiniGPT sobre las reglas gramaticales. Son minúsculas — 50 chunks. El modelo puede memorizarlas."

Dos razones por las que esto falla a escala:

  1. Confunde conocimiento con comportamiento. La pérdida de fine-tuning del modelo optimiza para generar el texto de la regla — no para citarla o para responder preguntas sobre ella. Un modelo que memoriza "el past participle de eat es eaten" todavía puede responder "¿cuál es el past participle de eat?" con un guess equivocado si el prompt de recuperación no está bien formado durante el fine-tuning.
  2. No se actualiza. Cada cambio en las reglas requiere volver a hacer fine-tune. RAG simplemente actualiza la KB.

A escala MiniGPT son preocupaciones teóricas (el corpus es pequeño). A escala de producción (10M docs, actualizaciones semanales) son decisivas.

La arquitectura que vamos a construir

       ┌─────────────────────────────────────┐
       │              Query                  │
       │  "past participle of eat?"          │
       └─────────────────────────────────────┘
       ┌─────────────────────────────────────┐
       │   Embedder (bi-encoder)             │
       │   q_vec ∈ ℝ^384                     │
       └─────────────────────────────────────┘
       ┌─────────────────────────────────────┐
       │   Vector index (FAISS flat)         │
       │   top-k by cosine similarity        │
       │   k = 10                            │
       └─────────────────────────────────────┘
       ┌─────────────────────────────────────┐   ┌──────────────┐
       │   BM25 index                        │   │  RRF fuse    │
       │   top-k by BM25 score               │──▶│  (k = 60)    │
       │   k = 10                            │   │              │
       └─────────────────────────────────────┘   └──────────────┘
                                            ┌─────────────────────────┐
                                            │  Reranker (cross-enc)   │
                                            │  top-3 from top-10      │
                                            └─────────────────────────┘
                                            ┌─────────────────────────┐
                                            │  Reader (MiniGPT+LoRA)  │
                                            │  prompt = top-3 + query │
                                            │  → answer + citations   │
                                            └─────────────────────────┘

Cada componente es testeable de forma independiente. Cada uno puede ablacionarse.

Una nota sobre alucinación

Un fallo común de los LLMs: alucinar hechos que no están en los datos de entrenamiento. RAG reduce la alucinación no porque haga al modelo "más honesto" sino porque el modelo tiene los hechos correctos en su contexto. El modelo entonces es menos propenso a inventar.

Pero RAG no elimina la alucinación. Un modelo todavía puede:

  • Malinterpretar el contexto recuperado.
  • Añadir detalles que no están en el contexto.
  • Responder con confianza cuando el contexto no contiene la respuesta (el comportamiento correcto es "no lo sé").

Faithfulness como métrica mide si la respuesta está respaldada por el contexto recuperado. El Lab 03 la mide.

Problemas de drill

Soluciones al abrir la fase en solutions/00-motivation-ref.md.

  1. Supón que tienes un LLM closed-book de 7B y un LLM de 7B-más-RAG con una KB de 10M documentos. ¿En qué tareas destaca cada uno? Da un ejemplo por tarea.
  2. El bi-encoder recupera los top-10 chunks. El lector recibe los 10 en contexto. ¿Qué sale mal si el embedder recupera chunks equivocados 7 de cada 10 veces? (Pista: el modelo puede confundirse con contexto irrelevante.)
  3. ¿Cuál es la diferencia entre faithfulness ("la respuesta cita el contexto") y accuracy ("la respuesta es correcta")? ¿Puedes tener una sin la otra? Da un escenario para cada caso.
  4. Argumenta a favor de una de: (a) "usa siempre RAG", (b) "haz siempre fine-tune", © "usa ambos — fine-tune para comportamiento, RAG para conocimiento". Defiende con una tarea de ejemplo concreta.

Resumen en un párrafo

RAG desacopla el almacenamiento de conocimiento del razonamiento: guarda los hechos en un índice buscable, recupera (retrieval) los relevantes en tiempo de consulta, inyéctalos en el contexto del modelo lector. La ganancia es la descomposición — retriever y lector pueden mejorarse, intercambiarse y evaluarse de forma independiente. Destaca cuando el conocimiento es raro, fresco o grande; los LLMs closed-book ganan cuando el conocimiento es denso, estable y pequeño. La arquitectura es de dos etapas: embedding denso para el recall + reranking con cross-encoder para la precisión + un lector (LLM) para la síntesis. La Fase 29 implementa esto de forma mínima: KB pequeña, modelos pequeños, todo en CPU. La recompensa pedagógica es sentir la contribución de cada componente a la calidad end-to-end.

Siguiente: theory/01-embeddings-and-biencoders.md.