Quando RAG Ainda é Necessário
Casos de uso que justificam RAG em 2024+
A Mudança de Paradigma
Com janelas de contexto de 100K-1M+ tokens, a pergunta mudou de "como usar RAG?" para "quando RAG ainda faz sentido?". RAG deixou de ser a solução padrão para se tornar uma ferramenta específica.
✅ RAG Ainda Faz Sentido
- • Dados em tempo real: Preços, estoque, status
- • Base > 1M tokens: Quando excede o contexto
- • Multi-tenant: Dados isolados por usuário
- • Custo: Long context é caro para dados raramente usados
- • Atualização frequente: Dados que mudam constantemente
❌ Long Context é Melhor
- • Documentação fixa: Manuais, políticas, specs
- • Codebases: Código fonte do projeto
- • Análise profunda: Quando precisa ver tudo junto
- • Consistência: Respostas dependem de múltiplos docs
- • Contexto rico: Nuances e interrelações importam
Matriz de Decisão RAG vs Long Context
| Critério | RAG | Long Context |
|---|---|---|
| Dados mudam constantemente | ✓ | — |
| Volume > 1M tokens | ✓ | — |
| Precisão máxima necessária | — | ✓ |
| Análise de relações entre docs | — | ✓ |
| Custo por query importa | ✓ | — |
RAG como Complemento ao Long Context
Integração inteligente de abordagens
A arquitetura moderna não escolhe entre RAG e Long Context — ela os combina estrategicamente. Cada um tem seu papel no sistema de contexto.
Arquitetura Complementar
┌─────────────────────────────────────────────┐ │ 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 │ └─────────────────────────────────────────────┘
🏗️ Fundação
Long Context para tudo que é estável: identidade, regras, documentação base.
🔄 Dinâmico
RAG para dados que mudam: preços, status, novidades, dados externos.
⚡ Sob Demanda
RAG triggered por necessidade: busca ativada por keywords ou skill.
Exemplo: Assistente de Suporte
Injeção Seletiva de Conhecimento
Precisão sobre quantidade
O Problema do RAG Tradicional
RAG clássico recupera chunks por similaridade semântica, mas nem sempre o mais "similar" é o mais "relevante". Injeção seletiva resolve isso.
Estratégias de Injeção Seletiva
1. Injeção por Classificação de Intent
# 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. Injeção por Skill Ativo
# 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. Injeção 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)
Benefícios da Seletividade
Contexto Híbrido (Fixo + Recuperado)
O melhor dos dois mundos
Contexto híbrido combina a estabilidade do Long Context com a dinamicidade do RAG, criando sistemas que são ao mesmo tempo consistentes e atualizados.
Anatomia do Contexto Híbrido
Padrão: Context Window Budget
Estratégias de Gestão
Remover contexto menos prioritário quando excede budget
Carregar contexto apenas quando necessário
Comprimir histórico antigo em resumos
Exemplo Prático: E-commerce Assistant
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)
Redução de Alucinação via Contexto
Grounding em fatos concretos
Por Que LLMs Alucinam
Alucinações acontecem quando o modelo precisa preencher lacunas de conhecimento. A solução não é pedir "não alucine" — é fornecer o contexto que elimina as lacunas.
Modelo inventa dados que não conhece
Prompt implica que deve haver resposta
Estratégias de Grounding
1. Contexto Autoritativo
Forneça a fonte de verdade explicitamente, com instruções para usá-la.
{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ção Obrigatória
Force o modelo a citar suas fontes, impedindo invenções.
Cada afirmação factual deve incluir [fonte: documento#seção]. Se não puder citar uma fonte do contexto fornecido, marque como [fonte: conhecimento geral] ou omita.
3. Permissão para "Não Sei"
Reduza a pressão para inventar respostas.
É perfeitamente aceitável responder: - "Não tenho essa informação" - "Precisaria verificar no sistema" - "Posso ajudar com X, mas não tenho dados sobre Y" Respostas parciais são melhores que respostas inventadas.
Framework Anti-Alucinação
Avaliação de Qualidade Contextual
Métricas e diagnóstico
Como saber se seu contexto está funcionando? Métricas específicas ajudam a diagnosticar problemas e otimizar o sistema de contexto.
Métricas de Qualidade
% do contexto efetivamente usado na resposta
% de perguntas respondidas com contexto disponível
% de respostas factualmente corretas
Tokens usados vs qualidade da resposta
Framework de Diagnóstico
Diagnóstico: Contexto insuficiente ou mal recuperado
Ação: Aumentar base de conhecimento ou melhorar retrieval
Diagnóstico: Contexto presente mas ignorado, ou lacunas
Ação: Melhorar instruções de grounding, adicionar citações obrigatórias
Diagnóstico: Contexto muito grande ou mal organizado
Ação: Implementar injeção seletiva, comprimir contexto estático
Diagnóstico: Conflitos no contexto ou falta de priorização
Ação: Estabelecer hierarquia clara, resolver conflitos na fonte