RAG
Retrieval-Augmented Generation - Tecnica que combina busqueda de documentos con LLMs para generar respuestas basadas en informacion actualizada y especifica.
Pronunciación
Que es
RAG (Retrieval-Augmented Generation) es una tecnica de AI que:
- Busca informacion relevante en tus documentos
- Recupera los fragmentos mas utiles
- Aumenta el prompt del LLM con ese contexto
- Genera respuestas basadas en datos reales
RAG resuelve el problema de que los LLMs no conocen tu informacion privada ni datos recientes.
Pronunciacion
IPA: /ræɡ/
Suena como: “rag” - como “trapo” en ingles, una sola silaba
Errores comunes:
- “R-A-G” (deletreado) - incorrecto
- “rague” - incorrecto
Por que RAG es importante
Sin RAG
Usuario: "Cual es la politica de vacaciones de mi empresa?"
LLM: "Las politicas de vacaciones varian segun la empresa.
Generalmente incluyen 15-20 dias al ano..."
[Respuesta generica, no conoce TU empresa]
Con RAG
Usuario: "Cual es la politica de vacaciones de mi empresa?"
Sistema RAG:
1. Busca en documentos de RRHH
2. Encuentra: politica_vacaciones_2026.pdf
3. Extrae: "20 dias habiles + 5 por antiguedad"
LLM + Contexto: "Segun la politica vigente, tienes 20 dias
habiles de vacaciones, mas 5 adicionales
por tus 3 anos de antiguedad. El proceso
de solicitud es..."
[Respuesta especifica con datos reales]
Como funciona
┌─────────────────────────────────────────────────────────────┐
│ ARQUITECTURA RAG │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. INDEXACION (preparacion, una vez) │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Documentos → Chunks → Embeddings → Vector DB │ │
│ │ │ │
│ │ PDF, Word, Wiki Fragmentos Vectores numericos │ │
│ │ Confluence, Notion de ~500 tokens representando │ │
│ │ Codigo, FAQs significado │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ 2. CONSULTA (cada pregunta) │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Pregunta ──→ Embedding ──→ Busqueda Vectorial │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ "Como [0.2, 0.8, Top 5 chunks │ │
│ │ configuro 0.1, ...] mas similares │ │
│ │ el SSO?" │ │
│ │ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ 3. GENERACION │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Prompt = Pregunta + Contexto recuperado │ │
│ │ │ │
│ │ "Basandote en esta documentacion: │ │
│ │ [chunk1] [chunk2] [chunk3] │ │
│ │ Responde: Como configuro el SSO?" │ │
│ │ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ LLM genera respuesta fundamentada │ │
│ │ │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Componentes clave
| Componente | Funcion | Ejemplos |
|---|---|---|
| Embeddings | Convertir texto a vectores | OpenAI Ada, Cohere, Sentence-BERT |
| Vector DB | Almacenar y buscar vectores | Pinecone, Weaviate, Chroma, pgvector |
| Chunking | Dividir documentos | Por parrafos, semantico, hibrido |
| Reranking | Mejorar relevancia | Cohere Rerank, Cross-encoders |
| LLM | Generar respuesta | GPT-4, Claude, Llama |
Caso practico: Chatbot de soporte
// Ejemplo simplificado con LangChain
import { OpenAIEmbeddings } from "langchain/embeddings/openai";
import { PineconeStore } from "langchain/vectorstores/pinecone";
import { ChatOpenAI } from "langchain/chat_models/openai";
// 1. Buscar documentos relevantes
const vectorStore = await PineconeStore.fromExisting(
new OpenAIEmbeddings(),
{ pineconeIndex }
);
const relevantDocs = await vectorStore.similaritySearch(
"Como reseteo mi password?",
5 // top 5 resultados
);
// 2. Generar respuesta con contexto
const llm = new ChatOpenAI({ modelName: "gpt-4" });
const response = await llm.invoke([
{
role: "system",
content: `Eres un agente de soporte. Usa SOLO esta informacion:
${relevantDocs.map(d => d.pageContent).join('\n\n')}`
},
{
role: "user",
content: "Como reseteo mi password?"
}
]);
Ventajas vs Fine-tuning
| Aspecto | RAG | Fine-tuning |
|---|---|---|
| Actualizacion | Instantanea | Requiere re-entrenar |
| Costo | Bajo (solo inference) | Alto (entrenamiento) |
| Trazabilidad | Cita fuentes | ”Caja negra” |
| Datos privados | Permanecen locales | Se incorporan al modelo |
| Mejor para | FAQ, documentacion | Tono, formato especifico |
Mejores practicas
Do
- Usar chunks de 200-500 tokens
- Implementar reranking para mejor precision
- Incluir metadatos (fecha, fuente, autor)
- Versionar tus indices
- Filtrar por relevancia minima
Dont
- Chunks muy grandes (pierde relevancia)
- Chunks muy pequenos (pierde contexto)
- Ignorar la calidad de documentos fuente
- Omitir el manejo de “no se”
Metricas importantes
┌────────────────────────────────────────┐
│ KPIs PARA RAG │
├────────────────────────────────────────┤
│ │
│ Retrieval: │
│ - Precision@K: % relevantes en top K │
│ - Recall: % documentos encontrados │
│ - MRR: Posicion del primer relevante │
│ │
│ Generation: │
│ - Faithfulness: Fidelidad al contexto│
│ - Answer relevancy: Util para user │
│ - Hallucination rate: Invenciones │
│ │
└────────────────────────────────────────┘
Terminos relacionados
- [[LLM]] - El modelo que genera las respuestas
- [[Agentic AI]] - Agentes que usan RAG para tareas complejas
- [[MCP]] - Protocolo para conectar RAG a multiples fuentes
Recuerda: RAG es tan bueno como tus documentos. Garbage in, garbage out. Invierte en la calidad y organizacion de tu base de conocimiento.