Avançado. Deixe a estratégia em Auto e as configurações nos padrões, a menos que tenha um motivo específico para mudá-las e saiba como os limites dos chunks afetam a recuperação. O Auto inspeciona cada arquivo e o encaminha ao chunker certo sozinho. O restante desta página é para o caso em que você confirmou que o Auto não está produzindo os chunks que quer.
Se for sobrescrever o Auto, a versão curta:
- Integridade de frase importa (Q&A, texto jurídico) → Sentence
- O conteúdo tem marcadores estruturais que o Text perde (código, formatos customizados) → Recursive
- Você precisa de tamanhos de chunk uniformes → Token
- O conteúdo tem delimitadores explícitos → Regex
- Cada registro precisa ser seu próprio chunk → converter para JSONL
Configurações
| Configuração | Unidade | Padrão | Faixa | Descrição |
|---|---|---|---|---|
| Max Chunk Size | tokens | 1.024 | 100–4.000 | Limite superior do tamanho do chunk. 1 token ≈ 4 caracteres. |
| Min Chunk Size | caracteres | 100 | 100–2.000 | Fragmentos minúsculos abaixo disso são descartados. |
| Overlap | tokens | 200 | 0–500 | Tokens repetidos entre chunks adjacentes para preservar contexto. |
O guia de chunking da Pinecone cobre os tradeoffs de tamanho e overlap.
Toda estratégia divide o documento em limites e depois empacota splits adjacentes até o max chunk size, então um chunk geralmente cobre vários splits e um limite de split não é um limite de chunk. Por isso um Regex preciso ainda pode produzir chunks com várias correspondências.
Estratégias
Auto
O Zoen inspeciona o arquivo e encaminha ao chunker certo:
.json,.jsonl,.yaml,.yml→ chunking estrutural (registros nunca são divididos no meio; registros pequenos ainda podem ser agrupados até o tamanho do chunk).csv,.xlsx,.xls,.tsv→ agrupados por linha, com cabeçalhos preservados- Todo o resto (
.pdf,.docx,.txt,.md,.html,.pptx, …) → estratégia Text
O roteamento se baseia no MIME type detectado e na forma do conteúdo, não só na extensão — um arquivo .txt com JSON válido ainda é roteado estruturalmente.
Escolha Auto a menos que tenha confirmado que ele não está produzindo os chunks que quer.
Text
Splitter hierárquico que desce uma lista de separadores: regras horizontais → cabeçalhos markdown → parágrafos (\n\n) → linhas (\n) → pontuação de frase (. ! ?) → pontuação de cláusula (; ,) → espaços. Tenta o maior separador primeiro e faz fallback quando um pedaço ainda é grande demais.
Mesmo algoritmo do RecursiveCharacterTextSplitter do LangChain, o padrão de fato para prosa.
Use para prosa geral.
Recursive
Mesmo algoritmo do Text, mas você fornece sua própria hierarquia de separadores ou escolhe uma recipe embutida (plain, markdown, code).
O padrão de recipe vem do Chonkie, que traz conjuntos de separadores pré-montados para tipos comuns de conteúdo.
Use Recursive quando seu conteúdo tem marcadores estruturais que os separadores padrão do Text perdem — dividir código em \nclass , \nfunction e depois \n\n, por exemplo.
Sentence
Divide em limites de frase (. , ! , ? , com tratamento de abreviações) e empacota frases inteiras até o tamanho do chunk. Uma frase nunca é dividida no meio, a menos que sozinha exceda o limite.
É a técnica por trás do SentenceSplitter do LlamaIndex, o padrão recomendado para prosa no stack deles.
Use quando a integridade da frase importa — Q&A, texto jurídico, ou qualquer coisa em que cortes no meio da frase prejudiquem a compreensão.
Token
Janela deslizante de tamanho fixo alinhada a limites de palavra. Sem consciência de parágrafos ou frases.
O LlamaIndex oferece o mesmo como TokenTextSplitter. Útil quando o processamento downstream exige tamanhos de chunk uniformes; caso contrário, prefira Text ou Sentence.
Regex
Divide em cada correspondência de um padrão regex que você fornece e depois empacota splits até o tamanho do chunk por padrão — o mesmo comportamento de merge de todo outro chunker. Um regex de limite preciso como (?=\n\s*\{\s*"id"\s*:) ainda produz chunks com várias correspondências se elas forem pequenas o bastante para caber juntas. Isso é padrão em LangChain, LlamaIndex, Chonkie e Unstructured.
Use Regex quando seu conteúdo tem delimitadores explícitos que não se encaixam em nenhuma outra estratégia.
Limites estritos
A estratégia regex tem um checkbox opcional "Each match is its own chunk (don't merge)". Quando habilitado:
- Cada correspondência regex vira seu próprio chunk
- Splits adjacentes não são empacotados juntos
- Overlap é desabilitado
- Splits que excedem o tamanho do chunk ainda são subdivididos em limites de palavra
Isso corresponde ao knob join=False no txtai e ao padrão split_length=1 no DocumentSplitter do Haystack. A maioria das bibliotecas não expõe isso diretamente porque espera que o usuário mude para um parser estrutural — veja "Um registro por chunk" abaixo.
Ligue quando cada correspondência for um registro discreto (um par Q&A, uma entrada de log) e você precisar de cada um isolado para recuperação.
Um registro por chunk
Cada registro (cada par Q&A, cada linha de log, cada linha) como seu próprio chunk é chunking estrutural, não chunking regex. Dois caminhos:
-
Converter para JSONL (um registro por linha) e enviar. A estratégia Auto do Zoen trata como dados estruturados e nunca divide um registro no meio. Registros pequenos ainda podem ser agrupados até o tamanho do chunk — para forçar um registro por chunk, baixe o max chunk size para aproximadamente o tamanho de um registro. Veja o
JSONNodeParserdo LlamaIndex e o chunking baseado em elementos do Unstructured. -
Usar Regex com limites estritos habilitados quando não puder reestruturar a fonte.
Prefira a opção 1. Parsers estruturais lidam com registros aninhados, delimitadores escapados e entradas malformadas que o regex não lida.
Leitura adicional
- LangChain — Text Splitters
- LlamaIndex — Node Parsers
- Chonkie
- Unstructured — Chunking
- Pinecone — Chunking Strategies