- IA
- RAG
- Engenharia
RAG para suporte ao cliente: como tornar as respostas da IA realmente precisas
Um LLM sozinho inventa respostas plausíveis. A geração aumentada por recuperação (RAG) ancora a IA no seu próprio conteúdo. Veja como o AskAIs faz isso, passo a passo.
Equipe AskAIs
7 min de leitura
Pergunte a um LLM sozinho “como redefino minha senha?” e você recebe uma resposta plausível que provavelmente está errada: outro botão, outro fluxo, outra URL. O RAG (geração aumentada por recuperação) resolve isso colocando os trechos certos do seu próprio conteúdo no prompt antes de o modelo responder.
O pipeline em resumo
Três etapas: ingestão, recuperação, geração.
1. Ingestão
- Envie arquivos PDF, DOCX, TXT, Markdown, CSV ou JSON, rastreie seu site ou adicione pares de Q&A em Training.
- O worker extrai o texto e o divide em trechos de cerca de 2.000 caracteres (aproximadamente 500 tokens), com sobreposição de 200 caracteres. Cada par de Q&A continua sendo um único trecho.
- Cada trecho recebe um embedding de
text-embedding-3-small(1.536 dimensões). - Os trechos são armazenados no PostgreSQL com a extensão
pgvectore um índice HNSW para distância de cosseno.
2. Recuperação
Quando a mensagem de um visitante precisa de fatos, geramos o embedding das mensagens recentes dele e fazemos uma busca por distância de cosseno nos trechos do espaço de trabalho. Saudações e conversa fiada pulam esta etapa. Uma versão simplificada da consulta:
-- Simplified. The real query also checks that the document is
-- ready, enabled, in date and visible on the visitor's platform.
SELECT c.id, c.content,
1 - (c.embedding <=> $1::vector) AS similarity
FROM knowledge_chunks c
WHERE c.tenant_id = $2
ORDER BY c.embedding <=> $1::vector
LIMIT $3; -- 3 × top-K candidates, re-ranked afterwardsBuscamos três vezes mais candidatos do que o necessário, reordenamos, descartamos tudo o que fica abaixo do limite de similaridade (cerca de 0,3), mantemos no máximo dois trechos por documento e passamos os cinco melhores (por padrão) para o modelo.
3. Geração
Os trechos são anexados ao prompt de sistema dentro de um bloco de referência delimitado. O modelo é instruído a tratar esse bloco como dados, não como instruções, a usar só as referências que respondem à pergunta e a não inventar fatos sobre o produto que não estejam ali.
Se um visitante pergunta sobre um fato do produto e nada relevante é encontrado, o modelo nem é chamado: o visitante é informado de que a informação não está disponível, e o chat vai para uma pessoa, a menos que a transferência automática esteja desativada.
Como manter o custo baixo
Três coisas deixam uma base de conhecimento grande com custo acessível:
- Cache de embeddings: o mesmo texto de busca recebe o mesmo embedding. A chave é o nome do modelo mais um hash SHA-1 do texto, guardada no Redis por 24 horas.
- Cache de prompt: para modelos Claude, a requisição pede à Anthropic que armazene o prompt em cache, e a OpenAI armazena prompts longos em cache automaticamente. O bloco de referência muda a cada resposta, então quem mais se beneficia é a parte fixa do prompt.
- Pulo baseado em limite: se nenhum trecho passa do limite, nada é adicionado ao prompt.
Quando o RAG não basta
O RAG lida bem com perguntas do tipo “como faço…?”. Ele não consegue responder “onde está meu pedido?”, porque esses dados não estão nos seus documentos.
Para isso, o AskAIs tem as Custom tools: você descreve um endpoint HTTP no seu próprio sistema, como pedidos, reservas ou estoque, e a IA pode chamá-lo enquanto escreve a resposta. Perguntas gerais são respondidas com base no seu conhecimento, perguntas pessoais com base nos seus sistemas, e o resto vai para a sua equipe.