12 points par xguru 2024-07-03 | 1 commentaires | Partager sur WhatsApp
  • Une suite de pipelines de données et de transformations conçue pour utiliser les puissantes capacités des LLM afin d’extraire des données structurées pertinentes à partir de texte non structuré
  • Une approche fondée sur les graphes qui permet de faire du question-réponse sur des jeux de données jamais vus auparavant
  • Outil présenté en février, désormais publié en open source pour offrir une recherche d’informations plus structurée et une génération de réponses plus complète

Fonctionnalités principales

  • Extraction automatique de graphes de connaissances riches à partir d’un ensemble de documents texte à l’aide de grands modèles de langage (LLM)
  • Cet index de données fondé sur un graphe peut restituer la structure sémantique des données avant la requête de l’utilisateur
  • Détection hiérarchique de « communautés » de nœuds fortement connectés afin de diviser le graphe en plusieurs niveaux, des sujets de haut niveau aux sujets de bas niveau
  • En utilisant les LLM pour résumer chacune de ces communautés, on obtient un résumé hiérarchique du jeu de données, ce qui permet de le comprendre sans avoir à savoir à l’avance quelles questions poser
  • Chaque communauté sert de base à un résumé de communauté décrivant les entités et relations correspondantes

Atouts pour répondre aux questions portant sur l’ensemble du jeu de données

  • Comment ces « résumés de communauté » peuvent-ils aider sur les questions globales (portant sur l’ensemble du jeu de données), là où une approche RAG naïve fondée sur la recherche vectorielle montre ses limites ?
  • Par exemple, pour une question comme « Quels sont les principaux thèmes du jeu de données ? », un RAG naïf finit souvent par fournir une réponse trompeuse
  • Répondre à une question globale nécessite de prendre en compte l’ensemble des textes d’entrée
  • Les résumés de communauté permettent de répondre à ces questions globales en utilisant une approche map-reduce qui conserve tous les contenus pertinents du contexte global des données :
    1. Regrouper les rapports de communauté jusqu’à la taille de fenêtre de contexte du LLM
    2. Mapper la question sur chaque groupe pour produire des réponses de communauté
    3. Réduire toutes les réponses de communauté pertinentes en une réponse globale finale

Évaluation et résultats

  • Pour comparer cette approche à un RAG naïf et à un résumé hiérarchique du texte source, GPT-4 a été utilisé pour générer différentes questions de sense-making centrées sur l’activité
  • Trois critères d’évaluation ont été retenus pour les réponses générées : comprehensiveness (traiter en détail tous les aspects), diversity (offrir des points de vue variés), empowerment (aider à une prise de décision éclairée)
  • GraphRAG obtient de meilleures performances que le RAG naïf sur les plans de la comprehensiveness et de la diversity (~70-80 % de taux de victoire)
  • GraphRAG montre aussi de meilleures performances que le résumé du texte source, avec un coût en tokens plus faible, sur ces aspects lorsqu’il utilise des résumés de communauté de niveau intermédiaire et bas (~20-70 % de tokens utilisés par requête)
  • Pour les communautés du niveau le plus élevé, les performances sont compétitives face au résumé hiérarchique du texte source, avec un coût en tokens bien plus faible (~2-3 % de tokens utilisés par requête)

Enseignements de recherche et orientations futures

  • Le premier cycle de recherche a montré que les LLM peuvent dériver avec succès des graphes de connaissances riches à partir d’entrées textuelles non structurées
  • Ces graphes peuvent prendre en charge un nouveau type de requêtes globales pour lesquelles le RAG naïf ne peut pas générer de réponse adaptée et où le résumé hiérarchique du texte source est trop coûteux
  • Différentes approches sont actuellement explorées pour réduire ces coûts tout en conservant le coût initial de génération de l’index graphe
  • Des travaux récents sur l’ajustement automatique des prompts d’extraction LLM au domaine du problème illustrent comment réduire le travail préalable nécessaire pour personnaliser ces prompts, énumérer les types d’entités et créer des exemples few-shot
  • L’objectif, en rendant GraphRAG et les solution accelerators disponibles publiquement, est de rendre l’approche RAG fondée sur les graphes plus accessible aux utilisateurs et cas d’usage pour lesquels une compréhension globale des données est essentielle

1 commentaires

 
xguru 2024-07-04
Commentaires Hacker News
  • Le projet GraphRAG de Microsoft utilise une méthode permettant de construire un graphe de connaissances sans bibliothèque d’extraction récente

    • Cela est peut-être possible parce que des modèles comme GPT-4 suivent bien des consignes de format précises
    • Il leur fournit des exemples pour leur faire respecter le schéma souhaité
  • Très heureux que Microsoft ait publié GraphRAG en open source

    • Prévoit d’essayer GraphRAG et Llama3 sur un MacBook
    • Pense que cet outil pourrait changer la donne
  • Partage un lien pour ceux qui recherchent plus d’informations sur la méthode GraphRAG

  • Le projet GraphRAG montre qu’une base de données vectorielle peut fournir une solution RAG complète pour des requêtes de recherche complexes

    • Charger simplement du texte dans un LLM ne suffit pas pour construire un graphe de connaissances précis
    • A écrit GraphRAG-SDK pour générer une ontologie fiable à cette fin
  • Les graphes de connaissances ne remplacent pas la recherche sémantique traditionnelle, mais apportent de nouvelles capacités lors de l’exécution de RAG

    • Ils permettent d’explorer de longs contextes ou différents contextes de manière cohérente et efficace
    • Les résultats obtenus en essayant de générer des graphes avec un LLM n’étaient pas satisfaisants
    • A hâte d’essayer cela
  • Si la compréhension du papier est correcte, le LLM est exécuté plusieurs fois au moment de l’indexation pour extraire les entités et construire l’index du graphe

    • Le graphe est exécuté plusieurs fois pour créer des clusters
    • Au moment de la requête, tous les clusters sont exécutés afin de générer et noter une réponse pour chacun
    • Toutes les réponses sauf celle ayant le score le plus bas sont ensuite exécutées pour produire une « réponse globale »
    • Ces besoins de calcul pourraient devenir intenables pour de grands jeux de données
  • A déjà mené plusieurs petits projets avec des graphes et des LLM, et a confirmé que cette approche fonctionne

    • A réalisé que cela pouvait être résolu avec du prompt engineering et plusieurs passes
    • Compte essayer cela et, si les résultats sont bons, fera des efforts pour sortir de l’environnement Python
  • Se demande si cela a un lien avec le moteur de requête Knowledge Graph RAG de LlamaIndex

  • Trouve intéressant que la guerre russo-ukrainienne ait été choisie comme exemple

    • Cela pourrait être un choix délibéré visant des contrats d’analyse de données militaires
  • Après avoir lu le papier, avait envie d’essayer ce projet

    • A tenté de l’implémenter directement, mais pensait que le code n’arriverait que quelques semaines plus tard
    • La patience a porté ses fruits