Etapa 03 de 22
Chunking
Dividir documentos em trechos pequenos o suficiente para gerar embeddings e recuperar. Chunks que cortam uma tabela ou uma definição ao meio devolvem meia resposta. O chunking define a unidade que o modelo realmente vê.
Por Sheela · Verificado em 19 de out. de 2026 · Como avaliamos
Como escolher
- Comece com uma divisão que respeite a estrutura (por título ou seção) antes de qualquer coisa sofisticada.
- Mantenha uma pequena sobreposição e anexe o título do documento e a seção a cada chunk.
- Meça a recuperação antes e depois de uma mudança; o tamanho do chunk é um parâmetro a testar, não uma crença.
O que observar
As perguntas que separam as opções, em ordem de importância.
01
Primeiro, divisão que respeita a estrutura
Dividir por títulos, seções e limites de listas mantém uma definição ou um procedimento inteiro. Isso exige estrutura vinda do parser, então os chunkers que leem um documento já analisado (o HybridChunker do Docling, o by_title do Unstructured, os divisores por cabeçalho de Markdown) costumam superar a divisão de texto bruto. Comece por aqui antes de tentar qualquer coisa sofisticada.
02
Tamanho medido nos tokens do seu modelo de embedding
Os modelos de embedding truncam a entrada além do seu limite de tokens, muitas vezes sem avisar, então os limites dos chunks devem ser contados com o mesmo tokenizador que o modelo usa. Limites por caracteres (o max_characters do Unstructured, o divisor padrão do LangChain) são só uma aproximação. O HybridChunker do Docling e os divisores por token do LangChain, do LlamaIndex e do Chonkie recebem um tokenizador diretamente.
03
Contexto levado junto com cada chunk
Um chunk que diz 'o prazo é de 30 dias' é inútil sem saber a qual política pertence. Prefira chunkers que anexam o título do documento, o caminho de títulos e as legendas como metadados ou os colocam antes do texto antes de gerar o embedding. Uma pequena sobreposição ajuda quando uma frase atravessa um limite, mas não substitui os títulos.
04
Tabelas e código tratados como unidades
Divisores de texto genéricos cortam tabelas no meio da linha e funções no meio do corpo. Procure opções que entendam tabelas, como o Docling repetindo a linha de cabeçalho da tabela em cada parte ou o Unstructured isolando tabelas em chunks próprios, e divisores de código que sigam a sintaxe (LangChain, LlamaIndex, o divisor por AST de Python do Haystack).
05
Desconfie do chunking semântico
Os chunkers semânticos dividem onde a similaridade de embedding entre frases cai. Um estudo de 2024 de pesquisadores da Vectara concluiu que a computação extra não trouxe ganhos consistentes em relação a chunks de tamanho fixo, e um estudo de agosto de 2026 com oito estratégias concluiu que o melhor método mudava conforme o modelo de embedding, o conjunto de dados e a métrica. Experimente só depois de medir uma base simples. Não existe ranking público de chunkers; tudo o que você ler é um estudo isolado ou um gráfico de fornecedor.
06
Meça a recuperação, não a estética dos chunks
Monte um pequeno conjunto de testes com perguntas reais e os trechos que as respondem, e compare o recall at k (com que frequência o trecho certo está entre os k primeiros resultados) para cada configuração de chunking. O tamanho do chunk é um parâmetro a testar, não uma crença. Rode o teste de novo sempre que trocar o parser ou o modelo de embedding.
07
Manutenção e onde o código fica
O código de chunking é pequeno, então o risco é o abandono, não os bugs. O LangChain arquivou o pacote langchain-experimental em maio de 2026, que era onde ficava o seu SemanticChunker, e um pedido para movê-lo para o pacote principal de divisores foi fechado como não planejado. Prefira chunkers dentro de uma biblioteca da qual você já depende, ou fixe as versões.
Como as opções se diferenciam
A maioria das equipes não precisa de uma biblioteca de chunking separada. Os divisores dos frameworks (os text splitters do LangChain, os node parsers do LlamaIndex, os preprocessors do Haystack) cobrem divisão recursiva, por token, por cabeçalho e de código, e são o padrão sensato se você já usa esse framework. Os chunkers nativos dos parsers (o HybridChunker do Docling, as estratégias basic e by_title do Unstructured) têm uma vantagem: enxergam a estrutura real do documento, então conseguem manter juntas seções, tabelas e legendas.
Bibliotecas dedicadas como o Chonkie oferecem o cardápio mais amplo, da divisão por token e por frase ao chunking semântico, late e guiado por LLM, em uma instalação leve, o que ajuda se você quer testar estratégias sem trocar de framework. O late chunking gera primeiro o embedding do documento inteiro e depois agrupa os vetores de tokens por chunk, para que o vetor de cada chunk carregue o contexto ao redor; ele exige um modelo de embedding de contexto longo que exponha saídas no nível de token.
6 ferramentas comparadas
Ordenadas pela nossa nota. Abra qualquer avaliação para ver as fontes, os preços e o veredito completo.
| Ferramenta | Nota | Nosso veredito | Ideal para | Preço |
|---|---|---|---|---|
| Doclingrepositório | 4.5/5 | O Docling é o parser de código aberto que acerta as tabelas, e aquele cujas versões de segurança você não pode se dar ao luxo de pular. | Equipes que constroem RAG auto-hospedado sobre PDFs e documentos do Office com tabelas complexas. | Gratuito e de código aberto sob a licença MIT. |
| LlamaIndexrepositório | 4.3/5 | Ainda é um kit de ferramentas profundo para RAG com muitos documentos, mas seu criador agora diz com todas as letras que o framework não é mais a prioridade. | Desenvolvedores Python construindo RAG ou agentes de documentos sobre fontes de dados grandes e variadas. | Framework gratuito sob MIT. LlamaParse (nuvem paga): Free com 10k créditos, Starter $50/mês (40k créditos), Pro $500/mês (400k créditos), Enterprise sob consulta; 1.000 créditos = $1.25. |
| LangChainrepositório | 4.2/5 | Continua sendo a biblioteca de integrações mais ampla para apps de LLM, bem mais organizada desde a 1.0, e já não é a escolha automática que foi um dia. | Equipes que criam agentes com muitas integrações de provedores e dados e que podem evoluir para workflows personalizados no LangGraph. | Gratuito e de código aberto sob a licença MIT. O LangSmith é à parte: Developer gratuito para um assento, Plus US$ 39/assento/mês, Enterprise sob consulta. |
| Haystackrepositório | 4.2/5 | Um framework para quem quer ler o próprio sistema de RAG em vez de confiar nele, ao custo de escrever mais da ligação entre as partes por conta própria. | Equipes de engenharia que criam pipelines de RAG e de agentes em Python para produção e fáceis de manter. | Gratuito e de código aberto sob a licença Apache 2.0. O deepset Studio é gratuito para um usuário; a Haystack Enterprise Platform tem preço sob consulta. |
| Unstructuredrepositório | 3.8/5 | Continua sendo a rede mais ampla para formatos de arquivo incomuns, mas seus criadores agora publicam os números que mostram por que você pagaria a eles em vez disso. | Equipes que constroem pipelines de ETL que ingerem muitos formatos de documento para RAG. | Biblioteca gratuita sob Apache 2.0. Plataforma hospedada: 10.000 páginas grátis, depois $0.015 por página; plano Business com implantação em VPC ou dedicada, com preço sob consulta. |
| Chonkierepositório | 3.7/5 | Uma biblioteca de chunking bem-feita no meio de uma reescrita: a v1.7 funciona hoje, mas a maior parte do que a diferencia está programada para sair na v2. | Equipes que precisam de uma etapa leve de chunking recursivo ou de código e aceitam migrar para a v2 em breve. | Gratuito e de código aberto sob a licença MIT. |
Lado a lado
As especificações que importam nesta etapa. Verificadas em 19 de out. de 2026; confirme no site do fornecedor antes de decidir.
| Ferramenta | Estratégias | Tamanho por tokens | Respeita a estrutura | Linguagem | Licença |
|---|---|---|---|---|---|
| Docling | Hierárquica, híbrida, por linha | Sim (Hugging Face ou tiktoken) | Layout completo; repete cabeçalhos de tabelas | Python | MIT |
| LlamaIndex | Por frase, por token, semântica, hierárquica | Sim (TokenTextSplitter) | Markdown, HTML, JSON, código | Python | MIT |
| LangChain | Recursiva, por caractere, por token, código | Sim (tiktoken e outros) | Cabeçalhos de Markdown, HTML, JSON | Python | MIT |
| Haystack | Recursiva, hierárquica, por embedding | Via divisor por token do Chonkie | Cabeçalhos de Markdown, AST de Python, CSV | Python | Apache 2.0 |
| Unstructured | basic, by_title | Não (limites por caracteres) | Tipos de elemento, seções, páginas | Python | Apache 2.0 |
| Chonkie | Token, recursiva, semântica, late, LLM | Sim | Receita para Markdown, código, tabelas | Python; servidor REST | MIT |
Onde esta etapa se encaixa
- Converse com os seus documentos: começaríamos com Chonkie.
- Agente de atendimento ao cliente: começaríamos com Chonkie.
- Agente de programação: começaríamos com LlamaIndex.
- Pesquisa e grafo de conhecimento: começaríamos com Chonkie.
- Assistente com memória de longo prazo: começaríamos com Chonkie.
- Agente de voz: começaríamos com Chonkie.
- IA privada no dispositivo: começaríamos com Chonkie.
- O seu próprio modelo com fine-tuning: começaríamos com Chonkie.
Fontes deste guia
- LangChain text splitters
- Sunsetting langchain-experimental (GitHub issue #87)
- LlamaIndex node parser modules
- Docling chunking concepts
- Unstructured chunking
- Haystack preprocessors
- feyninc/chonkie on GitHub
- Is Semantic Chunking Worth the Computational Cost? (arXiv)
- Chunking strategies study, August 2026 (arXiv)
- Late Chunking (Jina AI, arXiv)