02-05-02 — Limitações dos LLMs: alucinação, knowledge cutoff, contexto finito e vieses

⏱ 15 min Fontes validadas em: 2026-04-29

TL;DR

LLMs têm quatro limitações estruturais que você precisa considerar em toda arquitetura: alucinação (inventam fatos com confiança), knowledge cutoff (não sabem o que aconteceu depois do treinamento), contexto finito (não "lembram" de conversas longas) e vieses (refletem o viés dos dados de treino). Cada uma tem mitigações conhecidas — a questão é saber quando aplicá-las.

1. Alucinação

O modelo gera conteúdo factualmente incorreto com o mesmo tom de confiança de quando está correto. Não é bug — é consequência direta da arquitetura: o modelo foi treinado para gerar sequências plausíveis, não para verificar fatos.

Por que acontece

O modelo não tem acesso à "verdade". Ele tem parâmetros que codificam associações estatísticas entre tokens. Quando questionado sobre algo que não está bem representado no treinamento, ele extrapola — gerando texto que parece certo mas pode ser completamente falso.

Tipos de alucinação

  • Factual: datas, nomes, estatísticas inventadas. "O CPF do João é 123.456.789-00." (inventado)
  • Referências: citar artigos acadêmicos, leis ou processos que não existem com DOIs plausíveis.
  • Raciocínio: erro em cadeia lógica apresentado com confiança total.
  • Código: APIs inexistentes, parâmetros errados, imports de bibliotecas que não existem.
⚠️ Alucinação aumenta com temperatura alta. Para qualquer caso de uso que exija precisão factual, use temperature ≤ 0.3 e implemente verificação externa. Nunca apresente output de LLM como fato em domínios críticos (jurídico, médico, financeiro) sem validação humana ou por fonte autoritativa.

Mitigações para alucinação

  • RAG (Retrieval-Augmented Generation): forneça os fatos no contexto. O modelo responde com base no documento, não na memória paramétrica.
  • Grounding: instrua explicitamente: "Responda apenas com base nos documentos fornecidos. Se não souber, diga 'não encontrado'."
  • Structured output: use JSON Schema ou function calling para forçar formato — mais fácil de validar programaticamente.
  • Temperature baixa: 0.0–0.2 para tarefas factuais.
  • Verificação: pipelines críticos devem cruzar dados do LLM com fontes externas antes de exibir ao usuário.

2. Knowledge cutoff

O modelo só sabe o que estava nos dados de treinamento até a data de corte. Eventos, leis, tecnologias e pessoas posteriores a essa data são desconhecidos.

ModeloKnowledge cutoff (aprox.)
GPT-4oOutubro 2023
Claude 3.5 SonnetAbril 2024
Gemini 1.5 ProNovembro 2023
Llama 3.1Dezembro 2023

Mitigações para knowledge cutoff

  • RAG com fontes atualizadas: indexe documentos recentes e forneça no contexto.
  • Web search tools: GPT-4o com browsing, Claude com web tool, Gemini com Search grounding.
  • Informar a data atual no system prompt: o modelo pode raciocinar melhor sobre o que sabe ou não sabe.
  • Fine-tuning periódico: para domínios com atualização frequente, re-treine com dados novos.
# Boa prática: fornecer data atual no system prompt
from datetime import date

system_prompt = f"""Você é um assistente de pesquisa.
Data atual: {date.today().strftime("%d/%m/%Y")}.
Seu conhecimento tem um cutoff e pode não incluir eventos recentes.
Quando não tiver certeza sobre informações recentes, informe explicitamente.
Baseie-se apenas nos documentos fornecidos para fatos específicos."""

3. Contexto finito (context window)

O modelo só "vê" o que está dentro da janela de contexto atual. Não há memória persistente entre conversas — cada chamada começa do zero.

Tamanhos de contexto atuais

  • GPT-4o: 128K tokens (~100K palavras, ~300 páginas)
  • Claude 3.5: 200K tokens
  • Gemini 1.5 Pro: 1M tokens (experimental)
  • Phi-3 Mini: 128K tokens
💡 "Lost in the middle". Pesquisa da Stanford mostrou que modelos performam pior para informações no meio de contextos longos — lembram melhor o início e o fim. Para RAG, coloque as informações mais relevantes próximas ao final do contexto (antes da pergunta do usuário).

Mitigações para contexto finito

  • Memória externa: salve o histórico da conversa num banco vetorial; recupere apenas os turnos mais relevantes.
  • Summarização progressiva: comprima turnos antigos com o próprio LLM para liberar espaço.
  • RAG com chunking eficiente: divida documentos em chunks de 500–1000 tokens e recupere apenas os K mais relevantes.
  • Sessões independentes: para tarefas que não precisam de histórico, não acumule contexto desnecessariamente.

4. Vieses

LLMs são treinados em dados da internet — que refletem os vieses da humanidade: racial, de gênero, geográfico, político, temporal. O modelo amplifica o que está nos dados.

Tipos de viés relevantes

  • Cultural/geográfico: tendência a responder com perspectiva ocidental, anglófona.
  • Temporal: sobrerrepresenta eventos recentes do período de treinamento.
  • Confirmação: tende a concordar com a perspectiva implícita do prompt.
  • Grupo: associações estereotipadas com gênero, etnia, profissão.

Mitigações para vieses

  • System prompts explícitos: instrua o modelo a ser neutro, considerar múltiplas perspectivas.
  • Avaliação diversa: inclua usuários de diferentes backgrounds nos testes.
  • Red-teaming: teste ativamente com prompts que podem expor vieses.
  • Content filtering: use ferramentas de moderação como o Azure Content Safety.
🏢 Azure AI Content Safety. Serviço dedicado da Microsoft para detectar conteúdo prejudicial em texto e imagem. Oferece: detecção de hate speech, violência, conteúdo sexual e automutilação com scores por categoria; prompt shield (detecta jailbreaks e injection); groundedness detection (detecta alucinações em respostas com base em documentos). API independente ou integrada ao Azure OpenAI Service.
import os
from azure.ai.contentsafety import ContentSafetyClient
from azure.ai.contentsafety.models import AnalyzeTextOptions
from azure.core.credentials import AzureKeyCredential

client = ContentSafetyClient(
    endpoint=os.environ["CONTENT_SAFETY_ENDPOINT"],
    credential=AzureKeyCredential(os.environ["CONTENT_SAFETY_KEY"])
)

# Analisa texto antes de enviar ao LLM (prompt shield)
# ou depois de receber resposta (output moderation)
response = client.analyze_text(
    AnalyzeTextOptions(
        text="Texto a ser analisado",
        categories=["Hate", "Violence", "SelfHarm", "Sexual"],
        output_type="FourSeverityLevels"
    )
)

for result in response.categories_analysis:
    if result.severity >= 2:  # 0=safe, 2=low, 4=medium, 6=high
        print(f"⚠️ {result.category}: severity {result.severity}")
        # Bloquear ou escalar para revisão humana

Resumo: limitações e mitigações

LimitaçãoMitigação principalCusto/complexidade
AlucinaçãoRAG + groundingMédio
Knowledge cutoffRAG / web searchBaixo-médio
Contexto finitoMemória vetorial + summarizaçãoMédio
ViesesContent Safety + red-teamingMédio-alto

Como isso se conecta

  • 02-05-01 — Temperatura alta aumenta alucinação
  • 02-05-03 — Desafio: observe alucinação com temperature alta
  • → Módulo 05 — RAG: solução principal para alucinação e knowledge cutoff
  • → Módulo 03 — Prompt Engineering: como prompts bem escritos reduzem alucinação

Fontes

  1. Lost in the Middle: How Language Models Use Long Contexts — Liu et al., 2023
  2. Hallucinations in Large Language Models: A Survey
  3. Microsoft Docs — Azure AI Content Safety
  4. Siren's Song in the AI Ocean: A Survey on Hallucination in Large Language Models
  5. Anthropic Research — Measuring Faithfulness in Chain-of-Thought Reasoning