⚡ AutomationsAI|Portal de Cursos →

Verificando acesso...

MÓDULO 2.2

🔌 Conectando conhecimento e ferramentas

Carregar FAQs, sites e CSVs como base de conhecimento; declarar tools com schemas que o modelo entende e chama na hora certa.

6
Tópicos
50
Minutos
Médio
Nível
Prático
Tipo

Conteúdo detalhado

1

📄 Fontes de conhecimento

Antes de "plugar RAG", saiba o que vai plugar. Conteúdo se divide em estruturado (CSV, SQL, API) e não-estruturado (FAQ, PDF, página). Cada tipo exige tratamento diferente.

✓ Estruturado — direto via tool

  • Catálogo de produtos em CSV
  • Tabela de preços em SQL
  • Endpoint REST de estoque
  • Calendário de horários
  • Dados de cliente no CRM

✗ Não-estruturado — via RAG

  • FAQ em página HTML
  • Política de devolução em PDF
  • Manual técnico em Markdown
  • Base de conhecimento Notion/Confluence
  • Glossário corporativo
2

✂️ Chunking e embeddings

RAG depende de quebrar documentos em pedaços pequenos (chunks) e converter cada um em vetor (embedding) para busca semântica. Chunk errado = recall ruim = bot que diz "não sei" sobre coisa que está na base.

300-800 tokens

Pequeno demais perde contexto, grande demais perde precisão.

10-15% overlap

Sobreposição entre chunks evita cortar conceito ao meio.

Por seção, não tokens

Quebrar por H2/H3 vence quebra cega por tamanho.

Metadata sempre

Cada chunk com source, date, section, version.

💡 Embeddings

Reembede tudo quando trocar de modelo de embedding. Misturar embeddings de dois modelos diferentes na mesma collection gera busca aleatória.

3

🔍 RAG na prática

RAG = buscar os k pedaços mais relevantes, injetar no prompt, deixar o modelo responder com base neles (e citar a fonte). Soa simples, mas tem armadilha em cada etapa.

1

1. Embed da query

Pergunta do usuário vira vetor com o mesmo modelo dos chunks.

2

2. Busca top-k

Vector store devolve os k chunks mais próximos (k=5 é bom default).

3

3. Reranking (opcional)

Modelo menor reordena os k por relevância real. Aumenta precisão.

4

4. Injeção no prompt

Chunks entram em bloco marcado "[CONHECIMENTO]". Modelo cita.

5

5. Geração com citação

Resposta inclui referência ao chunk usado. Auditável.

4

🛠️ Declarar tools

Tool = nome + descrição + schema. O modelo nunca vê o código — só o contrato. Descrição ruim = tool ignorada. Schema ruim = parâmetros errados.

// Tool bem declarada
{
  "name": "buscar_imoveis",
  "description": "Busca imóveis disponíveis para venda ou aluguel
                  no catálogo da Vivenda. Use sempre que o usuário
                  pedir lista de opções por região, faixa de preço
                  ou número de quartos.",
  "parameters": {
    "type": "object",
    "properties": {
      "cidade": {"type": "string", "description": "Ex: São Paulo"},
      "bairro": {"type": "string"},
      "quartos": {"type": "integer", "minimum": 1},
      "max_preco": {"type": "number"},
      "finalidade": {"type": "string", "enum": ["venda", "aluguel"]}
    },
    "required": ["cidade", "finalidade"]
  }
}

⚠️ Schema e backend juntos

Schema é contrato. Modelo respeita. Se você marca um campo como required, garanta que o backend trata erro quando vier vazio — porque algum dia vai vir.

5

🎯 Quando tool, quando RAG

A regra é simples mas é a que mais se erra: RAG para texto estático e relativamente raro de mudar; tool para dado dinâmico ou ação. Misturar mal aumenta latência e custo sem ganho.

✓ RAG

  • Política de devolução
  • Manual de uso do produto
  • Lista de perguntas frequentes
  • Glossário e termos do negócio
  • Documentação técnica

✗ Tool

  • Preço atual de produto
  • Estoque em tempo real
  • Horários disponíveis
  • Status de pedido
  • Qualquer escrita (criar, atualizar, cancelar)
6

🧯 Tratamento de erro

Tool vai falhar. Timeout, 500, parâmetro inválido, ratelimit. A pergunta não é "se", é "como". Tool que falha silenciosa vira agente que mente.

// Erro estruturado devolvido ao modelo
[Tool error]
{
  "error": true,
  "code": "TIMEOUT",
  "message": "Catálogo demorou mais que 5s para responder. Tente novamente.",
  "retryable": true
}

// Modelo lê e decide:
// - Pode tentar de novo (1x).
// - Se falhar de novo: "Marina, nosso catálogo está lento agora.
//   Posso te avisar em alguns minutos quando voltar?"

💡 Sanitize errors

Nunca devolva ao modelo o erro cru do banco/API. Vire SQL exception em "banco indisponível". Vire 500 em "sistema com problema". Modelo não precisa do stack trace — e logar ele em log do LLM é vazamento.

📌 Resumo do módulo

Fontes de conhecimento — estruturado vai por tool, não-estruturado por RAG
Chunking e embeddings — chunk certo é metade do trabalho
RAG na prática — RAG = buscar + injetar + citar
Declarar tools — tool = contrato claro entre modelo e backend
Quando tool, quando RAG — estático = RAG, dinâmico ou escrita = tool
Tratamento de erro — erro estruturado vira recuperação inteligente

Próximo:

2.3 — 🎫 Custom fields e contexto do cliente