Saltar para o conteúdo

Estratégias de fragmentação para RAG

Projetando fragmentação de alta precisão para RAG de sites: estratégias fixas, semânticas, hierárquicas e adaptativas, e sua avaliação.

chunking • rag • retrieval • embeddings

A fragmentação converte o conteúdo normalizado das páginas em unidades de recuperação. Escolhas ruins inflam o custo (fragmentos demais), degradam o recall (blocos grandes demais) ou diluem a precisão (fraturas nos limites). Não existe um método universalmente melhor; a estratégia se alinha à estrutura do corpus, à sua volatilidade e aos padrões de consulta. Este guia mapeia o espaço de design, as compensações, o fluxo de avaliação e as alavancas de otimização para pipelines RAG em produção.

Por que a fragmentação importa

Objetivos:

  • Maximizar a probabilidade de que fatos relevantes apareçam na recuperação top‑k.
  • Preservar a coesão semântica para que as respostas geradas sejam fundamentadas.
  • Otimizar o uso de tokens (evitar incorporar repetidamente texto de preenchimento).
  • Permitir atualizações incrementais determinísticas (IDs de fragmento estáveis).

A fragmentação mal alinhada se manifesta como: alta redundância, baixo Recall@k, fatos alucinados nos limites e gasto inflado com embeddings.

Fragmentação de janela fixa

Janelas simples de N tokens (p. ex., 500 tokens). Prós: determinísticas, fáceis de implementar, comportamento de atualização estável. Contras: os limites cortam através de conceitos; é necessário sobreposição redundante para reduzir o truncamento → crescimento do custo. Use com moderação: boa linha de base para conteúdo heterogêneo ou pouco estruturado, onde os sinais semânticos não são confiáveis.

Janelas deslizantes com sobreposição

Um tamanho de janela W com sobreposição O (p. ex., 500 / 50 tokens) reduz o truncamento de fatos nos limites. Sobreposição acima de ~15 % gera ganhos de recall decrescentes ao mesmo tempo que aumenta o tamanho do índice. Acompanhe duplication_ratio = distinct_token_count / total_token_count para ajustar O para baixo.

Detecção de limites semânticos

Segmente ao longo de sinais estruturais: cabeçalhos H2/H3, agrupamentos de listas, blocos de código, limites de tabelas. Imponha limites mínimos/máximos de tokens (mescle irmãos pequenos demais, divida seções grandes demais). Benefícios: maior coesão, menos sobreposições. Riscos: marcação malformada, hierarquia de cabeçalhos inconsistente. Mitigue com reparo de hierarquia + recurso à divisão por parágrafos quando os cabeçalhos estiverem ausentes.

Fragmentação hierárquica

Índice de dois níveis: embeddings de seção grossos (p. ex., uma seção inteira de tutorial) + subfragmentos de granulação fina. Fluxo de recuperação: ANN grosso → filtrar as N seções superiores → recuperação fina dentro delas. Vantagens: reduz o espaço de busca global para corpus grandes, melhora a latência. Complexidade: mais partes móveis, é preciso lógica de pontuação em cascata.

Fragmentação adaptativa / dinâmica

Ajuste os tamanhos dos fragmentos com base na densidade semântica local e em pistas estruturais. Exemplo de lógica: comece em uma seção de cabeçalho; se tiver >800 tokens → divida por grupos de parágrafos pontuados por similaridade semântica; se tiver <120 tokens → mescle com o irmão seguinte, a menos que a divergência de tópico ultrapasse um limiar. Exige uma passagem prévia de embedding ou similaridade; pague o custo uma vez na ingestão em troca de melhor eficiência de recuperação a longo prazo.

Considerações sobre embeddings

Mantenha metadados: token_count, model_version, content_hash. Evite o truncamento: pré-compute os tokens e divida antes da chamada ao modelo. Modelos densos se degradam com excesso de texto de preenchimento; remova os artefatos de navegação antes de fragmentar. Monitore vector_density (termos únicos / tokens) para identificar fragmentos de baixo sinal (candidatos à refusão).

Métodos de avaliação

Benchmarks por estratégia:

MétricaPropósito
Recall@kRetenção de fatos
Precision@kRuído de contexto
Contagem de fragmentosIndicador de custo
Razão de duplicaçãoAjuste de sobreposição
Tokens médios por fragmentoAproveitamento da janela
Latência (recuperação)Eficiência do índice

Execute sobre um conjunto de consultas de referência; adote uma estratégia somente se os ganhos de recall superarem os deltas de custo e latência.

Manual de implementação

  1. Linha de base: fixa 500 + 10 % de sobreposição; colete benchmarks.
  2. Introduza limites semânticos: substitua as janelas onde os cabeçalhos são confiáveis; meça novamente.
  3. Adicione uma camada hierárquica se o corpus ultrapassar 250k fragmentos ou a latência ultrapassar a meta.
  4. Implante lógica adaptativa para tamanhos de seção com alta variância.
  5. Reavaliação trimestral: compare o custo por delta de qualidade frente às novas capacidades dos modelos.

Armazene o diff do manifesto de fragmentos por iteração para permitir rollback.

Principais conclusões

  • Limites semânticos geralmente superam janelas puramente fixas em precisão/custo.
  • A sobreposição é um dial: meça a duplicação, não a adivinhe.
  • A recuperação hierárquica ajuda a escalar sem crescimento linear da latência.
  • IDs de fragmento estáveis permitem uma atualização incremental segura dos embeddings.
  • Avalie mudanças de estratégia como deploys de código: faça benchmark, compare, registre.