Compilação de hacks práticos sobre *context engineering* para agentes…
INEMA
tração de fato. * Resposta: mensura a eficácia do método.
-
Provenance automático
- Ex.: incluir doc_id/url na resposta.
- Resposta: facilita checagem.
-
Pré-filtragem para economizar tokens
- Ex.: filtros em Supabase antes do LLM.
- Resposta: reduz custo.
-
Teste large context windows com cuidado
- Ex.: 60k tokens em avaliações.
- Resposta: bom para precisão, caro.
-
Verificadores automáticos pós-resposta
- Ex.: soma checada por script.
- Resposta: evita aceitar hallucinations.
-
Tool calling & memory para dados sensíveis
- Ex.: get_user_profile(user_id).
- Resposta: mais seguro/eficiente.
-
Geração automática de datasets e prompts
- Ex.: pedir ao LLM para criar 100 queries de teste.
- Resposta: útil para prototipagem.
tag timestamp. * Pergunta: overlap aumenta custo?
- Resposta: sim, mas evita perda de contexto entre chunks.
- Teste com avaliações “needle-in-haystack” e métricas reais
- Hack: crie queries de avaliação específicas (buscar pequeno fato dentro de muitos docs) e meça precisão/recall/latência/custo.
- Exemplo: 100 perguntas sobre fatos pontuais; compare vetores vs full-context vs SQL.
-
Pergunta: quanto devo pagar por essa avaliação?
-
Resposta: depende do modelo; use amostras representativas antes de rodar em larga escala.
- Tracking de proveniência e verificação em cadeia (provenance)
- Hack: sempre retorne para o usuário a fonte (doc_id, url, timestamp) usada para formar a resposta. Implementar um “footnote” automático.
- Exemplo: resposta: “Segundo Doc A (video_id X, t=03:12–03:45)…”
-
Pergunta: isso impede hallucinations?
-
Resposta: reduz risco e facilita checagem humana, mas não elimina totalmente.
- Estratégias de custo: filtrar antes de passar para LLM
- Hack: aplique filtros/SQL para reduzir o conjunto antes de chamar LLMs caros. Use modelos menores para etapas de triagem.
- Exemplo: rodar pré-filtros em Supabase, depois chamar LLM só com subset.
-
Pergunta: models menores são seguros?
-
Resposta: para triagem sim; validação final em modelo maior.
- Use janelas de contexto grandes quando possível (heavy models) — mas com cuidado
- Hack: se você tem acesso a modelos com grandes context windows, teste full-context e compare; em muitos casos dá melhores resultados.
- Exemplo: 60k tokens em system prompt funcionou melhor em avaliações do Nate.
-
Pergunta: é sempre melhor?
-
Resposta: não — é caro e lento; bom para casos onde precisão supera custo.
- Guardrails e checks automatizados pós-resposta
- Hack: sempre rode um verificador automático: checar números, datas, somas, links válidos. Se o verificador falhar, reexecute outra estratégia (ex.: pedir para rodar SQL).
- Exemplo: LLM responde total_revenue=5196 → verificador soma as linhas e confirma.
-
Pergunta: como construir esse verificador?
-
Resposta: scripts simples em JS/Python que parseiam a resposta e checam contra DB/queries.
- Ferramentas que ajudam: chain-of-thought control, tool calling, memory
- Hack: use tool-calling para consultas precisas e “memory” para contexto persistente de usuário. Evite expor memória sensível a vetorização sem cuidado.
- Exemplo: usar tool get_user_profile(user_id) em vez de passar todos os dados no prompt.
-
Pergunta: memory melhora as respostas?
-
Resposta: sim, para personalização; cuidado com privacidade.
- Automação de criação de prompts e test dataset pelo próprio ChatGPT
- Hack: gere exemplos sintéticos e o system prompt via LLM (pede para gerar dados de teste e queries) — economiza tempo para validar agentes.
- Exemplo: “Gere 50 perguntas típicas que usuários fariam sobre vendas e as respostas esperadas.”
-
Pergunta: confiar nesses dados sintéticos?
-
Resposta: servem para teste inicial; sempre valide com dados reais depois.
Lista final — tópicos + exemplos + respostas às perguntas (resumido)⌗
- Seleção por tipo de pergunta
- Ex.: agregação → SQL; resumo → full-context.
- Resposta: escolha conforme necessidade de ordem/precisão.
- Metadata em vetores
- Ex.: {doc_id, t_start, t_end, url}.
- Resposta: essencial para rastreabilidade.
- Tabelas → não chunkize
- Ex.: vendas em DB → SQL.
- Resposta: chunk = erro para cálculos.
- Tool calls para docs grandes
- Ex.: Google Doc como ferramenta.
- Resposta: economiza tokens.
- Full-context quando ordem importa
- Ex.: resumo cronológico de webinar.
- Resposta: caro, mas preciso.
- Abordagem híbrida
- Ex.: vetor → candidates → SQL/verifier.
- Resposta: melhor equilíbrio acurácia/custo.
- Schema explícito no system prompt
- Ex.: listar colunas e formatos.
- Resposta: evita SQL errado.
- Chunk size & overlap inteligente
- Ex.: 1 min chunks de transcrição com 5s overlap.
- Resposta: reduz perda de contexto.
- Avaliações needle-in-haystack
- Ex.: testes de ex
hacks práticos (táteis, aplicáveis hoje) sobre context engineering para agentes/RAG. Primeiro um resumo curto do objetivo — depois os hacks, cada um com exemplo e resposta para a pergunta mais comum sobre ele.
Resumo rápido⌗
O problema não é só o modelo: é como você entrega contexto. Existem 4 abordagens principais para dar contexto a um agente: filtros (filtering), consultas SQL (querying), contexto completo (full-context / tool calls) e vetorização (vector store / chunking). Cada uma tem trade-offs de custo, velocidade e fidelidade. Escolha a abordagem conforme o tipo de pergunta que seu sistema receberá.
Hacks práticos (com exemplo e resposta)⌗
- Escolha a abordagem pelo tipo de pergunta
- Hack: defina classes de perguntas (numéricas/analytics, lookup simples, resumo cronológico, semantic search) e roteie cada classe para um método específico.
- Exemplo: pergunta sobre “total de vendas” → rota para SQL; “resumo do vídeo do início ao fim” → rota para full-context.
-
Pergunta: Qual devo escolher se tiver dúvidas?
-
Resposta: priorize SQL/filtros para contas e agregações; full-context para sequência/ordem; vectors para buscas semânticas rápidas.
- Metadata + tagging é obrigatório para vetores
- Hack: ao indexar chunks em vetor store inclua metadata: doc_id, source_url, timestamp, chunk_start_time, chunk_order.
- Exemplo: transcrição YouTube → chunk + {video_id, t_start, t_end, title}.
-
Pergunta: metadata resolve tudo?
-
Resposta: ajuda muito, mas só se for consistente — sem metadata rica o vetor perde origem/ordem.
- Para tabelas, NUNCA chunkizar sem razão — use filtros/SQL
- Hack: mantenha dados tabulares fora do flow de chunks. Exponha APIs/queries que o agente possa chamar (ou gere SQL pelo modelo).
- Exemplo: “Qual a semana com maior receita?” → SQL: SELECT week, SUM(revenue) GROUP BY week ORDER BY SUM DESC LIMIT 1.
-
Pergunta: e se eu indexei a tabela em chunks?
-
Resposta: risco alto de resposta errada (só alguns chunks serão consultados). Reindexar como tabela/DB é a correção.
- Use tool calls (documents como “ferramentas”) quando tiver documentos grandes
- Hack: em vez de inserir PDFs inteiros no prompt, registre cada documento como uma ferramenta/endpoint que o agente chama quando necessário.
- Exemplo: “Resuma o Doc A” → agente chama tool get_doc('A') e processa apenas esse doc.
-
Pergunta: isso economiza tokens?
-
Resposta: sim, porque você só injeta o texto relevante quando necessário.
- Full-context (colar documentos no prompt) quando a ordem/importância cronológica importa
- Hack: se a pergunta exige leitura sequencial (resumo cronológico, narrativa), entregue o documento inteiro no sistema prompt — se couber na context window.
- Exemplo: resumo detalhado de webinar de 1h — full-context com timestamps.
-
Pergunta: e o custo?
-
Resposta: alto em tokens; use somente se precisão/ordem for essencial.
- Combine métodos (hybrid) — a melhor prática muitas vezes
- Hack: use vetor para recuperar candidatos semânticos, mas rode um SQL/consulta estruturada ou full-context sobre os candidatos filtrados para validação/fact-checking.
- Exemplo: vetor retorna 5 chunks relevantes → agente chama um “verifier” que reconsulta a fonte original ou executa um cálculo preciso.
-
Pergunta: aumenta latência?
-
Resposta: sim, um pouco — mas melhora acurácia e reduz hallucinations.
- Defina schema e documente para o agente (system prompt com schema explícito)
- Hack: no system prompt inclua nomes de colunas, tipos e exemplos de valores. Torna SQL gerado mais confiável.
- Exemplo: “Tabela sales_data: order_id, date(YYYY-MM-DD), product(text), qty(int), total_price(float).”
-
Pergunta: o modelo precisa saber isso sempre?
-
Resposta: sim — sem schema ele “adivinha” e pode gerar SQL inválido.
- Controle de chunk size e overlap inteligente
- Hack: use chunk sizes alinhadas à unidade lógica (ex.: parágrafos, seções, ou 6 linhas da tabela), com overlap pequeno (10–20%) e metadata de origem.
- Exemplo: transcrição longa → chunk por minuto com overlap de 5s e tag
Exemplos práticos⌗
- “Quantas unidades de fones de ouvido vendemos?” → Filtro
- “Quais os produtos mais lucrativos?” → SQL
- “Resuma o conteúdo do vídeo ‘Agente em 2 horas’.” → Full Context
- “O que é dito sobre IA no vídeo A e B?” → Vetores + Metadados
Resumo final: A precisão de um agente depende menos do modelo e mais de como o contexto é projetado e entregue.
A engenharia de contexto é o elo entre o dado bruto e a inteligência do agente — e escolher o método certo (filtro, SQL, full context ou vetores) é o que separa uma resposta correta de uma confusa.
**“Agents not giving you correct answers? Watch this” **
1. Motivo⌗
Muitas pessoas reclamam que seus agentes RAG (Retrieval-Augmented Generation) não retornam respostas corretas. Ele mostra que o problema raramente é “o modelo”, mas sim como o contexto é fornecido.
Surge então o conceito central: Context Engineering — a engenharia do contexto que alimenta o agente.
2. O que é “Context Engineering”⌗
É o processo de estruturar e fornecer dados de forma que o agente tenha acesso ao contexto certo no momento certo. Existem várias fontes possíveis:
- Input do usuário
- Instruções (prompt)
- Memória
- Chamadas de ferramentas (tool calling)
- Bases de conhecimento (como vetores ou SQL)
- Saídas estruturadas
O segredo é entender qual tipo de dado o agente precisa e como ele deve acessá-lo.
3. O conceito real de RAG⌗
Muitos pensam que RAG é sinônimo de banco vetorial (Pinecone, Supabase, etc.), mas RAG é apenas o processo de buscar informações externas e gerar uma resposta com base nelas. O modelo não sabe tudo: ele recupera, complementa e gera — como uma pessoa que pesquisa antes de responder.
4. Problemas do modelo baseado em “chunks”⌗
Ao dividir documentos em pedaços (chunks) e armazenar em vetores, perdem-se:
- A ordem lógica dos dados (ex.: início, meio, fim do texto)
- O contexto global (ex.: tabelas quebradas)
- A origem precisa (ex.: de qual documento veio o trecho)
Isso leva a erros como:
- Somar valores errados em tabelas
- Fazer médias incompletas
- Misturar informações de documentos diferentes
5. Três principais formas de fornecer contexto⌗
a) Filtro de dados (Filtering)⌗
O agente interpreta a linguagem natural e filtra dados diretamente, por exemplo:
“Quantos fones de ouvido sem fio foram vendidos?” O agente aplica filtros (produto = “wireless headphones”) e soma quantidades. Esse método é rápido, barato e bom para grandes bases tabulares.
b) Consulta SQL (Querying)⌗
Usa consultas SQL geradas automaticamente pelo modelo. Exemplo:
“Quais são os 3 produtos com maior receita total?” O agente gera uma query SQL que soma, agrupa e ordena. Ideal para bases complexas com várias tabelas e funções.
c) Contexto completo (Full Context)⌗
Em vez de fragmentar, o agente lê documentos inteiros (ex.: transcrições completas de vídeos). É mais caro em tokens, mas preserva a sequência e coerência — essencial para resumos cronológicos ou entendimento profundo.
Exemplo:
“Resuma o vídeo do começo ao fim.” Somente o método full-context pode responder corretamente, porque mantém a ordem original do conteúdo.
6. Comparação de custos e eficiência⌗
| Método | Vantagem | Desvantagem |
|---|---|---|
| Filtros | Barato, rápido, preciso em dados estruturados | Limitado a consultas simples |
| SQL | Mais robusto, ótimo para análise e cálculos | Exige schema bem definido |
| Full Context | Compreensão profunda, preserva ordem | Alto custo de tokens |
| Vetores (chunks) | Rápido e barato para busca semântica | Pode perder coerência e origem |
7. Context windows e novos modelos⌗
Modelos modernos (Gemini, Claude, Llama etc.) possuem janelas de contexto enormes (até 10 milhões de tokens), o que permite usar muito mais texto diretamente — tornando o Full Context mais viável e preciso.
8. Conclusão e boas práticas⌗
- Não existe um único método “correto” — depende do tipo de dado e pergunta.
- Para perguntas numéricas → use filtros ou SQL.
- Para perguntas semânticas → vetores funcionam.
- Para resumos ou narrativas → use contexto completo.
- Sempre defina bem o schema e o propósito do agente.
Os agentes não estão te dando respostas corretas? Veja isso. Quando as pessoas pensam em um agente RAG, normalmente imaginam um agente fazendo recuperação baseada em fragmentos (chunks) a partir de um banco de dados vetorial.
A verdade é que, muitas vezes, essa não é a melhor abordagem.
Eu queria explicar a ideia importante de engenharia de contexto — que envolve filtrar dados, fazer consultas SQL, usar o método de contexto completo ou empregar um banco de dados vetorial.
Definitivamente, quero saber o que você pensa sobre isso. Espero que haja alguns “insights valiosos” ou “momentos de luz” ao longo do Texto
Agentes RAG Contexto
ap72 - Agentes RAG - Não Funciona ?
1