El Problema del Conocimiento
El conocimiento de un modelo de lenguaje queda congelado en el momento del entrenamiento. Pregúntale por las noticias de la semana pasada y lo más probable es que no pueda responder por sí solo (por ejemplo, sin RAG o acceso a internet), ya que probablemente fue entrenado hace meses. Pregúntale por la documentación interna de tu empresa y casi con certeza nunca la ha visto. Todo lo que el modelo sabe está codificado en sus pesos, y esos pesos dejaron de actualizarse cuando terminó el entrenamiento.
Esto causa dos problemas que se refuerzan mutuamente: obsolescencia (el mundo cambia más rápido de lo que se reentrenan los modelos) y alucinación (cuando se le pregunta por algo fuera de sus datos de entrenamiento, el modelo puede generar una respuesta confiada, fluida y completamente incorrecta, porque durante el pre-entrenamiento fue incentivado a predecir continuaciones plausibles para cada oración que se le presentó, y no fue lo suficientemente penalizado por no decir "no sé" cuando la respuesta plausible resulta ser errónea).
Entonces, ¿cómo le damos al modelo acceso a conocimiento que no estaba en sus datos de entrenamiento, o que ha cambiado desde entonces? La Generación Aumentada con Recuperación (RAG) (Lewis et al., 2020) añade un paso de recuperación antes de la generación. En lugar de depender solo de sus pesos, el modelo primero recupera documentos relevantes de un corpus externo, y luego genera una respuesta basada en esos documentos. El conocimiento vive en un corpus que puede cambiarse o actualizarse sin reentrenar.
¿Cómo Encontramos los Documentos Correctos?
Si la idea es buscar documentos relevantes antes de responder, la pregunta inmediata es: ¿cómo? Dada una consulta $q$ y un corpus $\mathcal{D} = \{d_1, \ldots, d_N\}$ de $N$ documentos, necesitamos una función de puntuación que nos diga cuáles son los más relevantes:
Todo el track trata sobre cómo construir mejores versiones de $\text{score}(q, d)$. Empezaremos simple e iremos construyendo:
- Disperso / léxico (artículo 2): puntuación basada en coincidencia de palabras (TF-IDF, BM25). Rápido e interpretable, pero solo coincide con palabras exactas.
- Denso / semántico (artículos 3–4): codifica consultas y documentos como vectores con redes neuronales ($\text{score}(q, d) = E_Q(q)^\top E_D(d)$). Captura paráfrasis y significado, pero requiere datos de entrenamiento y más cómputo.
- Híbrido (artículo 5): combina puntuaciones dispersas y densas para obtener los beneficios de ambos.
- Reranking (artículo 6): usa un modelo más costoso para repuntuar un conjunto pequeño de candidatos con atención completa consulta-documento.
Hay un problema de escala. Con $N = 10^7$ documentos, no puedes calcular $\text{score}(q, d)$ para cada $d$ en tiempo de consulta. Necesitas formas de reducir candidatos de forma barata antes de aplicar la puntuación costosa. Los sistemas de recuperación manejan esto computando y almacenando representaciones de documentos por adelantado (precomputación), organizándolas para búsqueda rápida (indexación), y usando algoritmos de vecinos más cercanos aproximados que revisan solo una fracción del corpus por consulta (todo cubierto en el artículo 7).
¿Por Qué No Simplemente Hacer Fine-Tuning?
Si los modelos tienen problemas con el conocimiento factual, ¿por qué no simplemente hacer fine-tuning con los documentos correctos? Funciona en algunos casos, pero se topa con problemas prácticos que RAG evita:
- Olvido catastrófico: al hacer fine-tuning con nuevos documentos, las actualizaciones de gradiente acercan los pesos a los nuevos ejemplos y los alejan de todo lo que no está en el lote actual. Sin un muestreo cuidadoso de repetición (mezclar datos antiguos y nuevos a lo largo del entrenamiento), el modelo degrada el conocimiento previo. A escala, esto es costoso de gestionar.
- Requisitos de frecuencia: los hechos deben aparecer muchas veces en el corpus de entrenamiento para quedar codificados de forma fiable en los pesos. Un único documento, por importante que sea, raramente perdura. Los modelos de escala internet recuerdan hechos populares precisamente porque esos hechos aparecían en millones de páginas web.
- Iteración costosa: reentrenar o hacer fine-tuning es lento y caro. RAG permite actualizar el conocimiento cambiando el corpus (sin ciclo de entrenamiento, sin ajuste de hiperparámetros, sin ciclo de evaluación). En dominios que evolucionan rápido, esta diferencia es decisiva.
- Atribución: los documentos recuperados son contexto explícito. Puedes mostrar al usuario exactamente qué pasaje sustentó la respuesta. Los modelos puramente paramétricos no tienen un mecanismo para esto (no hay un pasaje fuente al que apuntar).
En la práctica, RAG tiende a funcionar mejor para hechos, mientras que fine-tuning funciona mejor para habilidades. Enseñar a un modelo un nuevo formato de salida, un estilo de razonamiento de dominio o una API de herramientas son cambios conductuales que se benefician del fine-tuning (hábitos a instaurar, no hechos a recuperar). Los mejores sistemas en producción tienden a combinar ambos: un modelo con fine-tuning que sabe cómo razonar, junto con un pipeline RAG que provee el qué .
Cómo Encaja un Pipeline RAG
Un sistema RAG tiene dos fases que corren a velocidades muy distintas:
- Offline (tiempo de indexado): fragmentar el corpus en pasajes, codificar cada pasaje en un vector y almacenarlo en un índice. Ocurre una vez (se actualiza al cambiar el corpus) y puede permitirse ser lento (segundos por documento).
- Online (tiempo de consulta): codificar la consulta del usuario (milisegundos), buscar en el índice los $k$ pasajes más cercanos (milisegundos con búsqueda aproximada), ensamblar el contexto y generar. Todo el paso de recuperación debe completarse en menos de 100 ms.
Esta separación existe porque la codificación de documentos es costosa pero solo necesita hacerse una vez, mientras que la codificación de consultas debe ser barata porque ocurre en cada petición. El compromiso: si actualizas documentos pero no re-indexas, el índice queda desincronizado (devolviendo pasajes obsoletos o faltantes hasta que reconstruyas o actualices incrementalmente, un reto práctico cubierto en el artículo 7).
Quiz
Pon a prueba tu comprensión de los fundamentos de RAG.
¿Qué limitación fundamental aborda RAG que el fine-tuning no puede resolver?
¿Por qué un sistema RAG se divide en fases offline y online?
¿Cuándo elegiría fine-tuning sobre RAG?