3 pontos por GN⁺ 2024-09-22 | 1 comentários | Compartilhar no WhatsApp

Introdução ao Contextual Retrieval

  • Para que um modelo de IA seja útil em um contexto específico, ele precisa de conhecimento de base
  • Um chatbot de suporte ao cliente precisa de conhecimento sobre um negócio específico, e um bot de análise jurídica precisa de amplo conhecimento sobre casos anteriores
  • Os desenvolvedores normalmente usam Retrieval-Augmented Generation (RAG) para aprimorar o conhecimento dos modelos de IA
  • Soluções tradicionais de RAG frequentemente não conseguem recuperar informações relevantes porque removem o contexto ao codificar as informações

Método de Contextual Retrieval

  • Contextual Retrieval é um método que melhora significativamente a etapa de recuperação do RAG
  • Ele usa duas subtecnologias: Contextual Embeddings e Contextual BM25
  • Reduz o número de recuperações malsucedidas em 49% e, quando combinado com reranking, pode reduzir em até 67%
  • É possível implantar facilmente uma solução de Contextual Retrieval usando Claude

Simplesmente usar prompts mais longos

  • Se a base de conhecimento tiver menos de 200.000 tokens, pode ser melhor fornecer toda a base de conhecimento ao modelo
  • Com o recurso de prompt caching do Claude, essa abordagem é mais rápida e mais econômica
  • À medida que a base de conhecimento cresce, é necessária uma solução mais escalável

Conceitos básicos de RAG

  • RAG é usado para lidar com grandes bases de conhecimento
  • A base de conhecimento é dividida em pequenos trechos de texto, e um modelo de embeddings é usado para codificar o significado
  • Os dados são armazenados em um banco de dados vetorial para recuperação com base em similaridade semântica
  • BM25 é eficaz para encontrar correspondências exatas de palavras ou frases

Limitações do RAG tradicional

  • O processo de dividir documentos em pequenos trechos pode destruir o contexto
  • Por exemplo, para uma pergunta sobre informações financeiras de uma empresa específica, pode ser retornado um trecho sem contexto suficiente

Implementação de Contextual Retrieval

  • Um índice de embeddings e um índice BM25 são criados adicionando contexto descritivo a cada trecho
  • Claude é usado para gerar um contexto conciso para cada trecho
  • O uso de prompt caching pode reduzir custos

Melhoria de desempenho

  • Contextual Embeddings reduz a taxa de falha de recuperação em 35%
  • Combinar Contextual Embeddings com Contextual BM25 reduz a taxa de falha de recuperação em 49%

Considerações de implementação

  • É preciso considerar como dividir os documentos em trechos, a escolha do modelo de embeddings e prompts personalizados de contextualização
  • Incluir mais trechos aumenta a probabilidade de conter informações relevantes

Melhoria de desempenho com reranking

  • O reranking melhora a qualidade da resposta ao enviar ao modelo apenas os trechos mais relevantes
  • Contextual Embedding e Contextual BM25 com reranking reduzem a taxa de falha de recuperação em 67%

Conclusão

  • Combinar Embeddings e BM25 pode gerar resultados melhores
  • Os embeddings da Voyage e do Gemini são os mais eficazes
  • Enviar os 20 principais trechos ao modelo é a abordagem mais eficaz
  • Adicionar contexto melhora significativamente a precisão da recuperação
  • O reranking melhora ainda mais o desempenho

Resumo do GN⁺

  • Contextual Retrieval é um método que pode melhorar significativamente a precisão de recuperação de modelos de IA
  • É especialmente útil ao lidar com grandes bases de conhecimento
  • Com o recurso de prompt caching do Claude, ele pode ser implementado de forma econômica
  • Outros projetos com funcionalidades semelhantes incluem o GPT-3 da OpenAI e o BERT do Google

1 comentários

 
GN⁺ 2024-09-22
Comentários no Hacker News
  • Primeiro comentário

    • Compartilha a experiência de construir RAG corporativo para órgãos governamentais
    • Resultados de testes A/B usando métricas do RAGAS:
      • Busca híbrida (semântica + vetorial) e reranqueamento com base em LLM não trouxeram grandes mudanças em perguntas de avaliação sintéticas
      • O HyDE piorou gravemente a qualidade das respostas e da busca em perguntas de avaliação sintéticas
    • Busca híbrida é sempre útil, mas um único método nem sempre vence
    • A busca semântica do Azure AI Search é suficientemente eficaz junto com similaridade vetorial
    • É necessário testar vários métodos
    • Próximas tentativas:
      • RAPTOR
      • SelfRAG
      • Agentic RAG
      • Refinamento de consulta (expansão e subconsultas)
      • GraphRAG
    • Lições aprendidas:
      • Deve-se sempre usar linha de base e experimentos para tentar refutar a hipótese nula
      • Usar três tipos de perguntas/respostas de avaliação: escritas por especialistas, perguntas de usuários reais e perguntas sintéticas
  • Segundo comentário

    • Gosta da forma como o cache de prompt é aproveitado
    • Graças ao cache, o custo de prompts caiu para 1/10
    • A economia de custos com cache torna possíveis vários truques
    • Compartilha notas sobre busca contextual e cache de prompt
  • Terceiro comentário

    • A abordagem de expandir chunks básicos usando LLM para melhorar resultados de RAG é comum
    • Expansão de consulta com HyDE nem sempre melhora
    • A novidade da Anthropic é a introdução do cache de prompt
    • O cache de prompt reduz custos ao fornecer documentos longos como contexto
    • Está muito satisfeito com a API da Cohere
  • Quarto comentário

    • Usa uma abordagem de dividir documentos em chunks com base nos cabeçalhos h1, h2 e h3, e adicionar o cabeçalho no início do chunk
    • Exemplo:
      • Chunk antigo: "A dosagem usual para adultos é de 1 a 2 comprimidos ou cápsulas de 200 mg, 3 vezes ao dia"
      • Chunk novo: "# Febre ## Tratamento --- A dosagem usual para adultos é de 1 a 2 comprimidos ou cápsulas de 200 mg, 3 vezes ao dia"
    • Essa abordagem funciona bem mesmo sem LLM
  • Quinto comentário

    • É contra essa técnica
    • Embeddings vetoriais podem se concentrar demais no primeiro bloco de texto antes da quebra de linha
    • Busca por IDF contorna isso até certo ponto, mas não o suficiente
    • Com "semantic boost", é possível deslocar os embeddings para o título, resumo etc. do documento
    • Compartilha uma explicação do "semantic boost" da API da Trieve
  • Sexto comentário

    • Usa uma estratégia de "lista encadeada" para que chunks tenham vários ponteiros para itens referenciados
    • Explica isso como uma forma em que cada comentário se torna um ponteiro para a postagem original
    • Compartilha um exemplo dessa técnica
  • Sétimo comentário

    • A alegação de que usar 200k tokens produz as melhores respostas em datasets pequenos difere da sua experiência
    • Quanto maior o prompt, mais inconsistente fica a saída e mais difícil é seguir instruções
    • Pergunta se outras pessoas tiveram experiência parecida e se há formas de evitar isso
  • Oitavo comentário

    • Em vez de usar RAG para buscar conhecimento, enfrenta o problema de buscar regras
    • Propõe a abordagem de treinar um pequeno classificador para julgar se uma regra específica pode se aplicar
    • Exemplo: determinar se uma regra específica se aplica em um jogo multi-user dungeon
    • Decidir se a regra se aplica ou não é um problema mais abstrato e difícil
    • Está procurando uma forma de resolver esse problema
  • Nono comentário

    • Se a base de conhecimento tiver menos de 200.000 tokens (cerca de 500 páginas)
    • Gostaria que a Anthropic disponibilizasse o tokenizador
  • Décimo comentário

    • Está esperando o dia em que a indústria de IA vai voltar ao TF-IDF