Cette section aborde les outils et les enjeux relatifs au stockage et à la récupération de la base de documents RAG. Nous traitons les deux sujets conjointement puisque la technologie de stockage limite les mécanismes de récupération disponibles pour interroger et récupérer les données stockées.
IBM watsonx Discovery, alimenté par IBM Cloud Databases for Elasticsearch, est une solution d’entreprise complète conçue pour prendre en charge et améliorer les cas d’utilisation de la recherche et de la génération augmentée par récupération (RAG). Doté de fonctionnalités robustes de recherche vectorielle, de recherche sémantique, de recherche fédérée, etc., watsonx Discovery propose un ensemble complet d’outils pour créer des applications contextuelles pilotées par l’IA. Il s’intègre de façon fluide à la plateforme d’IA conversationnelle d’IBM watsonx Assistant et aux couches d’orchestration telles que watsonx Orchestrate pour fournir des solutions métier avancées.
watsonx Discovery s’appuie sur les bases de données d’IBM Cloud for Elasticsearch, offrant un backend puissant et flexible pour gérer vos besoins de recherche d’entreprise :
Surveillance et contrôles de la santé : avec Elasticsearch, les développeurs bénéficient d’outils complets de surveillance et de contrôle de la santé pour garantir l’optimisation des intégrations, des métadonnées, de la taille des blocs et des structures des documents. La page web d’Elasticsearch permet une gestion et une mise à l’échelle simplifiées, en se concentrant sur le développement d’applications plutôt que sur les tâches opérationnelles telles que les sauvegardes, la journalisation, la surveillance et la configuration.
Fonctionnalités de recherche avancées : watsonx Discovery prend en charge divers algorithmes de recherche avancés, tels que la recherche sémantique éparse et dense, la recherche filtrée par métadonnées, la recherche lexicale, la recherche booléenne (ET/OU/NON/SLOP), la recherche par préfixe, la recherche floue et la recherche hybride. Ces capacités sont critiques pour les cas d’utilisation RAG impliquant des requêtes et documents complexes. Mettez en œuvre les types de recherche avancés décrits dans ce notebook pour optimiser votre déploiement.
Intégration avec les cadres des exigences LLM : la compatibilité d’Elasticsearch avec les cadres des exigences LLM les plus répandus, tels que LangChain et LlamaIndex, le rend idéal pour une intégration avec watsonx Discovery afin de propulser des solutions RAG.
watsonx Discovery est une solution polyvalente qui prend en charge un large éventail de méthodologies de recherche :
Le modèle ELSER (Elastic Search Embeddings) est un modèle préconstruit d’embeddings utilisé pour la recherche sémantique, permettant une recherche contextuelle même sans avoir besoin de bases de données vectorielles personnalisées.
watsonx Discovery prend en charge la recherche fédérée sur les déploiements existants, réduisant ainsi le besoin de stocker et de maintenir des données dupliquées. Cela permet d’effectuer des recherches à l’échelle de l’entreprise et d’extraire des données à partir de plusieurs silos.
watsonx Discovery simplifie l’extraction et l’indexation du contenu grâce à une suite d’outils d’ingestion de données :
Pour plus d’informations, consultez les ressources ElasticSearch suivantes pour accélérer le développement de watsonx Discovery :
watsonx Discovery s’intègre à Kibana et à Enterprise Search pour offrir une récupération et une visualisation d’informations évolutives et pilotées par l’IA, adaptées aux grands environnements d’entreprise :
Kibana pour la visualisation des données : créez des tableaux de bord et des visualisations personnalisés à partir des données ingérées par watsonx Discovery. Vous bénéficiez d’analyses en temps réel sur des indicateurs clés tels que l’extraction d’entités, l’analyse des sentiments et la classification des documents. Cela permet de suivre les tendances, les schémas et les anomalies dans les données non structurées, simplifiant le processus d’analyse et améliorant la prise de décision.
Enterprise Search pour une récupération évolutive : tirez parti du NLP et de la recherche sémantique pour permettre une récupération rapide et précise à travers des sources de données structurées et des données non structurées. Personnalisez la fonctionnalité de recherche pour indexer et extraire des données à partir de sources multiples, y compris des documents, des e-mails et des bases de données, afin de créer des applications de recherche spécifiques à un domaine qui s’intègrent directement dans le workflows de l’entreprise.
watsonx Discovery prend en charge de manière native le contrôle d’accès basé sur les rôles et les attributs afin de sécuriser l’accès au contenu et de protéger la confidentialité des données. Ainsi, les informations sensibles ne sont accessibles qu’aux utilisateurs autorisés, ce qui protège les données de l’entreprise.
watsonx Discovery peut être associé à watsonx Orchestrate pour améliorer les workflows d’automatisation grâce à la récupération de données contextuelle. Lorsqu’Orchestrate automatise un processus métier qui nécessite des informations sur des données non structurées, il s’appuie sur Discovery pour récupérer et analyser le contenu pertinent, ce qui lui permet d’effectuer des tâches intelligentes telles que :
IBM watsonx.data est une puissante plateforme de données construite sur une architecture lakehouse ouverte, combinant les atouts des entrepôts de données et des lacs de données. Elle offre un point d’entrée unique pour accéder à toutes vos données via une couche de métadonnées partagée et ouverte, ce qui en fait une solution idéale pour les entreprises qui cherchent à rationaliser leur gestion des données. Avec la prise en charge des formats de données ouvertes, des capacités intégrées d’intégration vectorielle et une interface conversationnelle alimentée par l’IA générative pour l’analyse des données, watsonx.data améliore l’analyse en temps réel et les cas d’utilisation de l’IA. La plateforme s’intègre de façon fluide avec les bases de données et les outils existants tout en offrant des options de déploiement flexibles, incluant des configurations cloud et sur site.
Un composant clé d’IBM watsonx.data est watsonx.data Milvus, une base de données vectorielle open source spécifiquement conçue pour stocker, gérer et transférer des données vectorielles de haute dimension telles que les embeddings vectoriels. Cette base de données vectorielle hautement configurable est optimisée pour indexer et récupérer efficacement les vecteurs, ce qui la rend idéale pour les cas d’utilisation nécessitant des recherches de similarité vectorielle dans les applications d’IA. watsonx.data Milvus est particulièrement avantageux pour les clients utilisant watsonx.ai qui ont besoin d’une intégration fluide avec des bases de données vectorielles, ainsi que pour ceux qui souhaitent implémenter des frameworks open source comme LangChain, souvent utilisés dans les modèles de génération augmentée par la récupération (RAG).
IBM watsonx.data est disponible en trois options de déploiement pour répondre à différents besoins :
Pour les entreprises qui cherchent à tirer parti des bases de données vectorielles, watsonx.data prend en charge l’intégration avec l’open source Milvus, ce qui permet des capacités avancées telles que la recherche de similarité vectorielle, essentielle pour les applications d’IA en temps réel.
Pour commencer à utiliser IBM watsonx.data, choisissez l’option de déploiement qui correspond le mieux à vos besoins :
Fournissez une instance.
Pour un déploiement sur site :
IBM fournit une documentation complète pour vous aider à démarrer avec la plateforme principale watsonx.data et la base de données vectorielles Milvus :
En tirant parti de l’architecture ouverte de watsonx.data, de ses capacités intégrées de base de données vectorielle et de ses fonctionnalités avancées d’IA, les entreprises peuvent optimiser les processus d’ingénierie des données, améliorer l’analytique en temps réel et dégager de nouvelles connaissances grâce à des capacités alimentées par l’IA. Cette plateforme unifiée permet aux équipes de travailler avec des données structurées et des données non structurées de manière innovante, en réunissant l’analytique traditionnelle et la recherche de similarité vectorielle de pointe en une seule solution.
IBM Watson Discovery est un outil conçu pour récupérer et analyser des données non structurées. Sa principale fonctionnalité est la recherche par mot-clé, qui permet aux utilisateurs d’effectuer des recherches dans de vastes jeux de données en utilisant des termes ou des phrases spécifiques. Contrairement aux moteurs de recherche traditionnels qui ont tendance à utiliser la correspondance textuelle, Watson Discovery utilise le contexte derrière les mots-clés pour fournir un résultat plus pertinent.
Une autre capacité importante de Watson Discovery est l’extraction d’entités, ce qui signifie que Watson Discovery peut automatiquement extraire des éléments d’information clés tels que des personnes, des lieux, des entreprises et des dates à partir d’un texte non structuré. Ce processus structure les données de manière à ce qu’elles soient digestes et puissent être directement intégrées dans les réponses de RAG.
De nombreuses applications LLM nécessitent des données spécifiques à l’utilisateur qui ne font pas partie de l’ensemble de données ayant servi à l’entraînement du modèle. Le principal moyen d’y parvenir est la génération augmentée de récupération (RAG). Dans ce processus, les données externes sont récupérées et transmises au LLM lors de l’étape de génération.
LangChain prend en charge de nombreux algorithmes de récupération différents. LangChain prend en charge des méthodes basiques telles que la recherche sémantique. Cependant, nous avons également ajouté une série d’algorithmes pour améliorer les performances. En voici quelques exemples :
Milvus est une plateforme d’IA pour l’automatisation et l’extraction de données structurées à partir de documents non structurés. Elle est souvent utilisée avec watsonx Discovery pour certains scénarios de recherche. Milvus peut s’adapter à différents formats, ce qui la rend idéale pour les workflows de traitement à grande échelle. Pour un ingénieur en IA, il s’agit d’une solution évolutive qui réduit les efforts manuels liés à l’extraction des données tout en garantissant précision et efficacité.
Milvus est avant tout une base de données vectorielle conçue pour la recherche de similarités dans de grands ensembles de données, en particulier pour les vecteurs de grande dimension. watsonx Discovery, en revanche, est spécialisé dans la recherche sémantique conversationnelle et la compréhension/le traitement des documents, avec un accent particulier sur les capacités de recherche conversationnelle et sémantique.w
Milvus offre des fonctionnalités avancées telles que les vecteurs épars, les vecteurs en vrac, la recherche filtrée et les capacités de recherche hybrides. Elle présente également une architecture distribuée qui permet à la fois une mise à l’échelle horizontale et verticale, ce qui la rend très évolutive pour les jeux de données de grande taille.
Milvus peut gérer des données vectorielles à grande échelle et prend en charge des recherches de similarité vectorielle haute performance, essentielles pour les solutions RAG qui récupèrent des informations à partir de grands ensembles de données.
Milvus s’intègre de façon fluide avec watsonx.data, simplifiant la gestion des données pour les modèles IA et l’application. Cela permet des cas d’utilisation évolutifs de RAG à grande échelle sur de vastes ensembles de données gouvernées.
Milvus propose des fonctionnalités avancées telles que le filtrage des métadonnées, l’amélioration de la pertinence des résultats de recherche et l’efficacité du système RAG.
Une base de données vectorielle de base fonctionne bien pour les solutions RAG simples, mais elle montre rapidement ses limites lorsqu’il y a plusieurs éléments d’information similaires dans le document (similaire n’est pas synonyme de pertinent), que les informations nécessaires pour répondre à une requête sont réparties dans plusieurs documents, ou qu’elles sont distribuées dans plusieurs sections d’un document. Pour mieux comprendre, voici quelques exemples :
Exemple 1
Une entreprise américaine possède des bureaux dans plusieurs États, chacun avec ses propres politiques en matière de ressources humaines. L’entreprise utilise un format de document commun pour les informations relatives aux ressources humaines dans tous ses bureaux. Si l’entreprise intégrait ses politiques de ressources humaines dans une base de données vectorielle, il y aurait plusieurs segments pour, par exemple, la procédure de demande de congés, chacun accompagné de textes différents, ce qui augmenterait fortement le risque d’hallucinations.
Exemple 2
Un contrat de services contient un glossaire de termes définis qui sont mis en majuscule pour indiquer la référence à la définition, par exemple le bailleur, la période d’évaluation, etc. Une analyse et un découpage naïfs du contrat, du début à la fin, aboutiraient à des interactions telles que celles décrites ci-dessous :
Question : Combien de temps Acme dispose-t-elle avant d’être facturée une fois les services terminés ? Réponse : L’acheteur dispose d’un délai de grâce de 10 jours après la période d’évaluation avant que les services ne lui soient facturés.
Utile, mais cela entraînera très probablement des questions complémentaires et nécessitera quelques précisions supplémentaires pour fournir une réponse plus complète.
Exemple 3
Le gouvernement d’un État américain publie les modifications apportées à sa législation sous forme de « modifications » des lois existantes. Par exemple, « l’article 12.2 de la Loi sur le contrôle des stupéfiants est modifié afin d’exclure le cannabis et les produits dérivés du cannabis ». Comment une base de données vectorielle déterminera-t-elle que ce fragment de texte doit primer sur tous les autres segments traitant du cannabis ?
Une hiérarchie de documents organise les morceaux de documents en catégories qui regroupent les documents connexes ; similaire à une table des matières ou à un ensemble de dossiers sur un ordinateur. L’utilisation d’une hiérarchie des documents permet à une solution RAG de « préciser » le sujet des requêtes des utilisateurs afin de ne récupérer que les documents les plus pertinents.
Si l’on applique ce principe à l’exemple du document RH multiétatique ci-dessus, une hiérarchie de documents utile classerait le document par État, ce qui permettrait à la solution RAG de ne récupérer que les morceaux de document relatifs à un État spécifique. Comme le montre la figure ci-dessous, une hiérarchie possible pourrait organiser les documents d’abord par pays, puis par État/province concerné, puis par domaine politique ou par sujet. Bien entendu, cela signifie que la solution devra soit déduire l’État concerné à partir de l’État de résidence indiqué par l’utilisateur, soit inviter l’utilisateur à fournir l’État qui l’intéresse.
Les hiérarchies de documents peuvent être mises en œuvre dans les bases de données vectorielles hybrides, des bases de données vectorielles qui prennent en charge des schémas comprenant des types de données numériques et catégorielles ainsi que des vecteurs, tels que Milvus, en utilisant des champs de catégorie et de sous-catégorie dans le cadre des critères de recherche, comme indiqué dans la définition de schéma Milvus ci-dessous.
chunk_id = FieldSchema( name="chunk_id", dtype=DataType.INT64, auto_id=True, ) state_id = FieldSchema( name="state_id", dtype=DataType.INT64, ) chunk = FieldSchema( name="chunk", dtype=DataType.FLOAT_VECTOR, dim=2 ) schema = CollectionSchema( fields=[chunk_id, state_id, chunk], description="HR documents by state" )
Les graphes de connaissances capturent les relations entre les entités dans un document ou entre documents. Contrairement à une recherche de similarité dans une base de données vectorielle, un graphe de connaissance peut récupérer de manière cohérente et précise les relations et contenus pertinents, ce qui peut réduire considérablement la survenue des hallucinations. Associées à des recherches de similarité dans des bases de données vectorielles, les bases de graphes peuvent permettre aux solutions RAG de rassembler des contenus connexes à partir d’un document et/ou d’un ensemble de documents. L’image ci-dessous montre un graphe de connaissances potentiel pour un contrat de services.
Bien que le meilleur graphe de connaissances pour une solution RAG soit conçu et maintenu par l’humain, l’utilisation d’un grand modèle de langage (LLM) pour analyser les entités et relations dans un document et créer un graphe de connaissances donne des résultats étonnamment bons.
Neo4j est une base de données graphique open source (GPLv3) très populaire. Ce tutoriel guide le lecteur dans la configuration et le codage d’une solution RAG enrichie d’un graphe de connaissances avec neo4j et Langchain.