Estratégias de Chunking de Documentos
Metodologia para decompor documentos extensos e bases de código em fragmentos autossuficientes (chunks) para a geração de embeddings vetoriais e busca precisa em sistemas RAG.
1. Visão geral do conceito e problema sistêmico
Os modelos de embeddings (como text-embedding-3-large ou bge-m3) possuem uma janela de entrada com limite rígido de comprimento (de 512 a 8192 tokens). Mesmo que o modelo seja tecnicamente capaz de processar um PDF extenso por completo, ele comprime toda a informação em um único vetor de dimensão fixa (por exemplo, 1536 números).
Sem realizar um chunking granular:
- Diluição Semântica (Vector Dilution): O vetor de um documento de 50 páginas torna-se tão genérico que perde os detalhes de funções ou configurações específicas.
- Impossibilidade de recuperação precisa no RAG: O sistema de busca trará o documento gigante inteiro para o contexto da LLM generativa, esgotando instantaneamente o orçamento de tokens.
- "Morte" da estrutura ao dividir ingenuamente: A divisão fixa por número de caracteres (Character Splitting) corta palavras ao meio, separa o cabeçalho da função de sua implementação e destrói tabelas.
Chunking é o fundamento da engenharia RAG: transforma texto bruto monolítico em uma coleção de blocos semânticos, interconectados e autossuficientes em termos de informação.
2. Taxonomia arquitetural e modelo mental
Dependendo da estrutura dos dados, distinguem-se quatro níveis arquiteturais de chunking:
- 1. Chunking de tamanho fixo com sobreposição (Fixed-Size Sliding Window): Abordagem mais simples: o texto é cortado em blocos de $N$ tokens com uma sobreposição de $M$ tokens. É rápido, mas frequentemente viola os limites lógicos dos parágrafos.
- 2. Chunking recursivo por caracteres (Recursive Character Splitting):
Abordagem hierárquica (padrão LangChain/LlamaIndex). O algoritmo tenta dividir o texto primeiro por quebras de linha duplas (
\n\n); se o bloco for muito grande, divide por quebra de linha única (\n), depois por ponto final (.) e, apenas como último recurso, por espaço. - 3. Chunking semântico (Semantic / Embedding-Distance Chunking): O texto é dividido em sentenças individuais. Para cada uma, gera-se um vetor e calcula-se a similaridade cosseno entre sentenças adjacentes. Os limites dos chunks são definidos nos pontos de mudança abrupta de semântica (mudança de tópico).
- 4. Chunking sintático AST/Markdown (Structural Chunking):
Considera a árvore sintática do documento: divide o Markdown estritamente pelos níveis de cabeçalhos (
#,##,###), preservando as breadcrumbs, e o código de programação pelos nós de classes e funções via Tree-sitter.
3. Pipeline técnico e mecânica interna
O pipeline profissional de chunking consiste em 4 etapas:
- Document Ingestion & Pre-cleaning (Limpeza):
Remoção de caracteres especiais invisíveis, unificação das quebras de linha (
\r\n->\n) e normalização da codificação Unicode (NFC). - Boundary Detection (Detecção de limites): O parser constrói a árvore sintática (AST) ou identifica pontos seguros de divisão (separadores Markdown, linhas vazias entre funções).
- Window Formatting & Overlap Calculation (Corte e sobreposição): O texto é agrupado em blocos de 500–700 tokens. Ao início de cada novo chunk, adiciona-se um buffer de sobreposição (10–15%) do anterior.
- Metadata Enrichment & Context Injection (Enriquecimento de contexto):
Cada chunk recebe um prefixo com metadados:
[File: api/auth.ts | Class: AuthService | Method: validateToken]Isso garante que o vetor do fragmento seja encontrado mesmo em consultas onde o nome do método não é mencionado em seu corpo.
4. Cenários de engenharia prática em produção
01. Indexação de codebase de repositório via Tree-sitter
Cada arquivo TypeScript é parseado em uma árvore sintática. Um chunk separado é formado para cada interface exportada e cada função. Se uma função ocupa 20 linhas, ela se torna um chunk autônomo junto com seus comentários JSDoc e a lista de tipos importados.
02. Processamento de tabelas complexas e relatórios financeiros
A divisão comum rompe as linhas da tabela, privando os números de sentido. O chunking profissional converte cada linha da tabela em uma frase textual autossuficiente: "Em 2024, a receita da unidade Cloud foi de $35B, representando um aumento de 15% em relação a 2023", gerando vetores com alta precisão de busca.
03. Parsing de documentação de API (OpenAPI / Swagger)
Cada rota (por exemplo, POST /v1/payments) é isolada em um chunk próprio, contendo o caminho, o método HTTP, a descrição dos parâmetros, exemplos de resposta e códigos de erro, permitindo que o agente gere código cliente sem erros.
5. Armadilhas, erros comuns e segurança
- Problema dos "pronomes pendurados" (Dangling Pronouns): Se a frase "Esta função requer privilégios de administrador" cair no chunk 2, enquanto o nome da função permanecer no chunk 1, o modelo não conseguirá responder à consulta. Utilize sempre metadados com enriquecimento de contexto pai (Parent Document Retrieval).
- Inflação da base vetorial devido a excesso de Overlap: Sobreposições acima de 25% levam à duplicação de informações na banco de dados, aumentam o custo de indexação e carregam fragmentos idênticos no topo dos resultados.
- Perda do contexto estrutural (Loss of Lineage): Um chunk sem indicação do nome do arquivo e do número da linha torna-se ruído anônimo, dificultando a geração de citações precisas nas respostas do agente.
FAQ: Estratégias de Chunking de Documentos
Termos relacionados
RAG (Retrieval-Augmented Generation)
Padrão arquitetural de IA corporativa que enriquece dinamicamente a janela de contexto do modelo com conhecimento verificado e relevante extraído de repositórios externos (bases vetoriais, grafos, índices full-text) antes da geração da resposta final.
Dense Embeddings
A mathematical projection of text, code, or multimodal data into a dense multidimensional numerical vector, where the angle and geometry between coordinates reflect their semantic relatedness.
Busca Híbrida (Dense + Sparse Search)
Arquitetura de recuperação em sistemas RAG modernos que combina busca vetorial semântica (Dense Embeddings) com indexação clássica de texto completo por palavras-chave (Sparse / BM25) através de algoritmos de fusão de rankings (RRF).
Markdown AST para agentes (Abstract Syntax Tree)
Representação hierárquica em árvore da marcação Markdown (padrão mdast / Unified.js), permitindo que sistemas programáticos e agentes de IA analisem, transformem e editem com segurança conteúdo técnico de forma determinística, sem depender de expressões regulares frágeis.