RAG Explicado para Desarrolladores: Qué es, cómo funciona y cuándo usarlo
Los LLM responden muy bien, pero tienen un límite claro: no conocen tus datos privados, pueden estar desactualizados y a veces inventan respuestas.
RAG (Retrieval Augmented Generation) soluciona eso sin reentrenar el modelo: antes de responder, recupera contexto relevante desde tu base documental y se lo pasa al LLM.
Si trabajas en producto, soporte, documentación o asistentes internos, esta técnica suele ser el punto de inflexión entre un demo y algo útil en producción.
RAG en una frase
RAG = buscar contexto relevante + generar respuesta con ese contexto.
No cambia el modelo base. Cambia la calidad del contexto que recibe.
Problema que resuelve
Sin RAG:
- El modelo responde con conocimiento general.
- No puede consultar políticas internas, contratos o manuales propios.
- Hay más riesgo de alucinación.
Con RAG:
- Las respuestas se apoyan en documentos reales de tu sistema.
- Puedes citar fuentes.
- Mejoras precisión y trazabilidad.
Arquitectura mínima
Un sistema RAG típico tiene estos bloques:
- Ingesta: cargas documentos (PDF, markdown, tickets, wiki).
- Chunking: los partes en fragmentos pequeños con solapamiento.
- Embeddings: conviertes cada fragmento en vectores numéricos.
- Vector DB: guardas vectores + metadatos.
- Retrieval: ante una pregunta, buscas los fragmentos más similares.
- Prompt final: envías pregunta + contexto recuperado al LLM.
- Respuesta: el modelo responde basado en ese contexto.
Flujo paso a paso
1) Indexación (offline)
Proceso que haces una vez (o cada vez que cambian documentos):
- Extraer texto limpio.
- Dividir en chunks de tamaño razonable (ej: 400 a 800 tokens).
- Generar embedding por chunk.
- Guardar en base vectorial con metadatos:
document_idtituloseccionfechaurl_fuente
2) Consulta (online)
Cuando el usuario pregunta:
- Generas embedding de la pregunta.
- Buscas top-k chunks más cercanos (ej: k=5).
- Opcional: re-rankeas resultados.
- Construyes prompt con instrucciones + contexto + pregunta.
- El LLM responde.
Ejemplo mental rápido
Pregunta: “¿Cuál es nuestra política de reembolso para planes anuales?”
RAG hace esto:
- Busca en tus documentos internos chunks relacionados con “reembolso” y “anual”.
- Inserta esos chunks en el prompt.
- El modelo responde usando ese material, no memoria genérica.
Plantilla de prompt recomendada
Sistema:
Responde solo usando el contexto proporcionado.
Si falta información, di explícitamente "No lo encontré en las fuentes".
Incluye al final las fuentes usadas.
Contexto recuperado:
[chunk_1]
[chunk_2]
[chunk_3]
Pregunta del usuario:
{pregunta}
Regla clave: cuando el contexto es insuficiente, es mejor una respuesta honesta que una inventada.
Ejemplo mínimo (pseudocódigo)
query = "¿Cómo restablezco la contraseña?"
# 1) Embedding de la pregunta
q_vec = embed(query)
# 2) Retrieval top-k
chunks = vector_db.search(q_vec, top_k=5, filters={"producto": "saas"})
# 3) Armar contexto
context = "\n\n".join([c.text for c in chunks])
# 4) Generación
prompt = build_prompt(context=context, question=query)
answer = llm.generate(prompt)
return {
"answer": answer,
"sources": [c.metadata["url_fuente"] for c in chunks]
}
Métricas que sí importan
No evalúes solo “suena bien”. Mide:
- Recall de retrieval: si trae los chunks correctos.
- Groundedness: si la respuesta realmente está soportada por contexto.
- Tasa de “no sé”: mejor una negativa correcta que una alucinación.
- Latencia total: búsqueda + re-rank + generación.
Errores comunes al implementar RAG
- Chunks demasiado grandes: baja precisión en recuperación.
- Sin metadatos: luego no puedes filtrar ni citar fuentes.
- Top-k fijo para todo: cada caso requiere ajuste.
- No versionar índice: respuestas inconsistentes tras actualizar docs.
- Prompt sin reglas de abstención: aumenta alucinaciones.
Cuándo usar RAG y cuándo no
Usa RAG cuando:
- Tienes base documental cambiante.
- Necesitas respuestas trazables.
- El conocimiento está fuera del modelo base.
No es la mejor opción cuando:
- El problema requiere cálculo determinista estricto (conviene lógica clásica).
- Tus datos son mínimos y estables (puede bastar prompt engineering simple).
Checklist para empezar en serio
- Define casos de uso y umbral de calidad.
- Crea pipeline de ingesta reproducible.
- Añade metadatos desde el día 1.
- Implementa evaluación offline con preguntas reales.
- Habilita logs de consulta, chunks recuperados y respuesta final.
RAG no es magia. Es ingeniería de contexto. Cuando está bien diseñado, convierte un LLM genérico en un asistente realmente útil para tu dominio.