16 pontos por xguru 2024-09-21 | Ainda não há comentários. | Compartilhar no WhatsApp
  • Para que um modelo de IA seja útil em um contexto específico, ele precisa ter acesso ao conhecimento de fundo
  • Em geral, desenvolvedores usam Retrieval-Augmented Generation (RAG) para ampliar o conhecimento dos modelos de IA
  • Soluções tradicionais de RAG muitas vezes não conseguem recuperar informações relevantes porque removem o contexto ao codificar as informações
  • Contextual Retrieval é uma forma de melhorar significativamente a etapa de recuperação no RAG, usando duas subtecnologias: Contextual Embeddings e Contextual BM25
  • Esse método pode reduzir a taxa de falha de recuperação em 49% e, quando combinado com reranking, pode chegar a 67%
  • Desenvolvedores podem implantar facilmente sua própria solução de Contextual Retrieval com o Claude

Observações sobre o uso de prompts longos

  • Se a base de conhecimento tiver menos de 200.000 tokens, é possível incluí-la inteira no prompt fornecido ao modelo
  • A Anthropic lançou recentemente o prompt caching no Claude, tornando essa abordagem muito mais rápida e econômica
  • Quando a base de conhecimento cresce, é necessária uma solução mais escalável, e é aí que o Contextual Retrieval se torna necessário

Fundamentos de RAG: escalando para grandes bases de conhecimento

  • Para bases de conhecimento maiores que não cabem na janela de contexto, a solução comum é RAG
  • O RAG divide a base de conhecimento em chunks menores, converte esses chunks em embeddings vetoriais e os armazena em um banco de dados vetorial que pode ser consultado por similaridade semântica
  • Modelos de embedding são excelentes para capturar relações semânticas, mas podem deixar passar correspondências exatas importantes
  • BM25 é uma função de ranking que usa correspondência lexical para encontrar palavras ou frases exatas, sendo especialmente eficaz em consultas com identificadores únicos ou termos técnicos
  • Soluções de RAG podem recuperar os chunks mais aplicáveis com mais precisão ao combinar embeddings e BM25 usando as seguintes etapas:
    • Dividir a base de conhecimento (o "corpus" de documentos) em chunks de texto menores, normalmente com algumas centenas de tokens ou menos
    • Gerar codificação TF-IDF e embeddings semânticos para esses chunks
    • Usar BM25 para encontrar os principais chunks com base em correspondências exatas
    • Usar embeddings para encontrar os principais chunks com base em similaridade semântica
    • Combinar os resultados de (3) e (4) com técnicas de fusão de ranking e remover duplicatas
    • Adicionar os top K chunks ao prompt para gerar a resposta

Introduzindo o Contextual Retrieval

  • No RAG tradicional, como os documentos são divididos em chunks menores, chunks individuais podem não ter contexto suficiente
  • O Contextual Retrieval resolve esse problema adicionando, antes de cada chunk, um contexto descritivo específico daquele chunk
  • O Claude oferece suporte à implementação de Contextual Retrieval com um prompt que o instrui a fornecer um contexto conciso e específico para cada chunk, usando o contexto do documento inteiro para descrever o chunk
  • O Contextual Retrieval pode ser usado com baixo custo junto com o Claude graças ao prompt caching

Melhorias de desempenho

  • Contextual Embeddings reduzem a taxa de falha de recuperação dos 20 principais chunks em 35% (5,7% → 3,7%)
  • A combinação de Contextual Embeddings com Contextual BM25 reduz a taxa de falha em 49% (5,7% → 2,9%)

Considerações de implementação

  • Considere como os documentos serão divididos em chunks
  • O Contextual Retrieval melhora o desempenho com qualquer modelo de embedding, mas alguns modelos podem se beneficiar mais
  • Um prompt genérico funciona bem, mas resultados melhores podem ser obtidos com prompts ajustados para domínios ou casos de uso específicos
  • Adicionar mais chunks à janela de contexto aumenta a chance de incluir informações relevantes
  • Sempre execute avaliações para verificar se fornecer chunks contextualizados e distinguir contexto de chunk pode melhorar a geração de respostas

Melhorando ainda mais o desempenho com reranking

  • Reranking é uma técnica de filtragem amplamente usada para garantir que apenas os chunks mais relevantes sejam enviados ao modelo
  • É feita uma recuperação inicial para trazer os principais chunks potencialmente relevantes
  • Os top N chunks e a consulta do usuário são enviados a um modelo de reranking
  • O modelo de reranking atribui uma pontuação a cada chunk com base em sua relevância e importância para o prompt, e então seleciona os top K chunks
  • Os top K chunks são enviados ao modelo como contexto para gerar o resultado final
  • Contextual Embedding reranqueado e Contextual BM25 reduzem a taxa de falha de recuperação dos 20 principais chunks em 67% (5,7% → 1,9%)
  • Considerações sobre custo e latência
    • O reranking pode afetar a latência e o custo, especialmente ao reranquear um grande número de chunks
    • Existe um trade-off entre reranquear mais chunks para obter melhor desempenho e reranquear menos para reduzir latência e custo

Conclusão

  • Foram realizados muitos testes, em diferentes tipos de datasets, comparando várias combinações de todas as técnicas descritas acima (modelo de embedding, uso de BM25, uso de recuperação contextual, uso de reranking e número total de resultados top K recuperados)
  • Os resultados foram os seguintes:
    • Embeddings + BM25 são melhores do que embeddings sozinhos
    • Entre os embeddings testados, Voyage e Gemini foram os melhores
    • Enviar os 20 principais chunks ao modelo é mais eficaz do que enviar apenas os 10 ou 5 principais
    • Adicionar contexto aos chunks melhora significativamente a precisão da recuperação
    • Reranking é melhor do que não usar reranking
    • Todos esses benefícios são cumulativos: para maximizar o ganho de desempenho, é possível combinar Contextual BM25 com Contextual Embeddings (do Voyage ou Gemini) após a etapa de reranking e adicionar 20 chunks ao prompt
  • A recomendação é que todos os desenvolvedores que trabalham com Knowledge Base experimentem essa abordagem usando o cookbook fornecido para atingir um novo nível de desempenho

Ainda não há comentários.

Ainda não há comentários.