RAG: como dividir documentos para um vector database

Ilustração técnica sobre RAG: como dividir documentos para um vector database
Ilustração sobre RAG: como dividir documentos para um vector database

Resposta Rápida / TL;DR

Divida por estrutura semântica, mantenha metadados de origem, aplique overlap moderado e avalie retrieval com perguntas reais antes de ajustar o tamanho.
Índice do artigo

    Resposta rápida

    Chunking deve preservar a unidade de sentido que responde à pergunta. Comece por títulos, seções e parágrafos; mantenha metadados de documento e posição; use overlap apenas quando necessário; depois avalie a recuperação com perguntas reais. Não existe um tamanho universal que funcione para manuais, contratos e artigos ao mesmo tempo.

    Por que cortes ruins prejudicam o RAG

    Um chunk que separa título de tabela perde contexto. Um bloco enorme mistura assuntos e reduz precisão. O retriever pode encontrar palavras certas, mas sem condição, versão ou exceção. A geração então parece fluente e responde errado.

    Preserve a estrutura

    Extraia título, seção, subtítulo, página, URL, versão e permissões. Divida primeiro por cabeçalhos e parágrafos; só quebre um parágrafo longo quando necessário. Para tabelas, preserve cabeçalho e unidade junto das linhas que dependem deles. Para código, mantenha assinatura, imports relevantes e explicação próxima.

    Metadados e rastreabilidade

    Cada vetor deve apontar para source_id, seção, posição e URL ou arquivo de origem. Esses campos permitem filtros, citações e depuração. Não indexe documentos que o usuário não pode acessar; filtre autorização no retrieval, não apenas na interface.

    Teste tamanho e overlap

    Crie duas ou três variantes, não dezenas. Para cada uma, execute um conjunto de perguntas anotadas: resposta esperada, documento correto e trecho suficiente. Compare recall, precisão, latência e custo. Overlap aumenta contexto, mas também duplica vetores e pode aumentar ruído.

    Uma avaliação mínima:

    pergunta → top-k trechos → fonte esperada encontrada? → contexto suficiente? → resposta correta?
    

    Registre versão do parser, embedding, índice e dataset. Sem isso, uma mudança parece melhoria apenas porque o conjunto mudou.

    Operação

    Faça ingestão incremental, remova versões antigas quando necessário e trate documentos muito grandes em etapas. Monitore falhas de parsing, filas e crescimento do índice. Uma VPS para workloads de IA deve ser dimensionada para CPU, memória, armazenamento e concorrência do pipeline.

    Checklist

    • [ ] Corte respeita seções e tabelas.
    • [ ] Metadados e permissões preservados.
    • [ ] Cada chunk tem fonte rastreável.
    • [ ] Retrieval foi avaliado com perguntas reais.
    • [ ] Versões do pipeline estão registradas.

    FAQ

    Chunks maiores sempre têm mais contexto?

    Mais texto pode significar mais ruído. O tamanho adequado é o que entrega contexto suficiente para o tipo de pergunta.

    Embedding resolve qualquer erro de chunking?

    Não. Um embedding não recupera contexto que foi cortado ou metadado que não foi preservado.

    Avalie o retrieval antes da geração

    Separe o teste em duas etapas. Primeiro, verifique se os trechos corretos aparecem no top-k; depois avalie se o modelo respondeu somente com esse contexto e citou a origem. Se o retrieval falha, trocar o prompt final mascara o problema. Mantenha um pequeno conjunto de perguntas difíceis, incluindo negações, versões e tabelas. Ele funciona como uma regressão para cada alteração no parser, no embedding ou no índice.

    Download Gratuito Template Pronto para n8n & Evolution API

    📦 Template n8n: Agente de IA com WhatsApp + Evolution API

    Baixe o arquivo JSON pronto para importar: Webhook configurado, tratamento de remetente, nó de OpenAI e disparo via Evolution API.

    Comentários (8)

    Daniel Silva - Digital Agency

    Muito bom o comparativo entre bancos relacionais e vetoriais para aplicações de busca semântica. Ajudou muito na escolha da arquitetura.

    Mateus Martins

    Depois de ajustar o shared_buffers e o work_mem no PostgreSQL como recomendado, nossas queries analíticas rodaram 3x mais rápido. Você tem algum material mais avançado sobre esse tema?

    Gustavo Alves

    As regras de connection pooling com PgBouncer reduziram drasticamente a sobrecarga de conexões no servidor.

    Mariana Vieira

    Implementei o backup contínuo com pg_dump e criptografia para bucket S3. Dormindo muito mais tranquilo agora!

    Fernando Souza

    Excelente conteúdo! Aprendi conceitos que não encontrava em outros lugares em português.

    Camila Santos

    Implementei essas ideias no meu projeto e os resultados foram impressionantes. Obrigado pelo conhecimento compartilhado!

    Carlos Alves - Consultoria TI

    Artigo muito bem escrito e explicativo! Já compartilhei com toda a equipe da empresa.

    Ana Gomes - Dev Team

    Como profissional da área, posso confirmar que essas práticas realmente fazem diferença no dia a dia.

    ← Voltar para o blog