Introducción: ¿Cómo dar conocimiento adicional a un LLM?
Cuando queremos proporcionar conocimiento adicional a un Modelo de Lenguaje Grande (LLM), tenemos principalmente dos opciones:
- Aprendizaje en contexto (In-context learning)
- Tecnología RAG (Retrieval-Augmented Generation)
Aunque existen otras opciones como el fine-tuning, RAG es una de las mejores alternativas disponibles.
¿Qué es RAG y por qué es necesario?
RAG nos permite subir documentos PDF y buscar cualquier información dentro de estos archivos. Pero, ¿por qué no simplemente incluir todo el contexto en el prompt?
El problema de la ventana de contexto
Cuando intentas subir muchos PDFs directamente al contexto, eventualmente alcanzarás el límite de tokens. Recordemos que la ventana de contexto tiene un límite: cuando hay demasiados tokens, el LLM ya no puede entender correctamente de qué estamos hablando.
La solución: Bases de datos vectoriales
En herramientas como ChatGPT (MyGPTs), cuando subes archivos, ocurre algo interesante:
- Los archivos se almacenan en una base de datos vectorial
- Antes del almacenamiento, un modelo de embeddings los convierte en vectores
- Luego puedes hacer consultas y el LLM buscará en tus PDFs automáticamente
¿Cómo funciona RAG? – Explicación visual
El proceso básico
- Documentos originales: Tenemos PDFs, documentos y otros archivos
- Embeddings: Un modelo de embeddings convierte estos documentos en vectores
- Almacenamiento: Los vectores se guardan en una base de datos vectorial
- Consulta del usuario: Cuando el usuario hace una pregunta, el sistema busca en la base de datos
- Respuesta: El LLM proporciona la respuesta correcta basada en los documentos encontrados
Entendiendo los embeddings con una analogía
Imaginemos que los embeddings son como números: 0.2, 1.2, etc. Estos números representan palabras de manera que palabras similares tienen números similares.
Por ejemplo:
- «Manzana» y «plátano» tendrían embeddings similares (ambas son frutas)
- «Lobo», «perro» y «gato» tendrían embeddings similares (todos son animales)
La analogía de la fiesta
Imagine una fiesta en una base de datos vectorial:
🍺 En el bar: Están los chicos que beben cerveza toda la noche (un cluster de embeddings)
💃 En la pista de baile: Están las chicas divirtiéndose (otro cluster de embeddings)
🤓 En una esquina: Están los nerds de IA viendo cursos (otro cluster más)
Cuando eres padre/madre buscando a tu hija, sabes exactamente dónde buscar: irás directamente a la pista de baile, no al bar ni donde están los nerds.
Así funciona la búsqueda vectorial: el LLM sabe exactamente en qué «área» de la base de datos buscar según tu pregunta.
El flujo completo de RAG
Cuando el LLM conoce la respuesta
Usuario → Consulta → LLM → Respuesta directa
Cuando el LLM necesita buscar
Usuario → Consulta → LLM → Búsqueda en base vectorial → Documentos relevantes → LLM → Respuesta final
Conceptos clave: Chunking y Top-K
Chunking (Fragmentación)
- Los documentos se dividen en chunks (fragmentos) de tamaño específico
- Chunk size de 500: Cada fragmento tiene 500 tokens
- Chunk size de 5000: Cada fragmento tiene 5000 tokens
- El tamaño afecta la precisión y velocidad de búsqueda
Top-K Results
- Define cuántos documentos devolver al LLM
- Top-K = 2: Devuelve los 2 documentos más relevantes
- Top-K = 4: Devuelve los 4 documentos más relevantes
- Top-K = 8: Devuelve los 8 documentos más relevantes
Búsqueda por similitud
Cuando preguntas sobre «manzanas», el sistema:
- Busca en la base vectorial las oraciones más similares a tu consulta
- Devuelve los Top-K documentos más relevantes
- Cada documento tiene el tamaño definido por el chunk size
- El LLM usa estos documentos para generar la respuesta final
Ventajas de RAG
✅ Sin límites de contexto: No saturamos la ventana de contexto del LLM
✅ Búsqueda inteligente: Solo busca en las secciones relevantes
✅ Escalabilidad: Puedes subir muchísimos documentos
✅ Eficiencia: Más rápido que el fine-tuning
✅ Flexibilidad: Funciona con diferentes tipos de documentos (PDF, CSV, etc.)
Resumen
RAG es la mejor forma de dar conocimiento adicional a los LLMs porque:
- Convierte documentos en vectores usando modelos de embeddings
- Organiza la información en clusters temáticos en una base de datos vectorial
- Busca inteligentemente solo en las secciones relevantes
- Combina la información encontrada con las capacidades del LLM
Es como tener una biblioteca perfectamente organizada donde el LLM sabe exactamente en qué estante buscar según tu pregunta, sin necesidad de revisar toda la biblioteca cada vez.
En los próximos videos aprenderemos a implementar RAG usando herramientas como LangChain, n8n y Flowwise, donde configuraremos estos parámetros de chunking y Top-K en detalle.