3 points par GN⁺ 2024-09-22 | 1 commentaires | Partager sur WhatsApp

Présentation de Contextual Retrieval

  • Pour qu’un modèle d’IA soit utile dans un contexte précis, il a besoin de connaissances de fond
  • Un chatbot de support client a besoin de connaissances sur une entreprise spécifique, et un bot d’analyse juridique a besoin d’une vaste connaissance des cas passés
  • Les développeurs utilisent généralement le Retrieval-Augmented Generation (RAG) pour enrichir les connaissances d’un modèle d’IA
  • Les solutions RAG traditionnelles échouent souvent à retrouver les informations pertinentes, car elles suppriment le contexte lors de l’encodage des informations

Méthode de Contextual Retrieval

  • Contextual Retrieval est une méthode qui améliore fortement l’étape de recherche du RAG
  • Elle utilise deux sous-techniques : Contextual Embeddings et Contextual BM25
  • Elle réduit de 49 % le nombre de recherches échouées, et jusqu’à 67 % lorsqu’elle est combinée avec un reranking
  • Il est possible de déployer facilement une solution Contextual Retrieval avec Claude

Utiliser simplement un prompt plus long

  • Si la base de connaissances contient moins de 200 000 tokens, il peut être préférable de fournir l’intégralité de la base au modèle
  • Avec la fonctionnalité de prompt caching de Claude, cette approche est plus rapide et plus rentable
  • Quand la base de connaissances grossit, une solution plus scalable devient nécessaire

Concepts de base du RAG

  • Le RAG est utilisé pour traiter de grandes bases de connaissances
  • La base de connaissances est divisée en petits fragments de texte, puis un modèle d’embeddings est utilisé pour en encoder le sens
  • Ces fragments sont stockés dans une base de données vectorielle afin d’être recherchés selon leur similarité sémantique
  • BM25 est efficace pour trouver des correspondances exactes de mots ou d’expressions

Limites du RAG traditionnel

  • Le découpage des documents en petits fragments peut détruire le contexte
  • Par exemple, pour une question recherchant les informations financières d’une entreprise donnée, un fragment sans contexte suffisant peut être renvoyé

Implémentation de Contextual Retrieval

  • Un contexte descriptif est ajouté à chaque fragment afin de créer les index d’embeddings et BM25
  • Claude est utilisé pour générer un contexte concis pour chaque fragment
  • Le prompt caching peut être utilisé pour réduire les coûts

Amélioration des performances

  • Contextual Embeddings réduit de 35 % le taux d’échec de la recherche
  • La combinaison de Contextual Embeddings et de Contextual BM25 réduit le taux d’échec de la recherche de 49 %

Points à considérer pour l’implémentation

  • Il faut prendre en compte la manière de découper les documents en fragments, le choix du modèle d’embeddings et les prompts de contextualisation personnalisés
  • Inclure davantage de fragments augmente la probabilité d’y trouver des informations pertinentes

Amélioration des performances via le reranking

  • Le reranking améliore la qualité des réponses en ne transmettant au modèle que les fragments les plus pertinents
  • Contextual Embedding et Contextual BM25 avec reranking réduisent le taux d’échec de la recherche de 67 %

Conclusion

  • Combiner Embeddings et BM25 permet d’obtenir de meilleurs résultats
  • Les embeddings de Voyage et Gemini sont les plus efficaces
  • Transmettre au modèle les 20 meilleurs fragments est l’approche la plus efficace
  • L’ajout de contexte améliore fortement la précision de la recherche
  • Le reranking améliore encore davantage les performances

Résumé de GN⁺

  • Contextual Retrieval est une méthode qui peut améliorer fortement la précision de recherche des modèles d’IA
  • Elle est particulièrement utile pour traiter de grandes bases de connaissances
  • La fonctionnalité de prompt caching de Claude permet une implémentation rentable
  • Parmi d’autres projets dotés de fonctionnalités similaires, on peut citer GPT-3 d’OpenAI et BERT de Google

1 commentaires

 
GN⁺ 2024-09-22
Avis Hacker News
  • Premier avis

    • Partage d’expérience sur la mise en place d’un RAG d’entreprise pour des organismes gouvernementaux
    • Résultats des tests A/B avec les métriques RAGAS :
      • La recherche hybride (sémantique + vectorielle) et le reranking basé sur un LLM n’ont presque rien changé sur des questions d’évaluation synthétiques
      • HyDE a gravement dégradé la qualité des réponses et de la recherche sur des questions d’évaluation synthétiques
    • La recherche hybride est toujours utile, mais aucune méthode ne gagne à tous les coups
    • La recherche sémantique d’Azure AI Search est suffisamment efficace avec la similarité vectorielle
    • Il est nécessaire de tester différentes méthodes
    • Prochaines pistes à essayer :
      • RAPTOR
      • SelfRAG
      • Agentic RAG
      • Affinage des requêtes (expansion et sous-requêtes)
      • GraphRAG
    • Enseignements tirés :
      • Il faut toujours utiliser une baseline et des expérimentations pour tenter de réfuter l’hypothèse nulle
      • Utiliser trois types de questions/réponses d’évaluation : rédigées par des experts, questions de vrais utilisateurs, questions synthétiques
  • Deuxième avis

    • Apprécie l’approche qui exploite le prompt caching
    • Grâce au caching, le coût des prompts a été réduit à un dixième
    • Les économies réalisées grâce au caching permettent diverses astuces
    • Partage de notes sur la recherche contextuelle et le prompt caching
  • Troisième avis

    • L’approche consistant à étendre les chunks de base avec un LLM pour améliorer les résultats RAG est courante
    • L’expansion de requête avec HyDE n’apporte pas toujours d’amélioration
    • La nouveauté côté Anthropic est l’introduction du prompt caching
    • Le prompt caching réduit les coûts en fournissant de longs documents comme contexte
    • L’API de Cohere donne entière satisfaction
  • Quatrième avis

    • Utilise une méthode qui découpe les documents en chunks selon les titres h1, h2, h3, puis ajoute les en-têtes au début du chunk
    • Exemple :
      • Chunk existant : "La posologie habituelle pour les adultes est de 1 à 2 comprimés ou gélules de 200 mg, 3 fois par jour"
      • Nouveau chunk : "# Fièvre ## Traitement --- La posologie habituelle pour les adultes est de 1 à 2 comprimés ou gélules de 200 mg, 3 fois par jour"
    • Cette méthode fonctionne bien même sans LLM
  • Cinquième avis

    • S’oppose à cette technique
    • Les embeddings vectoriels peuvent se concentrer de manière excessive sur le premier bloc de texte séparé par un saut de ligne
    • La recherche IDF compense cela dans une certaine mesure, mais pas suffisamment
    • On peut utiliser un "semantic boost" pour faire porter davantage l’embedding sur le titre, le résumé, etc. du document
    • Partage d’une explication du "semantic boost" de l’API Trieve
  • Sixième avis

    • Utilise une stratégie de "liste chaînée" pour que les chunks aient plusieurs pointeurs vers les éléments référencés
    • Explique cela comme si chaque commentaire était un pointeur vers le post d’origine
    • Partage un exemple de cette technique
  • Septième avis

    • L’affirmation selon laquelle l’usage de 200k tokens donne les meilleures réponses sur de petits jeux de données ne correspond pas à son expérience
    • Plus le prompt grossit, plus la sortie devient incohérente et plus il est difficile de suivre les instructions
    • Se demande si d’autres ont vécu la même chose et comment l’éviter
  • Huitième avis

    • Est confronté à un problème où, au lieu de récupérer des connaissances avec un RAG, il faut récupérer des règles
    • Propose l’approche consistant à entraîner un petit classifieur pour déterminer si une règle précise peut s’appliquer
    • Exemple : décider si une règle donnée s’applique dans un jeu de type multi-user dungeon
    • Déterminer si une règle s’applique est un problème plus abstrait et plus difficile
    • Cherche un moyen de résoudre ce problème
  • Neuvième avis

    • Si la base de connaissances fait moins de 200 000 tokens (environ 500 pages)
    • Souhaite qu’Anthropic publie son tokenizer
  • Dixième avis

    • Attend le jour où l’industrie de l’IA reviendra au TF-IDF