RAG no WhatsApp: 5 Padrões de Arquitetura Para Agentes (2026)
Voltar para o Blog
Artigo

RAG no WhatsApp: 5 Padrões de Arquitetura Para Agentes (2026)

Mafra
22/04/2026
5 min de leitura

Por que seu chatbot inventa respostas (e como parar)?

Você subiu um PDF no chatbot, configurou o RAG e o agente começou a responder. Problema: metade das respostas são precisas, a outra metade são alucinações confiantes. O cliente pergunta o preço do plano Enterprise e o bot inventa "R$ 497/mês" quando na verdade é R$ 997. A culpa não é do LLM. É da arquitetura de RAG.

RAG (Retrieval-Augmented Generation) é a técnica que alimenta o LLM com dados relevantes antes de gerar a resposta. Mas a qualidade do RAG depende 100% de como você implementa cada camada: chunking, embedding, retrieval e geração. Segundo a ChatRAG, a escolha do modelo de embedding impacta mais a qualidade do que o tamanho do chunk ou a quantidade de resultados.

Estes são os 5 padrões de arquitetura que funcionam em produção para agentes no WhatsApp.

Padrão 1 - Chunking semântico (não por tamanho fixo)

O erro mais comum: dividir documentos em chunks de 500 tokens de forma mecânica, cortando parágrafos no meio. O resultado são chunks que misturam dois assuntos, e o retrieval traz contexto irrelevante.

Como fazer certo

  • Quebre por fronteiras naturais: parágrafos, seções (h2/h3), quebras de tópico
  • Tamanho ideal: comece com 250 tokens (~1.000 caracteres), ajuste com testes
  • Overlap de 10-20%: repita as últimas 2-3 frases do chunk anterior no próximo, evitando cortar informação importante na fronteira

Em 2026, o estado da arte é context-aware partitioning: modelos analisam embeddings de frases adjacentes para decidir onde cortar, conforme documentado pela Braincuber. Mas para a maioria dos chatbots, chunking por parágrafo com overlap resolve 90% dos problemas.

Exemplo prático

// Chunking por seções de um documento Markdown
function chunkBySection(markdown) {
  const sections = markdown.split(/(?=^## )/gm);
  return sections.map(section => ({
    content: section.trim(),
    tokens: estimateTokens(section),
    metadata: {
      heading: section.match(/^## (.+)/)?.[1] || 'intro',
      source: 'catalogo-produto.md'
    }
  }));
}

Padrão 2 - Retrieval híbrido (semântico + keyword)

Busca puramente semântica (por embedding) é boa para perguntas conceituais ("como funciona o agendamento?"). Mas falha em perguntas com termos específicos ("qual o código do plano PRO-300?"). A busca por keyword (BM25) pega exatamente essas queries.

Dado-chave: As melhores implementações de RAG em 2026 combinam busca semântica e keyword, segundo AetherLink. A combinação reduz casos de "documento relevante não encontrado" em até 40%.

Como implementar

// Retrieval híbrido: semântico + keyword
async function hybridRetrieve(query, topK = 5) {
  const [semanticResults, keywordResults] = await Promise.all([
    vectorStore.similaritySearch(query, topK),
    fullTextSearch(query, topK)
  ]);

  // Merge e deduplica, priorizando docs que aparecem em ambos
  return mergeAndRank(semanticResults, keywordResults);
}

Ferramentas como Supabase (pgvector + full-text search) e Elasticsearch oferecem ambos os métodos na mesma query.

Padrão 3 - Parent-child chunking

O problema do chunking granular: chunks pequenos são ótimos para precisão no retrieval, mas ruins para contexto na geração. O LLM recebe um trecho de 200 tokens e não entende o contexto geral.

A solução é o padrão parent-child:

  • Child chunks (pequenos): usados para busca (alta precisão)
  • Parent chunks (grandes): enviados ao LLM quando um child faz match (contexto rico)

Exemplo: o child chunk contém "Plano Enterprise: R$ 997/mês". O match é preciso. Mas o parent chunk que vai pro LLM contém toda a seção de pricing com os 3 planos, limites e features. O agente responde com contexto completo.

Quando usar cada tipo

FAQ com perguntas diretas → Flat (chunk único). Cada Q&A é autocontida.

Documentação técnica → Parent-child. Contexto da seção importa para a resposta.

Catálogo de produtos → Parent-child. Preço isolado sem features gera confusão.

Políticas e termos → Parent-child. Cláusulas dependem do contexto geral.

Padrão 4 - Metadata filtering (pré-filtragem por contexto)

Se seu agente atende múltiplos produtos, departamentos ou idiomas, buscar em toda a base a cada query é desperdício. Metadata filtering restringe a busca antes do retrieval semântico.

// Filtrar por departamento antes de buscar
const results = await vectorStore.similaritySearch(query, 5, {
  filter: {
    department: conversation.department, // "vendas" ou "suporte"
    language: "pt-BR",
    product: conversation.product // "plano-starter"
  }
});

Benefícios: retrieval mais rápido, resultados mais relevantes, menos tokens consumidos (chunks irrelevantes não entram no contexto).

Padrão 5 - Guardrails de alucinação

Mesmo com RAG bem implementado, o LLM pode alucinar. O último padrão é uma camada de proteção que detecta e bloqueia respostas inventadas.

3 guardrails que funcionam

Grounding check: instrua o LLM a citar qual chunk usou na resposta. Se não conseguir citar, está alucinando.

Confidence threshold: se o similarity score dos chunks recuperados for baixo (<0,7), o agente responde "não tenho essa informação" em vez de inventar.

Forbidden patterns: regex ou regras que bloqueiam respostas com preços, prazos ou garantias que não estão na base.

// Guardrail: bloquear resposta se confiança baixa
const results = await retrieve(query);
const maxScore = Math.max(...results.map(r => r.score));

if (maxScore < 0.7) {
  return "Não encontrei essa informação na nossa documentação. "
       + "Vou encaminhar para o time te responder.";
}

// Se confiança alta, enviar para o LLM com os chunks
return await generateResponse(query, results);

Como a Verboo implementa RAG?

Na Verboo, você não precisa implementar nenhum desses padrões manualmente. A plataforma resolve cada camada:

  • Chunking: automático por tipo de documento (PDF, Markdown, URL), com parent-child para documentação técnica
  • Embedding: modelos otimizados para português e multi-idioma
  • Retrieval: híbrido (semântico + keyword) com metadata filtering por agente
  • Guardrails: confidence threshold configurável, grounding nativo

Você sobe o arquivo. A Verboo cuida da arquitetura. 730 agentes em produção, +168 mil conversas, latência abaixo de 500ms.

+168 mil conversas processadas com menos de 500ms de latência. Conheça a plataforma.

Gostou deste artigo?
Compartilhe conhecimento com sua rede.
Leia também

Artigos relacionados