Capítulo 2.10 — RAG vs fine-tuning vs prompt engineering¶
🎯 Objetivo¶
Encerrar a falsa dicotomia "fine-tune ou RAG" e oferecer um critério operacional de escolha entre prompt engineering, RAG, fine-tuning, structured outputs, policy-as-code, distillation e model routing.
🧠 Princípio guia¶
A pergunta certa raramente é "fine-tune ou RAG?". A pergunta certa é:
O que está faltando no modelo para que ele faça o que eu preciso de forma confiável?
A resposta a essa pergunta aponta o mecanismo, e o mecanismo aponta a técnica.
| O que está faltando | Mecanismo certo |
|---|---|
| Conhecimento mutável (FAQ, docs, dados internos) | RAG |
| Formato rígido de saída (JSON/Pydantic) | Structured outputs + schema |
| Regras de negócio críticas | Policy-as-code + validação determinística |
| Estilo / voz / formato consistente | Fine-tuning leve (LoRA) ou few-shot estável |
| Reduzir custo de modelo grande para tarefa específica | Distillation |
| Escolher modelo por complexidade da query | Model routing |
| Tarefa repetitiva com dataset rotulado e latência apertada | ML tradicional ou fine-tuning |
| Reordenar resultados | Reranker |
| Garantir que ação só aconteça com permissão | Autorização (IAM/OAuth) + policy |
🚨 Anti-padrões frequentes¶
- Fine-tuning para inserir fatos. Conhecimento factual mutável vai para RAG ou tools. Fine-tuning para fatos envelhece em semanas e exige retreinar.
- Prompt como política de segurança. Prompt é instrução probabilística. Política crítica vai em código.
- RAG sem avaliação de retrieval. Promove-se um índice novo baseado em "intuição"; recall cai 20%; ninguém percebe até o incidente.
- Trocar modelo grande por modelo grande "diferente" sem antes examinar routing, RAG, prompt e structured outputs. Quase sempre há ganho mais barato antes do upgrade.
🧪 Heurística de decisão¶
- Antes de tudo, structured outputs + RAG + bom prompt. Resolve a maior parte dos casos.
- Routing entre modelos pequeno e grande quando a variabilidade de carga justifica. Reduz custo sem mexer em qualidade média.
- Fine-tuning apenas se houver eval mostrando que prompt + RAG não alcançam o resultado e que existe dataset estável o suficiente para treinar e manter.
- Distillation quando o modelo grande é custo dominante, há tarefa específica bem definida e existe orçamento para eval contínuo do student contra o teacher.
- Multi-agent / agente complexo apenas com workflow já esgotado.