Pressione Esc para fechar

Chunking - Recursive Chunking

← Voltar para o Dia 4: RAG: finalmente

Recursive Chunking

O que é

Recursive Chunking é uma estratégia de divisão de documentos que tenta criar chunks respeitando a estrutura do conteúdo, utilizando uma sequência de separadores, do mais amplo para o mais específico.

Em vez de simplesmente cortar o texto quando ele atinge determinado número de tokens, o método tenta primeiro dividir em unidades maiores, como seções ou parágrafos. Se essas unidades ainda forem grandes demais, elas são divididas novamente em unidades menores.

Por isso o nome recursive, ou recursivo: o processo de divisão pode ser repetido sobre partes que ainda não atingiram o tamanho desejado.

Uma representação simplificada seria:

Documento
   ↓
Seções
   ↓
Parágrafos
   ↓
Frases
   ↓
Palavras

A ideia é encontrar o maior nível de estrutura que permita produzir chunks dentro do tamanho definido.

Como funciona

Imagine um documento com vários capítulos.

Primeiro, o sistema tenta dividir o documento pelos capítulos. Se um capítulo for pequeno o suficiente, ele pode permanecer inteiro.

Se um capítulo for grande demais, o sistema tenta dividi-lo em seções.

Se uma seção ainda for grande demais, tenta dividi-la em parágrafos.

Se um parágrafo ainda exceder o limite, pode finalmente ser dividido em frases ou até em unidades menores.

Documento
    │
    ├── Capítulo 1
    │      ├── Seção 1
    │      └── Seção 2
    │
    └── Capítulo 2
           ├── Seção 3
           │      ├── Parágrafo
           │      └── Parágrafo
           │
           └── Seção 4

O processo poderia seguir uma hierarquia de separadores como:

1. Seções
2. Parágrafos
3. Frases
4. Palavras
5. Caracteres

O sistema começa pelo primeiro separador. Se os pedaços resultantes estiverem dentro do limite desejado, eles são utilizados.

Quando um pedaço ainda for grande demais, o processo continua com o próximo separador.

Isso permite que o chunking seja mais sensível à estrutura natural do texto do que o Fixed-size Chunking.

Um exemplo

Considere um documento com esta estrutura:

POLÍTICA DE FÉRIAS

Solicitação de férias

Os funcionários devem solicitar férias com pelo menos
30 dias de antecedência.

Aprovação

A solicitação deve ser realizada pelo sistema interno
e aprovada pelo gestor responsável.

Períodos superiores a 15 dias devem ser previamente
alinhados com o departamento de Recursos Humanos.

Imagine que o limite definido seja pequeno demais para manter todo o documento em um único chunk.

O Recursive Chunking pode primeiro tentar separar pelas seções:

Chunk 1:
"Solicitação de férias

Os funcionários devem solicitar férias com pelo menos
30 dias de antecedência."

Chunk 2:
"Aprovação

A solicitação deve ser realizada pelo sistema interno
e aprovada pelo gestor responsável.

Períodos superiores a 15 dias devem ser previamente
alinhados com o departamento de Recursos Humanos."

Se o segundo chunk ainda for grande demais, ele pode ser dividido novamente:

Chunk 2:
"Aprovação

A solicitação deve ser realizada pelo sistema interno
e aprovada pelo gestor responsável."

Chunk 3:
"Períodos superiores a 15 dias devem ser previamente
alinhados com o departamento de Recursos Humanos."

Observe que o método tentou preservar a estrutura semântica antes de recorrer a divisões menores.

Por que é importante

Recursive Chunking é importante porque oferece um equilíbrio entre controle do tamanho dos chunks e preservação da estrutura do documento.

Em comparação com o Fixed-size Chunking:

Fixed-size Chunking
→ divide principalmente pelo tamanho

Recursive Chunking
→ tenta respeitar a estrutura antes de dividir pelo tamanho

Isso pode produzir chunks mais coerentes para tarefas de recuperação semântica.

É particularmente útil para documentos que possuem uma estrutura relativamente clara, como:

  • manuais;
  • políticas internas;
  • artigos;
  • documentação técnica;
  • contratos;
  • páginas de conhecimento;
  • livros e relatórios.

Ainda assim, Recursive Chunking não entende necessariamente o significado do texto como um ser humano. Ele normalmente trabalha com uma hierarquia de separadores e regras de tamanho. Por isso, não deve ser confundido com Semantic Chunking, que utiliza informações semânticas para determinar onde dividir o conteúdo.

A relação entre as estratégias pode ser resumida assim:

Chunking
   │
   ├── Fixed-size Chunking
   │      └── divide por tamanho
   │
   ├── Recursive Chunking
   │      └── tenta preservar estrutura hierárquica
   │
   └── Semantic Chunking
          └── tenta preservar unidades de significado

No contexto de RAG, essa escolha influencia diretamente quais unidades serão transformadas em embeddings e posteriormente recuperadas.

O ponto central é: Recursive Chunking divide o conteúdo progressivamente, começando por estruturas maiores e recorrendo a divisões menores apenas quando necessário, buscando manter chunks coerentes sem perder o controle sobre seu tamanho.

link de compartilhamento