Cuándo RAG sigue siendo necesario
Casos de uso que justifican RAG en 2024+
El cambio de paradigma
Con ventanas de contexto de 100K-1M+ tokens, la pregunta pasó de "¿cómo usar RAG?" a "¿cuándo sigue teniendo sentido RAG?". RAG dejó de ser la solución estándar para convertirse en una herramienta específica.
✅ RAG sigue teniendo sentido
- • Datos en tiempo real: Precios, inventario, estado
- • Base > 1M tokens: Cuando excede el contexto
- • Multiinquilino: Datos aislados por usuario
- • Costo: Long context es costoso para datos que se usan rara vez
- • Actualización frecuente: Datos que cambian constantemente
❌ Un contexto largo es mejor
- • La documentación fija: Manuales, políticas, especificaciones
- • Bases de código: Código fuente del proyecto
- • Análisis profundo: Cuando necesitas verlo todo junto
- • Consistencia: Respuestas que dependen de varios documentos
- • Contexto enriquecido: Las sutilezas y las interrelaciones importan
Matriz de Decisión RAG vs Long Context
| Criterio | RAG | Long Context |
|---|---|---|
| Los datos cambian constantemente | ✓ | — |
| Volumen > 1M tokens | ✓ | — |
| Se necesita la máxima precisión | — | ✓ |
| Análisis de relaciones entre documentos | — | ✓ |
| Importa el costo por consulta | ✓ | — |
RAG como complemento al Long Context
Integración inteligente de enfoques
La arquitectura moderna no elige entre RAG y Long Context: los combina estratégicamente. Cada uno tiene su papel en el sistema de contexto.
Arquitectura complementaria
┌─────────────────────────────────────────────┐ │ SYSTEM CONTEXT (Long Context - Fixo) │ │ • Identidade, regras, políticas │ │ • Skills disponíveis │ │ • Formato de resposta esperado │ ├─────────────────────────────────────────────┤ │ GLOBAL CONTEXT (Long Context - Sessão) │ │ • Documentação do projeto │ │ • Codebase relevante │ │ • Histórico resumido │ ├─────────────────────────────────────────────┤ │ DYNAMIC CONTEXT (RAG - Por query) │ │ • Dados em tempo real │ │ • Resultados de busca │ │ • Informações específicas do momento │ ├─────────────────────────────────────────────┤ │ USER QUERY │ └─────────────────────────────────────────────┘
🏗️ Fundamentos
Long Context para todo lo que sea estable: identidad, reglas, documentación base.
🔄 Dinámico
RAG para datos que cambian: precios, estado, novedades, datos externos.
⚡ Bajo demanda
RAG activado por necesidad: búsqueda activada por keywords o skill.
Ejemplo: asistente de soporte
Inyección selectiva de conocimiento
Precisión sobre cantidad
El Problema del RAG Tradicional
El RAG clásico recupera fragmentos por similitud semántica, pero no siempre lo más «similar» es lo más «relevante». La inyección selectiva resuelve esto.
Estrategias de inyección selectiva
1. Inyección por clasificación de intención
# Primeiro: classificar a intenção
intent = classify_intent(user_query)
# → "troubleshooting" | "how_to" | "pricing" | "status"
# Depois: recuperar da fonte correta
if intent == "troubleshooting":
context = retrieve_from("knowledge_base/errors")
elif intent == "pricing":
context = retrieve_from("pricing_api", realtime=True)
elif intent == "status":
context = retrieve_from("orders_db", user_id=user.id)
2. Inyección por Skill activo
# Skill determina o que precisa
skill = "code_review"
required_context = skill.required_context()
# → ["file_content", "project_conventions", "recent_changes"]
# Injetar apenas o necessário
for ctx_type in required_context:
inject_context(ctx_type, scope=skill.scope)
3. Inyección condicional
# Injetar apenas se necessário
if mentions_product(query):
inject("product_specs", lazy=True)
if mentions_policy(query):
inject("company_policies", section=detect_policy_type(query))
if requires_calculation(query):
inject("pricing_formulas")
inject("current_rates", source="api", cache=60s)
Beneficios de la selectividad
Contexto híbrido (fijo + recuperado)
Lo mejor de ambos mundos
El contexto híbrido combina la estabilidad del Long Context con la dinamismo del RAG, creando sistemas que son al mismo tiempo consistentes y actualizados.
Anatomía del contexto híbrido
Estándar: Context Window Budget
Estrategias de gestión
Eliminar el contexto menos prioritario cuando se exceda el presupuesto
Cargar contexto solo cuando sea necesario
Comprimir el historial antiguo en resúmenes
Ejemplo práctico: asistente de comercio electrónico
context_budget = ContextBudget(total=100_000)
# Camada fixa (sempre presente)
context_budget.allocate("system",
content=system_prompt + skills_definition,
priority=CRITICAL, evictable=False)
# Camada por sessão
context_budget.allocate("catalog_summary",
content=get_catalog_summary(),
priority=HIGH, evictable=True)
# Camada dinâmica (por query)
if user_query.mentions_product():
context_budget.allocate("product_details",
content=rag.retrieve(user_query, top_k=5),
priority=MEDIUM, evictable=True)
if user_query.mentions_order():
context_budget.allocate("order_status",
content=api.get_order(user.current_order),
priority=HIGH, evictable=True)
Reducción de alucinaciones mediante contexto
Fundamentación en hechos concretos
Por qué alucinan los LLM
Las alucinaciones ocurren cuando el modelo necesita llenar vacíos de conocimiento. La solución no es pedir «no alucines», sino proporcionar el contexto que elimina las lagunas.
El modelo inventa datos que desconoce
El prompt implica que debe haber una respuesta
Estrategias de grounding
1. Contexto autoritativo
Proporciona explícitamente la fuente de verdad, con instrucciones para usarla.
{product_data} Responda APENAS com informações presentes em PRODUCT_DATABASE. Se a informação não estiver disponível, diga "Não encontrei essa informação no catálogo."
2. Cita obligatoria
Obliga al modelo a citar sus fuentes, evitando invenciones.
Cada afirmación factual debe incluir [fuente: documento#sección]. Si no puedes citar una fuente del contexto proporcionado, marca como [fuente: conocimiento general] u omite la afirmación.
3. Permiso para decir "No sé"
Reduce la presión para inventar respuestas.
Es perfectamente aceptable responder: - "No tengo esa información" - "Tendría que verificarlo en el sistema" - "Puedo ayudarte con X, pero no tengo datos sobre Y" Las respuestas parciales son mejores que las respuestas inventadas.
Framework anti-alucinación
Evaluación de la calidad contextual
Métricas y diagnóstico
¿Cómo saber si tu contexto está funcionando? Las métricas específicas ayudan a diagnosticar problemas y optimizar el sistema de contexto.
Métricas de calidad
% del contexto utilizado efectivamente en la respuesta
% de preguntas respondidas con el contexto disponible
% de respuestas factualmente correctas
Tokens usados frente a la calidad de la respuesta
Framework de diagnóstico
Diagnóstico: Contexto insuficiente o mal recuperado
Acción: Ampliar la base de conocimiento o mejorar la recuperación de información
Diagnóstico: Contexto presente pero ignorado, o lagunas
Acción: Mejorar las instrucciones de grounding, agregar citas obligatorias
Diagnóstico: Contexto demasiado grande o mal organizado
Acción: Implementar inyección selectiva, comprimir el contexto estático
Diagnóstico: Conflictos en el contexto o falta de priorización
Acción: Establecer una jerarquía clara y resolver los conflictos desde el origen