pular para o conteúdo
voltar ao mapa
técnica
etapa: ingest
3 min de leitura

Chunking

Chunking é a primeira decisão técnica de RAG: o tamanho, a sobreposição e a estratégia de corte determinam o que o retrieval consegue encontrar depois. Pedaços ruins viram respostas sem contexto.

LangChainLlamaIndexUnstructuredspaCy

O que é

Chunking é o processo de dividir um documento em pedaços menores que serão indexados e recuperados. O tamanho do pedaço não é detalhe: ele define o que cabe na janela do modelo, qual é a unidade de busca, e qual é a granularidade da citação que aparece na resposta.

Em quase toda arquitetura RAG, chunking acontece uma vez na ingestão e nunca mais. O pipeline padrão lê o documento, aplica um splitter, gera um embedding por bloco, e segue. Se o corte foi mal pensado, o índice inteiro carrega o problema até alguém refazer a indexação.

Tamanho e overlap

A pergunta mais comum é 'qual o tamanho certo?'. A resposta honesta é 'depende'. Para perguntas curtas e respostas factuais, blocos menores funcionam melhor: cada bloco carrega uma ideia só, então o retrieval traz o trecho exato. Para perguntas que exigem raciocínio entre parágrafos, blocos maiores preservam contexto, e blocos pequenos demais quebram o argumento no meio.

Sobreposição (overlap) é o segundo parâmetro. Sem sobreposição, uma ideia que começa no fim de um bloco e continua no começo do próximo fica órfã: nenhum dos dois blocos tem o sentido completo. Com sobreposição de 10 a 20% do tamanho do bloco, o início do próximo repete o fim do anterior, então a fronteira nunca corta uma frase no meio.

Parâmetros típicostext
  tamanho do bloco      200 a 1000 tokens
  overlap               10% a 20% do bloco
  regra prática         bloco ~512 tokens, overlap ~50

  bloco pequeno  -> citação precisa, contexto curto
  bloco grande   -> raciocínio longo, citação ruidosa

Estratégias de corte

Três famílias dominam a prática. A primeira é corte por caracteres ou tokens, simples e previsível, e que funciona quando o documento é prosa limpa. A segunda é corte recursivo por separadores, que tenta quebrar primeiro por parágrafo, depois por frase, depois por palavra, e só por caractere em último caso. Preserva a estrutura do texto sem precisar de modelo. A terceira é corte semântico, que agrupa frases por similaridade e só corta quando a próxima frase tem baixa relação com a anterior. Custa mais e usa embeddings, mas produz blocos coerentes.

Tem ainda o corte por estrutura: títulos, seções, células de tabela, parágrafos de código. Em documentos com marcação clara (Markdown, HTML, docx convertido), separar por estrutura e manter a hierarquia no metadata dá chunks mais úteis do que qualquer splitter genérico.

Na prática

O LangChain oferece o splitter recursivo pronto. O exemplo configura tamanho e overlap e aplica em um texto qualquer. Para texto em português, vale separar por parágrafo, frase e palavra, nessa sequência.

chunking/splitter.pypython
from langchain_text_splitters import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=512,
    chunk_overlap=50,
    separators=[
        "\n\n",     # parágrafo
        "\n",       # linha
        "(?<=[.!?])\\s+",  # fim de frase em PT-BR (lookbehind)
        " ",        # palavra
        "",         # caractere (último caso)
    ],
    length_function=len,
    is_separator_regex=True,
)

with open("manual.txt", encoding="utf-8") as f:
    texto = f.read()

blocos = splitter.split_text(texto)
for i, bloco in enumerate(blocos):
    print(f"#{i:03d}  {len(bloco)} chars  {bloco[:60].replace(chr(10), ' ')}...")

Pontos fortes

  • estabilidade: chunking determinístico produz os mesmos blocos para o mesmo documento, então o índice se mantém reproduzível
  • controle de granularidade: ajustar tamanho e overlap é uma alavanca direta na qualidade do retrieval
  • compatibilidade: quase todo framework (LangChain, LlamaIndex, Haystack) traz splitter pronto, então a barreira de entrada é baixa

Limitações

  • cegueira semântica: splitter recursivo corta por separador, não por sentido; uma ideia que cruza a fronteira some
  • estrutura perdida: separar por caractere ignora títulos, listas e tabelas; em documentos mistos, é melhor splitter específico por tipo
  • custo de reindexação: trocar a estratégia de chunking obriga reindexar tudo; em bases grandes, isso vira migração

conexões no mapa

atualizado em 14/10/2026 · fontes para aprofundar · reportar erro

Estude antes

Desbloqueia

teste o que entendeu

Carregando perguntas…