Sessão "ap60 - Visão Prática do RAG" com resumo completo, hacks e Q&A…
INEMA
Aqui estão alguns hacks práticos retirados do conteúdo e da discussão sobre RAG e automações em n8n:
- Comece pequeno
- Nunca carregue logo milhares de documentos. Teste com 5–10 arquivos e 20 perguntas-chave.
- Isso evita gastar tempo e custo com ingestão ruim.
- Chunking inteligente
- Use separação por markdown em vez de apenas tamanho fixo.
- Adicione overlap de 10–20% entre chunks.
- Contextual embeddings: peça ao LLM para gerar uma frase que situe cada chunk no documento.
- Metadata é ouro
- Guarde título, seção, versão e sumário do documento junto com cada chunk.
- Isso dá contexto ao agente e reduz alucinação.
- Deduplicação automática
- Use IDs, hashes ou checksums para evitar inserir o mesmo documento várias vezes no vetor.
- Exemplo: armazenar doc_id + versão no banco relacional (Supabase).
- Multimodal na prática
- Para PDFs complexos (texto + imagens + tabelas), use OCR avançado (como Mistral).
- Suba imagens para o storage (Supabase) com anotações automáticas e referencie no markdown.
- Avalie como software
- Monte planilha com 20–30 perguntas de teste e rode sempre que mudar o fluxo.
- Marque acertos, parciais e erros → você sabe se está melhorando ou piorando.
- Estratégia modular
- Para chatbots de suporte: fluxo rápido e simples.
- Para relatórios longos: raciocínio profundo, várias camadas de recuperação e verificação.
- Validação pós-resposta
- Sempre que possível, peça ao modelo validar se a resposta realmente veio dos chunks recuperados.
- Se não houver base, retornar “fonte não encontrada” em vez de inventar.
úteis; escolher embeddings compatíveis com idioma e domínio. Exemplo: embeddings multilíngues se a base tem PT/EN; avaliar MTEB-like benchmarks quando possível.
-
Quão perto do 100% de acurácia dá para chegar? Resposta: nunca 100% em IA; relatos de \~98% em casos bem controlados. Medir com conjunto fixo de perguntas, iterar e incluir camadas de validação. Exemplo: pós-geração, checar se a resposta cita trechos recuperados; se não, pedir nova busca ou responder “fonte não encontrada”.
-
Supabase ou Pinecone? Resposta: depende. Supabase pela versatilidade (vetor + relacional + storage); Pinecone para escala extrema. Exemplo: multimodal n8n do demo usa Supabase para vetor e storage das imagens.
-
Quadrant vale a pena? Resposta: sim, leve e bom local/cloud; UI menos intuitiva que Supabase/Pinecone; bom para alta escala local. Exemplo: laboratório on-prem com custo otimizado.
-
Como evitar duplicatas no vetor? Resposta: record manager de ingestão com hash/ID, upsert por ID único. Exemplo: tabela de controle com doc_id, versão, checksum e status.
-
Onde focar esforço: ingestão ou inferência? Resposta: ingestão. Garbage in, garbage out. Exemplo: OCR com anotações, sumário por documento, metadados ricos e deduplicação melhoram muito as respostas.
Exemplos práticos e mini-receitas
- Contextual embeddings no n8n • Para cada chunk, enviar prompt curto com o documento completo pedindo uma sentença de contexto. • Armazenar essa sentença como metadado do chunk.
Prompt curto para contextualização “Você receberá um documento completo e um trecho dele. Escreva 1 frase clara que situe esse trecho no documento, indicando seção e propósito.”
-
Markdown splitter com hierarquia • Converter PDFs para markdown com títulos, listas e tabelas preservadas; usar RecursiveCharacterTextSplitter priorizando quebras em cabeçalhos. • Overlap de 10–20% para manter coesão.
-
Resposta com imagens em linha • Incluir URLs do Supabase Storage e a legenda vinda da anotação OCR na própria string markdown do chunk. Exemplo de trecho armazenado: “Veja o painel frontal: !Painel com erro E21 Anotação: ‘Diagrama do painel com luzes A, B, C; erro E21 destacado.’”
-
Verificação pós-geração • Se a resposta não contiver citações ou trechos recuperados, rodar uma etapa de validação: “verifique se todas as afirmações estão ancoradas nos chunks retornados; se não, refaça a consulta”.
Checklist rápido para implementar o blueprint multimodal
-
Fonte e OCR • Google Drive Watch → baixar PDF → Mistral OCR job com annotations.
-
Imagens • Extrair imagens base64 do OCR → converter binário → enviar ao Supabase Storage → obter URLs públicas/assinadas.
-
Texto e metadados • Combinar markdown do OCR com URLs das imagens e suas anotações. • Opcional: gerar sumário por documento e sentença contextual por chunk.
-
Vetorização • Splitter por markdown; overlap moderado; embeddings adequados ao idioma. • Upsert no Supabase Vector com doc_id, seção, página, contexto, urls_imagem.
-
Agente • Retrieval com filtros por metadado (documento, versão, seção) e re-rank opcional. • System message instruindo a retornar imagens em markdown quando relevantes.
-
Governança • Record manager de ingestão; deduplicação por checksum; logs de versão. • Conjunto de 20–30 perguntas para avaliação contínua.
Hacks úteis
• Comece com 10 documentos e 20 perguntas de teste; só depois escale. • Use deduplicação desde o dia 1 para não “poluir” seu vetor. • Adicione uma frase contextual por chunk quando o corpus for pequeno e precisão for crítica. • Some um sumário por documento nos metadados para dar “visão de topo” ao agente. • Em bases com imagens e tabelas, OCR com anotação melhora drasticamente a utilidade dos chunks.
Resumo completo
A sessão apresentou uma visão prática e estratégica sobre RAG (Retrieval Augmented Generation) em n8n, destacando por que RAG continua essencial mesmo com janelas de contexto maiores: velocidade, custo e necessidade de respostas confiáveis ancoradas em dados da empresa. Daniel e Alan, com background de desenvolvimento, mostraram como RAG básico pode piorar a precisão por perda de contexto nos chunks e defenderam “RAG modular”: ajustar arquitetura, ingestão, chunking, embeddings, recuperação, re-rank e geração conforme o caso de uso. O destaque foi um blueprint de RAG multimodal no n8n que usa OCR da Mistral para extrair texto, tabelas e imagens de PDFs, anotar imagens, enviar tudo ao Supabase (vetores + storage) e permitir que o agente responda com texto e imagens em linha. Na parte de Q\&A, abordaram: chunking inteligente e contextual embeddings, sumarização de documentos, ingestão de dados aninhados (Slack/Notion), escolha de embeddings e vetores, Supabase vs Pinecone, Quadrant, deduplicação, avaliação de qualidade e metas de acurácia. Conclusão: o gargalo está na ingestão; comece pequeno, defina 20–30 perguntas de teste, meça, itere e adicione camadas de verificação quando a precisão exigida for alta.
Tópicos principais com exemplos
-
Por que RAG ainda importa • Situações: chatbots de e-commerce precisam responder em 5–10s; pesquisas profundas podem levar horas com raciocínio. • Exemplo: atendimento que precisa citar políticas internas atualizadas; sem RAG, alto risco de alucinação.
-
Problemas do RAG “naive” • Perda de contexto ao chunkear páginas complexas. • Exemplo: pergunta “o que é coberto?” e o sistema usa um chunk da seção de exclusões por não saber o contexto da página.
-
RAG modular • Ajuste por caso de uso: query routing, decomposição de consultas, verificação de resposta, re-rank, grafos, busca estruturada. • Exemplo: para perguntas factuais curtas, uso primário de busca semântica; para relações entre entidades, grafo.
-
Blueprint de RAG multimodal no n8n • Pipeline: Google Drive → OCR Mistral → extração texto/imagens/anotações → upload imagens no Supabase Storage → chunking por markdown → embeddings → Supabase Vector → agente consulta e retorna texto + imagens. • Exemplo: manual de lava-roupas com códigos de erro em imagens; a resposta traz o passo a passo e a figura do painel.
-
Avaliação e confiança • Definir 20–30 perguntas de referência antes de construir; rodar testes a cada mudança. • Exemplo: planilha com perguntas, gabarito humano e nota por resposta; acompanhar evolução versão a versão.
-
Supabase vs Pinecone vs Quadrant • Supabase: vetores + Postgres relacional + storage na mesma stack; ótimo para apps e metadados. • Pinecone: escala extrema e serviço dedicado de vetores. • Quadrant: leve, pode escalar local; curva de aprendizado maior de UI. • Exemplo: POC e médio porte no Supabase; catálogo massivo global em Pinecone.
-
Boas práticas de ingestão • OCR robusto para PDFs complexos; anotação de imagens; chunking por markdown; overlap moderado; deduplicação de registros. • Exemplo: registrar hash/ID de documento para evitar inserir o mesmo PDF 5 vezes.
Perguntas respondidas com exemplos e respostas
-
Como melhorar chunking e contexto? Resposta: usar splitters por markdown, 500–1000 caracteres com overlap; contextual embeddings adicionando uma sentença que situe o chunk no documento. Exemplo de sentença contextual: “Este chunk pertence à seção ‘Exclusões de Cobertura’, listando itens 6–10.”
-
Como lidar com dados aninhados (Slack threads, Notion com child blocks)? Resposta: buscar recursivamente níveis filhos, flatenar preservando hierarquia em markdown (títulos, listas), e armazenar metadados de caminho. Exemplo: Notion → extrair bloco → child blocks → concatenar com cabeçalhos tipo H2/H3 refletindo a estrutura.
-
Qual embedding usar? Posso jogar arquivo direto no vetor? Resposta: sempre precisa de embeddings; não enviar arquivo bruto. Pré-processar para markdown, aplicar splitters e metadados
youtube.com/@TheAIAutomators ↗
ap60 - Visao Pratica do RAG
1