Capítulo 2: Quando Usar Fine-Tuning vs RAG
Fazendo a Escolha Certa para Seu Caso de Uso
Uma das decisões mais importantes no desenvolvimento de aplicações com LLM é escolher entre fine-tuning, RAG (Retrieval-Augmented Generation) ou apenas prompt engineering. Cada abordagem possui pontos fortes distintos.
As Três Abordagens
1. Prompt Engineering
Elaboração cuidadosa dos prompts de entrada para obter as respostas desejadas sem necessidade de treinamento.
2. RAG (Retrieval-Augmented Generation)
Recuperação de contexto relevante de um banco de dados e inclusão desse contexto no prompt.
3. Fine-Tuning
Treinamento do modelo com seus dados para internalizar novos conhecimentos ou comportamentos.
Estrutura de Decisão
Escolha Fine-Tuning Quando:
| Cenário | Por que Fine-Tuning Funciona |
|---|---|
| Ensinar um estilo ou tom específico | O estilo é internalizado, não apenas imitado |
| Formato de saída consistente | O modelo aprende profundamente a estrutura |
| Terminologia específica de domínio | A terminologia se torna natural para o modelo |
| Tarefa customizada difícil de promptar | O treinamento proporciona comportamento mais confiável |
| Redução do tamanho/custo do prompt | Os comportamentos são incorporados, não promptados |
Escolha RAG Quando:
| Cenário | Por que RAG Funciona |
|---|---|
| Conhecimento muda frequentemente | Basta atualizar o banco de dados |
| Necessidade de citações/fontes | A recuperação fornece rastreabilidade |
| Grande base de conhecimento | Não cabe no contexto ou no treinamento |
| Precisão factual é crítica | Fatos recuperados vs fatos aprendidos |
| Privacidade/controle de acesso | Controle sobre o contexto recuperado |
Escolha Prompt Engineering Quando:
| Cenário | Por que Prompting Funciona |
|---|---|
| Experimentação rápida | Não precisa de infraestrutura de treinamento |
| Mudanças simples de formato | Exemplos few-shot funcionam bem |
| Poucos casos de uso | Prompts podem cobrir cada caso |
| Orçamento limitado | Sem custos de treinamento ou de vector DB |
| Requisitos mudando rapidamente | Alterar o prompt ao invés de treinar novamente |
Comparação de Custos
| Abordagem | Custo de Setup | Custo por Consulta | Manutenção |
|---|---|---|---|
| Prompting | Baixo | Alto (prompts longos) | Baixo |
| RAG | Médio | Médio | Médio (atualizações do BD) |
| Fine-Tuning | Alto | Baixo (prompts mais curtos) | Alto (re-treinamento) |
Fine-tuning se torna mais econômico em escala. Se você faz milhões de chamadas de API, a economia com prompts mais curtos geralmente justifica o custo do fine-tuning.
Abordagens Híbridas
Na prática, as melhores soluções frequentemente combinam abordagens:
Fine-Tuning + RAG
# Fine-tune para estilo e formato
# Use RAG para recuperação de conhecimento
# 1. Recupere o contexto relevante
context = vector_db.search(query)
# 2. Use o modelo fine-tuned com o contexto recuperado
response = fine_tuned_model.generate(
f"Context: {context}\nQuery: {query}"
)
Benefícios:
- O modelo sabe usar a informação recuperada de forma eficaz
- Estilo e formato consistentes
- Conhecimento atualizado via recuperação
Fine-Tuning + Prompting
# Fine-tune para comportamento principal
# Prompt para variações
response = fine_tuned_model.generate(
f"Respond in a formal tone: {query}" # Prompt modifica o comportamento fine-tuned
)
Análise de Casos de Uso
Caso 1: Bot de Suporte ao Cliente
| Requisito | Melhor Abordagem |
|---|---|
| Voz e tom da empresa | Fine-Tuning |
| Informações sobre produtos | RAG |
| Modelos de resposta | Fine-Tuning |
| Anúncios recentes | RAG |
| Regras de escalonamento | Fine-Tuning |
Recomendação: Fine-tune para comportamento + RAG para conhecimento
Caso 2: Análise de Documentos Jurídicos
| Requisito | Melhor Abordagem |
|---|---|
| Terminologia jurídica | Fine-Tuning |
| Referências a jurisprudência | RAG |
| Formato de citação | Fine-Tuning |
| Decisões recentes | RAG |
| Estrutura do documento | Fine-Tuning |
Recomendação: Fine-tune para linguagem jurídica + RAG para base de casos
Caso 3: Assistente de Código
| Requisito | Melhor Abordagem |
|---|---|
| Estilo de codificação | Fine-Tuning |
| Contexto do código da empresa | RAG |
| APIs internas | RAG + Fine-Tuning |
| Boas práticas | Fine-Tuning |
| Documentação | RAG |
Recomendação: Abordagem híbrida para melhores resultados
Comparação Técnica
Memória e Conhecimento
| Aspecto | Fine-Tuning | RAG |
|---|---|---|
| Capacidade de conhecimento | Limitada pelo treinamento | Limitada pelo tamanho do BD |
| Atualização de conhecimento | Requer re-treinamento | Atualiza o banco de dados |
| Latência | Rápido (sem recuperação) | Mais lento (passo de recuperação) |
| Acurácia | Pode alucinar | Fontes citáveis |
| Escalabilidade | Mesmo custo em escala | Custos do BD crescem |
Quando o Conhecimento Importa
# RAG é melhor para consultas factuais
query = "What is our refund policy for Pro plan customers?"
# → Recupera do banco de políticas
# Fine-tuning é melhor para padrões comportamentais
query = "Respond to an angry customer about billing"
# → Modelo fine-tuned sabe o tom e abordagem corretos
Erros Comuns
❌ Fine-Tuning para Conhecimento Dinâmico
"Fizemos fine-tuning do nosso modelo com dados da empresa, mas já está desatualizado."
Solução: Use RAG para conhecimento que muda, fine-tune para comportamento.
❌ RAG para Estilo/Formato
"Nosso sistema RAG recupera a informação certa, mas as respostas são inconsistentes."
Solução: Fine-tune para estilo consistente, RAG para conteúdo.
❌ Over-Engineering com Fine-Tuning
"Passamos semanas fazendo fine-tuning quando prompting few-shot teria funcionado."
Solução: Comece com prompting, só faça fine-tuning se necessário.
❌ Ignorar a Opção Híbrida
"Tivemos que escolher entre RAG e fine-tuning."
Solução: Combine abordagens para melhores resultados.
Árvore de Decisão
Exemplo Prático: Construindo um Assistente Médico
Requisitos:
- Usar terminologia médica adequada
- Referenciar diretrizes de tratamento atuais
- Citar fontes para recomendações
- Seguir formatos de resposta compatíveis com HIPAA
Solução:
# 1. Fine-tune para linguagem e formato médico
model = load_finetuned_model("medical-assistant-v1")
# 2. RAG para diretrizes e pesquisas atuais
guidelines = medical_db.search(patient_query)
# 3. Geração combinada
prompt = f"""
You are a medical assistant. Use the following current guidelines:
{guidelines}
Patient Query: {patient_query}
Respond using proper medical terminology and cite your sources.
"""
response = model.generate(prompt)
Principais Aprendizados
✅ Fine-tuning é melhor para estilo, formato e comportamentos internalizados
✅ RAG é melhor para conhecimento dinâmico e fontes citáveis
✅ Prompting é melhor para iteração rápida e customização simples
✅ Abordagens híbridas frequentemente trazem os melhores resultados
✅ Considere custos tanto no setup quanto por consulta
✅ Adapte a abordagem aos requisitos do seu caso de uso
Próximos Passos
Agora vamos explorar o panorama dos métodos e ferramentas de fine-tuning em Capítulo 3: Panorama do Fine-Tuning.
Verificação Rápida
Antes de avançar, certifique-se de que você consegue responder:
- Quando você escolheria RAG em vez de fine-tuning?
- Quais são os trade-offs de custo entre as três abordagens?
- Como você projetaria um sistema de suporte ao cliente usando ambas as abordagens?