Configurações RAG: Chunksize, Overlap e K Documents

RAG (Retrieval-Augmented Generation) é uma técnica poderosa que combina recuperação de informações com geração de texto usando modelos de linguagem. Para obter os melhores resultados em sistemas RAG, é essencial entender e configurar corretamente parâmetros como chunksize, overlap e k documents. Neste artigo, exploraremos cada um desses conceitos e como eles impactam a qualidade das respostas do seu sistema de IA.

O que é RAG?

RAG (Retrieval-Augmented Generation) é uma arquitetura que permite que modelos de linguagem acessem informações externas durante a geração de respostas. Em vez de depender apenas do conhecimento pré-treinado do modelo, o RAG recupera documentos relevantes de uma base de conhecimento e os utiliza como contexto para gerar respostas mais precisas e atualizadas.

O processo RAG funciona em três etapas principais:

  1. Indexação: Os documentos são divididos em chunks (pedaços) e armazenados em um banco de dados vetorial
  2. Recuperação: Quando uma pergunta é feita, o sistema busca os chunks mais relevantes
  3. Geração: O modelo de linguagem usa os chunks recuperados como contexto para gerar a resposta

Chunksize (Tamanho do Chunk)

O chunksize é o tamanho de cada pedaço (chunk) em que um documento é dividido durante o processo de indexação. Este é um dos parâmetros mais importantes na configuração RAG, pois afeta diretamente a qualidade da recuperação e o contexto disponível para o modelo.

Para que serve o Chunksize?

O chunksize determina quantos tokens (palavras) cada pedaço do documento terá. Ele serve para:

  • Otimizar a busca: Chunks menores permitem busca mais precisa, mas podem perder contexto
  • Manter contexto: Chunks maiores preservam mais contexto, mas podem incluir informações irrelevantes
  • Limitar tokens: Garantir que os chunks caibam no limite de tokens do modelo LLM

Como escolher o Chunksize ideal?

A escolha do chunksize depende de vários fatores:

  • Tipo de conteúdo: Textos técnicos podem precisar de chunks maiores (800-1200 tokens), enquanto textos simples podem funcionar bem com chunks menores (200-400 tokens)
  • Modelo LLM: Modelos com janelas de contexto maiores podem processar chunks maiores
  • Precisão vs Contexto: Chunks menores (200-400) para precisão máxima, chunks médios (500-800) para equilíbrio, chunks grandes (1000-2000) para máximo contexto

Recomendação geral: Comece com chunksize de 500-800 tokens e ajuste baseado nos resultados. Para documentos técnicos ou acadêmicos, considere valores entre 800-1200 tokens.

Overlap (Sobreposição)

O overlap é a quantidade de texto que se sobrepõe entre chunks consecutivos. Ele é medido em tokens ou caracteres e garante que informações importantes que ficam na fronteira entre chunks não sejam perdidas.

Para que serve o Overlap?

O overlap resolve um problema comum na divisão de documentos: quando um conceito ou informação importante fica dividido entre dois chunks, pode ser perdido durante a recuperação. O overlap serve para:

  • Preservar contexto: Garantir que frases ou parágrafos importantes não sejam cortados no meio
  • Melhorar recuperação: Aumentar as chances de recuperar informações relevantes que estão nas bordas dos chunks
  • Manter continuidade: Preservar a continuidade de ideias que se estendem por múltiplos chunks

Como configurar o Overlap?

O overlap geralmente é configurado como uma porcentagem do chunksize ou um valor fixo em tokens:

  • Overlap pequeno (10-20%): Para textos simples e bem estruturados
  • Overlap médio (20-30%): Recomendado para a maioria dos casos
  • Overlap grande (30-50%): Para documentos técnicos complexos ou quando a precisão é crítica

Exemplo prático: Se você tem chunksize de 500 tokens e overlap de 20%, cada chunk terá 100 tokens sobrepostos com o chunk anterior e o próximo.

Recomendação: Comece com overlap de 20-25% do chunksize. Se notar que informações importantes estão sendo perdidas, aumente gradualmente.

K Documents (Número de Documentos Recuperados)

O k documents (ou top-k) é o número de chunks que serão recuperados e enviados como contexto para o modelo de linguagem quando uma pergunta é feita. Este parâmetro controla quanta informação contextual o modelo terá disponível para gerar a resposta.

Para que serve o K Documents?

O k documents determina o volume de contexto que será fornecido ao modelo:

  • Mais contexto: Valores maiores de k fornecem mais informações, mas podem incluir conteúdo menos relevante
  • Mais precisão: Valores menores de k focam apenas no conteúdo mais relevante, mas podem perder contexto importante
  • Limite de tokens: O k deve ser ajustado considerando o limite de tokens do modelo LLM

Como escolher o valor de K?

A escolha do k depende de vários fatores:

  • Complexidade da pergunta: Perguntas simples podem precisar de k=3-5, perguntas complexas podem precisar de k=5-10
  • Tamanho dos chunks: Chunks maiores podem precisar de k menor, chunks menores podem precisar de k maior
  • Limite do modelo: Considere quantos tokens o modelo pode processar (ex: GPT-4 pode lidar com mais contexto que modelos menores)
  • Qualidade da busca: Se a busca vetorial é muito precisa, k menor pode ser suficiente

Recomendação geral:

  • k=3-5: Para perguntas diretas e específicas
  • k=5-7: Para a maioria dos casos de uso (recomendado)
  • k=7-10: Para perguntas complexas que requerem múltiplas fontes de informação
  • k>10: Apenas para casos muito específicos, pois pode adicionar ruído

Relação entre os Parâmetros

É importante entender como esses parâmetros interagem:

  • Chunksize × K: O total de tokens será aproximadamente chunksize × k. Certifique-se de que isso não exceda o limite do modelo
  • Overlap × Chunksize: Overlap muito grande em relação ao chunksize pode criar redundância excessiva
  • K × Qualidade da busca: Se a busca vetorial é muito precisa, você pode usar k menor

Exemplo de cálculo: Se você tem chunksize de 500 tokens, overlap de 20% (100 tokens), e k=5, o modelo receberá aproximadamente 2500 tokens de contexto (500 × 5), considerando que há sobreposição.

Testando e Otimizando Configurações RAG

A melhor forma de encontrar as configurações ideais é através de testes práticos. Recomendamos usar o Anything LLM para testar diferentes configurações, pois ele oferece uma interface intuitiva para ajustar esses parâmetros.

Para começar a testar configurações RAG com Anything LLM, siga nosso tutorial completo: Como Criar Seu Próprio Agente Inteligente com Anything LLM. O Anything LLM permite ajustar facilmente chunksize, overlap e k documents através de sua interface, facilitando a experimentação e otimização.

Processo de Otimização

  1. Comece com valores padrão: Use chunksize=500, overlap=20%, k=5
  2. Teste com suas perguntas: Faça perguntas típicas do seu caso de uso
  3. Avalie as respostas: Verifique se as respostas são precisas e completas
  4. Ajuste incrementalmente: Modifique um parâmetro por vez e observe o impacto
  5. Documente os resultados: Mantenha um registro das configurações que funcionam melhor

Boas Práticas

  • Comece simples: Use valores padrão recomendados antes de otimizar
  • Teste com dados reais: Use documentos e perguntas do seu caso de uso real
  • Monitore o uso de tokens: Acompanhe quantos tokens estão sendo usados para evitar custos excessivos
  • Considere o tipo de documento: Documentos técnicos podem precisar de configurações diferentes de documentos gerais
  • Balance precisão e custo: Mais chunks (k maior) e overlap maior aumentam custos, mas podem melhorar qualidade

Conclusão

Configurar corretamente chunksize, overlap e k documents é essencial para obter os melhores resultados em sistemas RAG. Não existe uma configuração universal perfeita - o ideal é testar e ajustar baseado no seu caso de uso específico.

Lembre-se de que esses parâmetros trabalham em conjunto. Um chunksize bem escolhido, combinado com overlap adequado e k documents otimizado, resultará em um sistema RAG mais eficiente e preciso.

Para colocar em prática essas configurações, recomendamos usar o Anything LLM, que oferece uma interface amigável para experimentar e otimizar esses parâmetros. Confira nosso tutorial: Como Criar Seu Próprio Agente Inteligente com Anything LLM.

Voltar para o blog