Introducción
Si alguna vez le preguntaste algo muy específico a ChatGPT o Claude sobre un documento propio y te respondió con información inventada, conociste en carne propia el límite de los modelos de lenguaje. Los LLMs saben mucho, pero solo saben lo que aprendieron durante el entrenamiento, y ese conocimiento quedó congelado meses o años atrás. No conocen tu código interno, tu base de clientes ni los reportes del último trimestre.
RAG (Retrieval Augmented Generation, o Generación Aumentada por Recuperación) es la arquitectura que resolvió ese problema. En vez de reentrenar el modelo con datos nuevos, algo carísimo y lento, RAG le da al LLM un "buscador" que consulta fuentes externas en el momento y las inyecta en el prompt antes de responder. El modelo genera la respuesta basándose en esa información fresca, no solo en su memoria.
En 2026, RAG es la técnica estándar para construir asistentes empresariales, bots de soporte, buscadores inteligentes y agentes con memoria. Esta guía la desmenuza paso a paso, con código, analogías claras y casos de uso reales.
Qué es RAG
RAG es una arquitectura que combina dos sistemas que antes vivían separados: un sistema de recuperación de información (como un motor de búsqueda) y un modelo generativo (como un LLM). El paper fundacional fue publicado en 2020 por Patrick Lewis y colegas de Facebook AI (hoy Meta), pero explotó en popularidad a partir de 2023, cuando las empresas empezaron a conectar chatbots con sus datos privados de forma masiva.
La analogía más clara: imaginá a un experto encerrado en una biblioteca. El experto es el LLM, brillante pero solo sabe lo que leyó antes de entrar. La biblioteca es tu base de conocimiento, repleta de documentos actualizados. RAG es el bibliotecario que, cuando alguien pregunta algo, corre a buscar los libros relevantes, los marca con post-its y se los deja al experto en el escritorio. El experto lee esos extractos y redacta una respuesta combinando lo que ya sabía con lo que acaba de leer.
Sin RAG, el experto inventa respuestas (alucina) cuando no sabe algo. Con RAG, admite que no tiene la información o responde citando los documentos recuperados. Es la diferencia entre "creo que sí" y "según el manual de la página 47, la respuesta es X".
La clave técnica es que RAG no modifica los pesos del modelo. El LLM sigue siendo el mismo, solo cambia lo que le ponés en el contexto. Esto lo hace infinitamente más barato y flexible que el fine-tuning: podés actualizar la base de conocimiento en segundos sin reentrenar nada.
El flujo RAG: la consulta se vectoriza, busca documentos relevantes y enriquece el prompt antes de llegar al LLM.
Cómo funciona RAG paso a paso
RAG tiene tres fases bien diferenciadas: indexación, recuperación y generación. La indexación se hace una sola vez (o cada vez que agregás documentos nuevos). La recuperación y la generación ocurren en cada consulta del usuario.
1. Indexación
Tu base de conocimiento (PDFs, páginas web, Notion, Google Drive, bases de datos, lo que sea) se parte en fragmentos pequeños llamados chunks. Un chunk típico tiene entre 200 y 800 tokens. No podés meter documentos enteros porque los modelos de embedding tienen límites y porque fragmentos más chicos son más precisos para la búsqueda semántica.
Cada chunk se convierte en un vector usando un modelo de embeddings (como text-embedding-3-large de OpenAI, voyage-3 de Voyage AI, o nomic-embed-text open source). El vector es una lista de cientos o miles de números que representan el significado semántico del texto. Textos con significado similar quedan cerca en el espacio vectorial; textos distintos quedan lejos.
Los vectores se guardan en una base de datos vectorial: Pinecone, Qdrant, Weaviate, Chroma, pgvector sobre Postgres, o incluso Redis con RediSearch. Estas bases están optimizadas para una operación: dado un vector de consulta, encontrar los K vectores más cercanos usando similitud del coseno o distancia euclidiana. Es búsqueda por significado, no por palabras clave.
💡 Tip: El tamaño del chunk es una decisión crítica. Chunks muy chicos pierden contexto; chunks muy grandes diluyen la relevancia. Una buena regla para documentación técnica es 400-600 tokens con un overlap de 50-100 tokens entre chunks consecutivos.
2. Recuperación
Cuando el usuario hace una pregunta, esa pregunta también se convierte en vector con el mismo modelo de embeddings. Luego se busca en la base vectorial los K chunks más cercanos (típicamente K=3 a 10). Estos son los chunks "relevantes" para la pregunta.
Sistemas más sofisticados agregan re-ranking: usan un modelo secundario (como un cross-encoder de Cohere Rerank) para reordenar los resultados y quedarse solo con los mejores. Otras técnicas incluyen búsqueda híbrida (combinar vectores con BM25 o búsqueda por palabras clave), HyDE (generar una respuesta hipotética con el LLM y buscar los chunks más parecidos a esa respuesta) y query expansion (reformular la pregunta en varias variantes).
3. Generación
Los chunks recuperados se inyectan en el prompt del LLM junto con la pregunta original. El prompt final se ve más o menos así:
Respondé la siguiente pregunta usando solo el contexto provisto.
Si el contexto no tiene la respuesta, decilo explícitamente.
Contexto:
[chunk 1]
[chunk 2]
[chunk 3]
Pregunta: ¿Cómo configuro autenticación OAuth2 en nuestra API interna?
Respuesta:
El LLM genera la respuesta basándose en el contexto. Si está bien configurado, citará los fragmentos específicos y admitirá cuando no tenga información suficiente en vez de inventar.
graph LR;
A[Pregunta usuario] --> B[Modelo de embeddings];
B --> C[Base vectorial];
C --> D[Top-K chunks relevantes];
D --> E[Prompt con contexto];
A --> E;
E --> F[LLM];
F --> G[Respuesta con citas];
Ejemplo práctico con código
Vamos a ver un ejemplo mínimo en Python usando LangChain, la librería más popular para RAG en 2026. Necesitás una API key de OpenAI (o cualquier otro proveedor compatible) y unos pocos documentos de texto.
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_chroma import Chroma
from langchain.chains import RetrievalQA
# 1. Cargar documentos
loader = TextLoader("manual_empresa.txt")
docs = loader.load()
# 2. Partir en chunks de 500 caracteres con overlap de 50
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)
# 3. Generar embeddings e indexar en Chroma
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = Chroma.from_documents(chunks, embeddings)
# 4. Crear el retriever y la cadena RAG
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
qa = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)
# 5. Hacer preguntas
respuesta = qa.invoke("¿Cuál es la política de vacaciones?")
print(respuesta["result"])
Este código hace exactamente los tres pasos que vimos: parte el documento en chunks, genera embeddings, los guarda en Chroma (una base vectorial local que corre en memoria), y luego responde preguntas recuperando los 3 chunks más relevantes e inyectándolos en el prompt antes de llamar al LLM.
En producción, en vez de un único archivo de texto tendrías cientos o miles de documentos de distintas fuentes: Notion, Google Drive, PDFs escaneados con OCR, tickets de Jira, repositorios de GitHub, bases de datos SQL. La lógica es la misma: parsear, chunkear, embebear, indexar. Cada fuente necesita un conector (loader) que sepa leer su formato.
Casos de uso reales
RAG está en producción en cientos de empresas. Estos son los patrones más comunes:
-
Soporte técnico automatizado — Empresas como Intercom, Zendesk y Klarna usan RAG para que sus bots respondan basándose en la documentación oficial y el histórico de tickets, no en conocimiento genérico. Klarna reportó que su asistente con RAG maneja el equivalente de trabajo de cientos de agentes humanos.- Búsqueda interna corporativa — Herramientas como Glean y Microsoft Copilot indexan Slack, Google Drive, Notion y Jira de una empresa. Cuando preguntás "¿cuál era la política de viáticos aprobada en el Q4?", RAG busca en los documentos internos y responde citando la fuente exacta.- Análisis legal y médico — Harvey (legal) y Hippocratic AI (medicina) usan RAG para consultar contratos, jurisprudencia e historias clínicas. La explicabilidad es crítica: el modelo debe citar exactamente qué párrafo usó para llegar a su conclusión.- Asistentes de desarrollo — Cursor, GitHub Copilot Workspace y Codeium usan RAG para indexar tu base de código y responder preguntas sobre ella. Cuando preguntás "¿dónde se define la función
authenticate?", buscan en el código y devuelven el fragmento exacto.- Documentación técnica interactiva — Muchos proyectos open source (Supabase, Vercel, Cloudflare) tienen chatbots entrenados con su propia documentación que responden preguntas técnicas con código de ejemplo citando la página exacta de los docs. Casos de uso de RAG: desde soporte técnico hasta asistentes de código y búsqueda corporativa. ## Ventajas y desventajas de RAG
Ventajas
- Información actualizada — No dependés del cutoff del entrenamiento del modelo. Si indexás un documento hoy, el sistema lo conoce hoy.- Datos privados sin reentrenar — Podés usar modelos comerciales con tus datos internos sin mandarlos a un proceso de fine-tuning caro y sin que queden incrustados en los pesos del modelo.- Trazabilidad y citas — Cada respuesta puede acompañarse del chunk que la originó. Auditar, verificar y explicar decisiones es posible.- Reducción de alucinaciones — El modelo tiene menos incentivos para inventar cuando ya tiene el dato frente a sus ojos.- Costo bajo — Indexar un millón de documentos cuesta unos pocos dólares; hacer fine-tuning de un modelo grande cuesta miles.
Desventajas
- Calidad depende de la recuperación — Si el retriever trae chunks irrelevantes, el LLM responderá mal o dirá que no sabe. "Garbage in, garbage out" aplica fuerte.- Chunks mal cortados rompen el contexto — Si una tabla o un bloque de código queda partido entre dos chunks, la respuesta puede perder información crítica.- Latencia extra — Cada consulta implica un embedding, una búsqueda en la base vectorial y luego la llamada al LLM. Son 200-800ms adicionales por lo general.- Ventana de contexto limitada — Aunque los modelos de 2026 manejan cientos de miles de tokens, meter mucho contexto aumenta costos y puede confundir al modelo (lost in the middle).- No resuelve razonamiento multi-hop — Preguntas que requieren combinar información de muchos documentos dispersos siguen siendo difíciles sin arquitecturas más complejas (agentes con múltiples pasos de retrieval).
⚠️ Ojo: RAG reduce alucinaciones, no las elimina. Si los documentos indexados contienen errores, el modelo los repetirá con total confianza. La calidad del conocimiento base importa tanto como la del modelo.
Mejores prácticas para RAG en producción
Construir un prototipo de RAG en una tarde es fácil. Ponerlo en producción con calidad es donde está el trabajo real. Algunas prácticas que separan los buenos sistemas de los malos:
- Evaluar la recuperación por separado de la generación — Usá frameworks como Ragas o TruLens para medir context precision, context recall y faithfulness de forma independiente.- Chunking inteligente — Respetá estructuras naturales del documento (secciones, párrafos, bloques de código). Un splitter recursivo por encabezados Markdown funciona mucho mejor que cortar cada N caracteres.- Metadata filtering — Guardá metadata con cada chunk (fecha, autor, categoría, permisos) y filtrá la búsqueda. No tiene sentido buscar en documentos de RRHH cuando la pregunta es de ingeniería.- Búsqueda híbrida — Combiná vectores con BM25 para capturar tanto similitud semántica como coincidencia exacta de términos (útil para nombres propios, SKUs, códigos de error).- Re-ranking con un cross-encoder — Traé 20-30 candidatos con la base vectorial y reordená los top 5 con un modelo más preciso. Mejora la calidad sin golpear latencia demasiado.- Observability — Loggeá cada consulta, cada chunk recuperado y cada respuesta. Sin eso no podés depurar por qué el sistema respondió mal una pregunta específica.
📖 Resumen en Telegram: Ver resumen
Preguntas frecuentes
¿RAG es lo mismo que fine-tuning?
No. Fine-tuning modifica los pesos del modelo para que aprenda un estilo o dominio específico. RAG deja el modelo intacto y le aporta información externa en el prompt. Ambas técnicas se pueden combinar: fine-tuning para tono y formato, RAG para datos frescos. En la mayoría de los casos prácticos, RAG resuelve el problema a una fracción del costo.
¿Necesito una base vectorial o puedo usar Postgres?
Depende de la escala. Para miles de documentos, pgvector sobre Postgres es más que suficiente y te ahorra infraestructura adicional. Para millones de vectores con baja latencia, bases especializadas como Pinecone, Qdrant o Weaviate rinden mejor. Empezá simple, migrá cuando duela.
¿Cuánto cuesta correr un sistema RAG?
Los dos costos principales son embeddings (se cobra por token indexado, una vez) y llamadas al LLM (por token de prompt + respuesta, cada consulta). Para una base de un millón de chunks y mil consultas diarias con gpt-4o-mini, hablás de $30-100 mensuales, dependiendo del tamaño del contexto.
¿RAG funciona con datos multimodales (imágenes, audio)?
Sí. Existen modelos de embeddings multimodales (como CLIP para imágenes o modelos de Google Vertex AI) que pueden vectorizar imágenes, audio transcrito y texto en un mismo espacio. Podés buscar imágenes por descripción textual o viceversa.
¿Cómo evito que el modelo invente pese a tener contexto?
Tres cosas: prompt engineering explícito ("responde solo con el contexto, si no está di no sé"), temperature en 0 para reducir creatividad, y validación post-hoc (verificar que la respuesta cite chunks reales). Modelos recientes como Claude 4 y GPT-4o son bastante buenos siguiendo instrucciones de no inventar, pero ningún sistema es perfecto.
¿Qué diferencia hay entre RAG y un agente de IA?
RAG es una técnica de recuperación. Un agente es un sistema que toma decisiones y ejecuta pasos. Un agente puede usar RAG como una de sus herramientas, junto con otras como navegar la web, ejecutar código o llamar APIs. RAG es un ladrillo; los agentes son la construcción.
Referencias
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (Lewis et al., 2020) — El paper fundacional que definió RAG.- Wikipedia: Retrieval-Augmented Generation — Resumen enciclopédico con historia y variantes de RAG.- LangChain Docs: Build a RAG application — Tutorial oficial paso a paso con código funcional.- LangChain en GitHub — El framework open source más usado para orquestar pipelines RAG.- Hugging Face Transformers: RAG — Documentación de la implementación RAG en la librería Transformers.
📱 ¿Te gusta este contenido? Únete a nuestro canal de Telegram @programacion donde publicamos a diario lo más relevante de tecnología, IA y desarrollo. Resúmenes rápidos, contenido fresco todos los días.
Top comments (0)