Construye tú mismo un RAG sencillo
Chunking, embeddings, búsqueda vectorial, contexto en el prompt: los cuatro pasos detrás de todo sistema RAG, más cuándo basta simplemente con una ventana de contexto larga.
Los cuatro pasos
RAG (Retrieval-Augmented Generation, generación aumentada por recuperación) busca, antes de cada respuesta, fragmentos de texto relevantes en una base de conocimiento propia y se los da al modelo dentro del prompt. El proceso tiene cuatro pasos:
- Chunking: dividir la base de conocimiento en fragmentos pequeños de texto, normalmente de unos pocos cientos de tokens.
- Embeddings: convertir cada fragmento en un vector con un modelo de embeddings que capture su significado.
- Búsqueda vectorial: para una consulta, encontrar los fragmentos cuyos vectores son más parecidos a ella.
- Contexto en el prompt: insertar los fragmentos encontrados en el prompt antes de que el modelo responda.
RAG frente a una ventana de contexto larga
Si toda tu base de conocimiento cabe sin problema en la ventana de contexto, RAG suele ser un esfuerzo innecesario: meter simplemente todo en el prompt es más sencillo y menos propenso a errores. RAG merece la pena cuando la base de conocimiento es más grande que la ventana de contexto, cambia con frecuencia, o cuando solo una porción pequeña y variable es relevante en cada consulta.
Fuentes de error habituales
Fragmentos demasiado grandes: el relleno irrelevante desplaza lo importante. Fragmentos demasiado pequeños: se pierde el contexto. La búsqueda vectorial pura pasa por alto coincidencias exactas de términos (jerga técnica, nombres de código); combinarla con la búsqueda clásica por palabras clave soluciona eso.
EJEMPLO
Plantilla de prompt tras la búsqueda: "Responde a la siguiente pregunta usando únicamente los extractos de abajo. Si la respuesta no está ahí, dilo. EXTRACTOS: [fragmento 1] [fragmento 2] [fragmento 3] PREGUNTA: ¿Cómo cancelo mi suscripción?"
🛠️ EJERCICIO — PRUÉBALO TÚ
Construye un sistema RAG diminuto para un puñado de archivos de texto propios (por ejemplo, 5-10 notas) y comprueba si encuentra la fuente correcta.
- Divide 5-10 archivos de texto cortos en fragmentos de unos 200-300 tokens.
- Genera embeddings para cada fragmento y para 3 preguntas de prueba cuya respuesta ya conozcas.
- Compara la similitud coseno y comprueba si el fragmento con la respuesta correcta acaba realmente arriba.
✅ AUTOEVALUACIÓN
- ☐ ¿Encontró la búsqueda vectorial el fragmento correcto en las 3 preguntas de prueba?
- ☐ ¿Hubo algún caso en el que ganara un fragmento incorrecto pero semánticamente parecido?
- ☐ ¿Qué habría cambiado en este resultado un chunking más pequeño o más grande?
QUIZ RÁPIDO
¿Cuándo es un sistema RAG sencillo la mejor opción, en lugar de simplemente meter toda la base de conocimiento en la ventana de contexto?
FUENTES
- Anthropic Engineering: Contextual Retrieval ↗ www.anthropic.com
- Claude Platform Doku: Embeddings ↗ platform.claude.com
- OpenAI Doku: Embeddings ↗ platform.openai.com