Estratégias de divisão em partes (fixa, por frase, semântica)
Conheça os compromissos entre a divisão em partes de tamanho fixo, orientada por frases e semântica para obter qualidade na recuperação.
Estratégias de divisão em partes (fixa, por frase, semântica) é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.
Por que dividir em trechos?
Você não pode gerar a incorporação de um PDF de 200 páginas inteiro como um único vetor — o vetor seria abstrato demais para corresponder a consultas específicas. Divida o documento em partes menores (cada uma com cerca de 200 a 800 tokens), gere a incorporação de cada parte e pesquise no nível dos trechos.
Divisão em trechos de tamanho fixo
A abordagem mais simples — divida a cada N caracteres ou tokens:
def fixed_chunks(text, chunk_size=1000, overlap=200):
chunks = []
i = 0
while i < len(text):
chunks.append(text[i:i + chunk_size])
i += chunk_size - overlap
return chunks
sample_text = "A" * 2500
chunks = fixed_chunks(sample_text, chunk_size=1000, overlap=200)
print(f"Split {len(sample_text)} characters into {len(chunks)} chunks")
for i, c in enumerate(chunks):
print(f"Chunk {i+1}: {len(c)} chars")
Por que usar sobreposição?
A sobreposição (normalmente de 10% a 20% do tamanho do trecho) garante que uma frase que atravesse o limite apareça intacta em pelo menos um trecho. Sem ela, um fato importante dividido entre trechos pode não ser recuperável.
Divisão baseada em frases
Divida nos limites das frases — nunca interrompa uma frase no meio:
import re
def sentence_chunks(text, max_chars=1000):
sentences = re.split(r'(?<=[.!?])\s+', text)
chunks = []
current = ''
for s in sentences:
if len(current) + len(s) > max_chars and current:
chunks.append(current.strip())
current = s
else:
current += ' ' + s
if current:
chunks.append(current.strip())
return chunks
sample_text = "This is sentence one. This is sentence two! Is this sentence three? Yes it is."
chunks = sentence_chunks(sample_text, max_chars=40)
for i, c in enumerate(chunks):
print(f"Chunk {i+1}: {c!r}")
Divisão recursiva (LangChain)
O RecursiveCharacterTextSplitter da LangChain tenta dividir primeiro nos limites dos parágrafos, depois das frases e, por fim, das palavras — preservando a estrutura tanto quanto possível.
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=800,
chunk_overlap=100,
separators=['\n\n', '\n', '. ', ' ']
)
chunks = splitter.split_text(document)Divisão semântica em trechos
Divida quando o tema mudar. As implementações geram a incorporação de cada frase e dividem onde as incorporações de frases consecutivas estiverem muito distantes.
É mais lenta de calcular, mas produz trechos coerentes em termos de tema.
Divisão com reconhecimento de Markdown
Para documentos em Markdown, divida nos limites dos cabeçalhos para manter as seções juntas. Cada trecho herda os títulos-pai como contexto.
Divisão com reconhecimento de código
Para código-fonte, divida nos limites de funções/classes, não pela contagem de caracteres. Ferramentas como tree-sitter permitem uma divisão em trechos orientada pela AST.
Escolha do tamanho dos trechos
Vantagens e desvantagens:
- Trechos pequenos (cerca de 200 tokens) — correspondências precisas, mas mais trechos para gerenciar
- Trechos grandes (cerca de 1000 tokens) — mais contexto por correspondência, porém menos precisão
Padrão: 500 a 800 tokens com sobreposição de 10% a 20%.
Preservação de metadados
Anexe metadados a cada trecho:
- URL de origem / caminho do arquivo
- Número da página
- Título do documento
- Seção / cabeçalho
- Marcas de data e hora de criação / atualização
Isso é útil para filtragem, citações e reclassificação.
Trechos contextuais
Técnica recente: prefixe cada trecho com um contexto de uma linha gerado por um LLM (por exemplo, "Este trecho é do relatório financeiro da empresa do segundo trimestre de 2024 e trata da receita."). Melhora a recuperação em 30% a 50%.
Trechos pai-filho
Indexe trechos pequenos para obter correspondências precisas, mas recupere o parágrafo-pai LARGER para obter contexto:
- Gere incorporações de trechos no nível das frases
- Quando houver uma correspondência, retorne o trecho-pai de 800 tokens
Por que usar sobreposição?
Por que os trechos normalmente se sobrepõem em 10% a 20%?
Recapitulação
Comece com uma divisão recursiva por caracteres em trechos de cerca de 800 tokens, com sobreposição de 10%. Adicione compreensão semântica / estrutural conforme suas necessidades aumentarem.
Perguntas Frequentes
A aula “Estratégias de divisão em partes (fixa, por frase, semântica)” é grátis?
Sim — o texto completo de “Estratégias de divisão em partes (fixa, por frase, semântica)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.
O que vou aprender em “Estratégias de divisão em partes (fixa, por frase, semântica)”?
Conheça os compromissos entre a divisão em partes de tamanho fixo, orientada por frases e semântica para obter qualidade na recuperação. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Agents?
Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Estratégias de divisão em partes (fixa, por frase, semântica)”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Agents?
Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O que o RAG resolve (limite de conhecimento, alucinações)
- Estratégias de divisão em partes (fixa, por frase, semântica)
- Indexando um conjunto de documentos
- Construindo um RAG ingênuo com FAISS ou Chroma