16 points par xguru 2024-09-21 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Pour qu’un modèle d’IA soit utile dans un contexte donné, il doit avoir accès à des connaissances de fond
  • Les développeurs utilisent généralement le Retrieval-Augmented Generation (RAG) pour améliorer les connaissances d’un modèle d’IA
  • Les solutions RAG traditionnelles retirent souvent le contexte lors de l’encodage des informations, ce qui les empêche parfois de retrouver les informations pertinentes
  • Contextual Retrieval est une méthode qui améliore fortement l’étape de recherche du RAG, en s’appuyant sur deux sous-techniques : Contextual Embeddings et Contextual BM25
  • Cette méthode peut réduire le taux d’échec de la recherche de 49 %, et jusqu’à 67 % lorsqu’elle est combinée au reranking
  • Les développeurs peuvent facilement déployer leur propre solution de Contextual Retrieval avec Claude

Remarques sur l’utilisation de prompts longs

  • Si la base de connaissances contient moins de 200 000 tokens, il est possible d’inclure toute la base directement dans le prompt fourni au modèle
  • Anthropic a récemment lancé le prompt caching dans Claude, ce qui rend cette approche bien plus rapide et plus rentable
  • Quand la Knowledge Base grossit, une solution plus scalable devient nécessaire, et c’est là que Contextual Retrieval entre en jeu

Les bases du RAG : passer à l’échelle avec de grandes bases de connaissances

  • Pour les bases de connaissances plus volumineuses qui ne tiennent pas dans la fenêtre de contexte, la solution la plus courante est le RAG
  • Le RAG consiste à décomposer la base de connaissances en petits chunks, à les convertir en vector embeddings, puis à les stocker dans une base de données vectorielle interrogeable par similarité sémantique
  • Les modèles d’embedding excellent à capturer les relations sémantiques, mais peuvent manquer des correspondances exactes pourtant importantes
  • BM25 est une fonction de ranking qui utilise le matching lexical pour retrouver des mots ou expressions exacts, particulièrement efficace pour les requêtes contenant des identifiants uniques ou des termes techniques
  • Les solutions RAG peuvent récupérer plus précisément les chunks les plus pertinents en combinant embeddings et BM25 selon les étapes suivantes :
    • Décomposer la base de connaissances (le « corpus » de documents) en plus petits chunks de texte, généralement de quelques centaines de tokens ou moins
    • Générer pour ces chunks un encodage TF-IDF et des embeddings sémantiques
    • Utiliser BM25 pour trouver les meilleurs chunks sur la base des correspondances exactes
    • Utiliser les embeddings pour trouver les meilleurs chunks sur la base de la similarité sémantique
    • Combiner les résultats de (3) et (4) avec des techniques de fusion de classement et supprimer les doublons
    • Ajouter les K meilleurs chunks au prompt pour générer la réponse

Introduction de Contextual Retrieval

  • Dans le RAG traditionnel, les documents sont découpés en plus petits chunks, ce qui peut faire manquer de contexte à chaque chunk pris isolément
  • Contextual Retrieval résout ce problème en ajoutant devant chaque chunk une description contextuelle spécifique à ce chunk
  • Claude prend en charge l’implémentation de Contextual Retrieval à l’aide d’un prompt lui demandant de produire, à partir du contexte du document complet, un contexte concis propre à chaque chunk
  • Grâce au prompt caching, Contextual Retrieval est disponible avec Claude à faible coût

Amélioration des performances

  • Contextual Embeddings réduit de 35 % le taux d’échec de récupération des 20 meilleurs chunks (5,7 % → 3,7 %)
  • La combinaison de Contextual Embeddings et de Contextual BM25 réduit le taux d’échec de 49 % (5,7 % → 2,9 %)

Points à considérer lors de l’implémentation

  • Réfléchir à la façon de découper les documents en chunks
  • Contextual Retrieval améliore les performances avec tous les modèles d’embedding, mais certains peuvent en bénéficier davantage
  • Un prompt générique fonctionne bien, mais de meilleurs résultats peuvent être obtenus avec un prompt adapté à un domaine ou à un cas d’usage spécifique
  • Ajouter davantage de chunks dans la fenêtre de contexte augmente les chances d’inclure des informations pertinentes
  • Il faut toujours exécuter des évaluations afin de vérifier si fournir des chunks contextualisés et distinguer le contexte du chunk améliore la génération des réponses

Améliorer encore les performances avec le reranking

  • Le reranking est une technique de filtrage couramment utilisée pour s’assurer que seuls les chunks les plus pertinents sont transmis au modèle
  • Une recherche initiale est effectuée pour récupérer les meilleurs chunks potentiellement pertinents
  • Les N meilleurs chunks et la requête utilisateur sont transmis à un modèle de reranking
  • Le modèle de reranking attribue un score à chaque chunk selon sa pertinence et son importance vis-à-vis du prompt, puis sélectionne les K meilleurs chunks
  • Les K meilleurs chunks sont transmis au modèle comme contexte pour générer le résultat final
  • Les Contextual Embeddings rerankés et Contextual BM25 réduisent de 67 % le taux d’échec de récupération des 20 meilleurs chunks (5,7 % → 1,9 %)
  • Considérations de coût et de latence
    • Le reranking peut affecter la latence et le coût, en particulier lorsqu’un grand nombre de chunks doivent être rerankés
    • Il existe un compromis entre reranker davantage de chunks pour de meilleures performances et en reranker moins pour réduire la latence et les coûts

Conclusion

  • De nombreux tests ont été menés sur différents types de jeux de données afin de comparer diverses combinaisons de toutes les techniques décrites ci-dessus (modèle d’embedding, usage de BM25, usage de la recherche contextuelle, usage du reranking, nombre total de résultats top K récupérés)
  • Les résultats sont les suivants :
    • Embeddings + BM25 est meilleur que les embeddings seuls
    • Parmi les embeddings testés, Voyage et Gemini sont les meilleurs
    • Transmettre les 20 meilleurs chunks au modèle est plus efficace que n’en transmettre que 10 ou 5
    • Ajouter du contexte aux chunks améliore fortement la précision de la recherche
    • Le reranking est meilleur que l’absence de reranking
    • Tous ces avantages sont cumulatifs : pour maximiser les performances, il est possible de combiner Contextual BM25 avec des Contextual Embeddings (Voyage ou Gemini) passés par une étape de reranking, puis d’ajouter 20 chunks au prompt
  • Anthropic recommande à tous les développeurs travaillant avec une Knowledge Base d’expérimenter cette approche à l’aide du cookbook fourni afin d’atteindre un nouveau niveau de performance

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.