RAG tem duas metades que vivem em fluxos separados. Uma prepara a base: você indexa os documentos (quebra em pedaços, vira números, guarda num vector store). A outra responde: a pergunta passa por um classificador que decide se vale a pena gastar o agente, o agente busca no vector store o trecho relevante e responde ancorado nesse trecho — e, quando não acha nada, ele cai num fallback honesto em vez de inventar.
Diagrama ilustrativo — a indexação (azul) é separada da consulta (ciano). O agente busca o trecho; quando nada é relevante, segue o ramo de fallback em vez de inventar.
❓ O problema: a IA não sabe o que não está no contexto
O que é
Um modelo de IA só responde sobre duas coisas: o que aprendeu no treinamento (conhecimento geral, com data de corte) e o que está no contexto daquela conversa (o que você colou ali). Ele não tem acesso mágico aos seus arquivos. Se você não colocar a política de troca, o FAQ ou o manual ao alcance dele, ele simplesmente não os conhece.
O que é?Contexto — a "janela" de texto que a IA enxerga numa conversa: instruções, mensagens e qualquer documento que você anexou. RAG — retrieval-augmented generation: o padrão de buscar o trecho certo dos seus dados e injetá-lo no contexto antes de a IA gerar a resposta.
O perigo é sutil: sem a fonte ao alcance, a IA não fica em silêncio — ela tende a preencher a lacuna, inventando um prazo, um valor ou uma regra que parecem plausíveis. Isso é alucinação. O RAG existe justamente para fechar essa lacuna: em vez de torcer para o modelo "lembrar" da sua política, você garante que o texto da política esteja no contexto na hora certa. Esse é o porquê de tudo o que vem a seguir neste módulo.
Por que aprender
Quem entende esse limite para de cobrar o impossível da IA e passa a alimentá-la com a informação certa. Em vez de "por que ele não sabe a minha política?", a pergunta vira "como eu coloco a minha política ao alcance dele?".
- •Sem fonte, sem verdade: a IA não inventa de propósito — ela preenche lacunas.
- •Dados seus = ao alcance: políticas, FAQ e manuais precisam entrar no contexto.
- •Fundamento do RAG: recuperar a fonte é o que ancora a resposta.
Conceitos-chave
A IA só vê o contexto.
Seus arquivos não entram sozinhos.
Sem fonte, ela preenche.
Recupera e ancora a resposta.
⚖️ System prompt vs vector store (quando cada um)
O que é
Há duas formas de dar conhecimento ao agente. No system prompt, você cola o texto inteiro direto nas instruções — o jeito mais simples e barato, ótimo para um documento pequeno e estável. No vector store (RAG), o agente busca só as seções relevantes a cada pergunta — escalável, indicado quando a base é grande ou cresce.
O que é?System prompt — o bloco de instruções fixo que define como o agente age; cabe texto, mas ocupa contexto sempre. Vector store — um repositório que guarda seus documentos prontos para busca por significado; o agente puxa só o pedaço necessário.
Por que aprender
Escolher errado custa caro de dois jeitos. Se você joga uma base enorme no system prompt, gasta contexto em toda chamada (mais token, mais lento) e ainda esbarra no teto da janela quando a base cresce. Se você monta um vector store para um único parágrafo, adiciona complexidade sem ganho. A regra prática: documento pequeno e fixo → system prompt; base grande ou que cresce → vector store.
✓ Vector store (escolha para escala)
- ✓Busca só o trecho relevante — não carrega a base toda.
- ✓Escala: dá para crescer de 5 para 500 documentos.
- ✓Menor custo de contexto por pergunta.
✗ Tudo no system prompt (não escala)
- ✗Carrega o documento inteiro em toda chamada.
- ✗Custa contexto (token) mesmo no que não foi perguntado.
- ✗Limita o crescimento: estoura a janela quando a base cresce.
🎯 Dica prática
Comece pelo mais simples: se for um FAQ de um parágrafo, cole no system prompt e teste. Só migre para vector store quando a base passar a ter várias seções ou começar a crescer — não monte indexador para algo que cabe em três linhas.
Conceitos-chave
Texto direto, barato, pequeno.
Busca o relevante, cresce bem.
Prompt cheio gasta token sempre.
Fixo e curto → prompt; grande → vector.
🧬 Embeddings & vector store em linguagem simples
O que é
Embedding é transformar um texto em números que capturam o significado. Frases parecidas em sentido viram conjuntos de números próximos, mesmo sem nenhuma palavra em comum. O vector store guarda esses números e, na hora da busca, encontra os trechos cujo significado mais se aproxima da pergunta — não por casar palavras exatas, mas por proximidade de sentido.
O que é?Embedding — uma lista de números (um "vetor") que representa o sentido de um texto. Busca por similaridade — achar os trechos cujos vetores estão mais perto do vetor da pergunta. Por isso "como devolvo um produto?" encontra um documento intitulado "Política de troca", mesmo sem a palavra "devolvo".
Diagrama ilustrativo — a busca compara distâncias no espaço de significado. Os pontos perto da pergunta (azul) viram os trechos recuperados; os longe (cinza) são ignorados.
Por que aprender
Esse é o motor que faz a busca "entender" a pergunta. Sem embeddings, você dependeria de o usuário usar exatamente as mesmas palavras do documento — frágil e cheio de falhas. Com embeddings, "quero meu dinheiro de volta" encontra a "Política de reembolso" porque o sentido bate. Saber disso explica por que o vector store acha o trecho certo e por que, às vezes, ele erra (quando o significado realmente está distante).
Conceitos-chave
Embedding captura o sentido.
Distância mede similaridade.
Busca por sentido, não por letra.
É o que faz o RAG "entender".
📥 Indexador (trigger manual → docs → vector store)
O que é
O indexador é um fluxo separado do agente, que existe só para preencher o vector store. A sequência é: gatilho manual → ler os documentos → dividir em pedaços (text splitter) → gerar embeddings → popular o vector store. Você roda esse fluxo uma vez para criar a base, e de novo sempre que os documentos mudarem.
O que é?Gatilho manual — você aperta "executar" quando quer; não roda sozinho. Text splitter — divide um documento longo em pedaços menores, do tamanho que a busca consegue comparar bem. Vector store em memória — uma versão que vive enquanto o fluxo está ativo; ótima para aprender e testar.
Diagrama ilustrativo — o indexador é um fluxo de mão única que termina populando o vector store. Ele não responde perguntas; só prepara a base.
Por que aprender
Separar a indexação da consulta é o padrão de arquitetura do RAG. O indexador roda raramente (uma vez, ou quando a base muda); o agente roda a cada pergunta. Misturar os dois faria você re-indexar tudo a cada consulta — lento e caro. Entender essa separação é o que evita o erro mais comum: ativar o agente antes de a base existir.
🎯 Dica prática
Rode o indexador antes de ativar o agente — a base precisa estar populada para a busca achar qualquer coisa. Se usar vector store em memória, lembre: ao reiniciar o fluxo, a base some; rode o indexador de novo antes de testar.
Conceitos-chave
Indexar ≠ consultar.
Text splitter prepara a busca.
Uma vez ou ao atualizar.
A saída é a base populada.
🚏 Classifier — rotear antes de gastar o agente
O que é
O classificador de texto é um nó que decide cedo, logo na entrada, se a mensagem é relevante (ex.: "é uma pergunta de suporte?" vs "é spam / fora do escopo?") e roteia de acordo. Só o que importa segue para o agente caro; o resto é parado ou tratado de forma barata antes de gastar o modelo.
O que é?Classificar — encaixar a entrada numa categoria ("suporte", "vendas", "fora do escopo"). Rotear — mandar cada categoria para um caminho diferente do fluxo. Triagem — esse filtro barato na entrada, antes do trabalho pesado.
Diagrama ilustrativo — a triagem barata decide o destino. Só o caminho "relevante" (ciano) chega ao agente caro; o resto para antes, economizando token.
Por que aprender
Uma triagem barata antes do agente economiza token e evita respostas fora do escopo. Sem o classificador, toda mensagem — inclusive spam e assuntos que nem são seus — aciona o agente caro, que gasta contexto e ainda pode tentar responder algo que não deveria. Com ele, você gasta o modelo só onde vale a pena e mantém o agente dentro do escopo combinado.
Conceitos-chave
Triagem na entrada.
Cada categoria, um caminho.
Só o relevante gasta o agente.
Barra o fora de assunto.
🎯 Confidence score & fallback (não inventar)
O que é
O agente emite um marcador de confiança junto da resposta — por exemplo, alta (>0,8) / média (0,6–0,8) / baixa (<0,6), ou ainda um rótulo simples como "política encontrada" / "nenhuma política encontrada". Um nó de código lê esse marcador e um nó IF ramifica: quando há trecho relevante, segue o rascunho da resposta; quando não há, cai num fallback educado ("vamos pesquisar e retornamos") em vez de alucinar.
O que é?Confidence score — uma nota que o agente dá indicando o quanto a resposta está apoiada na fonte. Fallback — o caminho alternativo, honesto, para quando não há base suficiente. Nó IF — a bifurcação que escolhe entre "responder" e "fallback".
Diagrama ilustrativo — a bifurcação por confiança. O ramo de baixa confiança (vermelho) não é um erro: é o agente se recusando a inventar.
Por que aprender
Um agente que recusa inventar é um resultado desejado, não um bug. Quando ele cai no fallback porque não achou a política, ele está sendo honesto — preferível, e muito, a entregar um prazo ou valor inventado que pode gerar prejuízo e quebra de confiança. O marcador de confiança é o que torna esse comportamento controlável: você define o limiar e decide, em código, quando responder e quando recuar.
✓ Recusar inventar (fallback honesto)
- ✓Sem trecho relevante → "não temos isso aqui; vamos pesquisar e retornamos".
- ✓Confiança baixa dispara o fallback automaticamente.
- ✓Comportamento previsível e auditável (você vê a nota).
✗ Alucinar uma resposta
- ✗Inventar um prazo ou valor que "parece certo".
- ✗Responder com confiança mesmo sem fonte no store.
- ✗Tratar o "não sei" do agente como defeito a ser removido.
A sequência de construção do RAG
-
1
Índice — rode o indexador (docs → pedaços → embeddings → vector store) e confirme que a base está populada.
-
2
Classifier — coloque a triagem na entrada para barrar o que é fora do escopo antes do agente.
-
3
Agente com tool de vector store — o agente consulta a base e responde ancorado no trecho recuperado.
-
4
Fallback — leia a confiança, ramifique no IF e, sem trecho relevante, responda com o fallback honesto.
🎯 Objetivo: montar a base de conhecimento (indexador) e o agente que a consulta
crie um indexador (trigger manual → ler <meus-documentos> → dividir em pedaços → embeddings → vector store) e um agente que classifica a pergunta, busca no vector store e, se não achar nada relevante, responde com um fallback honesto em vez de inventar.
✅ Como verificar: rode o indexador uma vez; faça uma pergunta fora de escopo e confirme que o agente cai no fallback (não alucina).
🧩 Pseudocódigo: ler o marcador de confiança e ramificar no IF
confianca = ler_marcador(resposta_do_agente) // ex.: 0.42
se confianca < 0.6:
rota = "preciso pesquisar" // fallback honesto
senão:
rota = "rascunhar resposta" // responder ancorado
// o nó IF usa "rota" para escolher o caminho do fluxo
✅ Como verificar: force uma confiança baixa (pergunta sem fonte) e confirme que "rota" vira "preciso pesquisar".
🎯 Dica prática
Teste com uma pergunta fora de escopo e confirme que o agente não inventa — ele deve cair no fallback. Esse teste de "pergunta sem fonte" é a melhor prova de que o seu RAG está honesto.
Conceitos-chave
Alta / média / baixa.
Faz o parse do score.
Responder ou fallback.
"Não sei" não é bug.
Fechando o módulo: o que um bom agente RAG faz quando a busca não encontra nada relevante?
📌 Resumo do Módulo
Próximo Módulo:
Trilha 3 — Prompts & Padrões de Conversa