Knowledge Graph et IA générative : Neo4j se met à la recherche vectorielle
L’éditeur d’une base de données orientée graphes souhaite améliorer la recherche sémantique et les applications d’IA générative en permettant aux clients de mieux accéder aux données non structurées telles que le texte et les images.
Neo4j a ajouté la recherche vectorielle et le stockage de vecteurs dans sa base de données orientée graphes. Son objectif ? Accroître ses capacités en matière de recherche sémantique.
La recherche vectorielle commence par la transformation de données non structurées, comme des textes et des images, en représentations numériques – vectorielles – pour leur donner une structure.
Une fois qu’une valeur numérique leur a été attribuée, les données non structurées peuvent être utilisées dans des recherches sémantiques afin que les utilisateurs puissent trouver des données similaires à l’aide d’algorithmes de recherche approximative du plus proche voisin (k-ANN).
Si ce type de technologie exploite les bases de données NoSQL, le traitement des vecteurs n’est pas la principale fonction des SGBD orientés graphes tels Neo4j, AWS Neptune ou encore TigerGraph.
Les bases de données orientées graphes doivent permettre d’élaborer des relations ou des connexions entrantes ou sortantes – nommées arêtes – entre des points de données – des nœuds.
Chaque nœud dispose d’un identifiant unique (à savoir une clé) appairé à un ensemble d’arêtes, des valeurs. Le tout permet de cartographier des relations à grande échelle entre des objets, des personnes, des transactions, etc. Cela s’avère particulièrement utile dans le déploiement d’outils de lutte contre la fraude, d’enquêtes sur des réseaux mafieux ou encore d’analyse des dépendances d’un SI. À l’inverse, une base de données relationnelle ne permet d’établir qu’une connexion à la fois.
La recherche vectorielle, pour faciliter l’exploration des graphes de connaissances
Avec cette technologie, il est également possible d’élaborer ce que l’on appelle un graphe de connaissances (knowledge graph). Cette sorte de réseau établit des connexions sémantiques entre des « entités du monde réel » : des mots, des concepts, des liens, ou encore des produits. Ces données hétérogènes peuvent être stockées dans de nombreux systèmes. L’un des graphes de connaissances les plus célèbres n’est autre que celui de Google Search, mais l’on peut également citer le travail d’Adeo sur le site Web de Leroy Merlin.
Pour rechercher les données, Neo4j fournit par défaut un langage de requêtes spécifique, Cypher. Il s’avère complexe à manipuler pour le commun des mortels.
Afin de simplifier les déploiements dans les applications, Neo4j propose depuis quelques années de déployer un index de recherche plein-texte, issu du moteur Apache Lucene. Or, cette librairie, bien qu’elle permette d’effectuer des recherches approximatives, s’appuie principalement sur la correspondance de mots clés. Quand il s’agit d’explorer des informations cartographiées dans un vaste réseau de données, tenter de trouver le terme qui permettra de mettre en valeur les liens les plus intéressants n’est pas chose aisée.
La recherche vectorielle, elle, permet de trouver des contenus sémantiquement similaires à travers des vecteurs (générés à l’aide de modèle NLP et de grands modèles de langage) dont on mesure la distance à l’aide de formules mathématiques, comme la similarité cosinus et la distance euclidienne.
L’index HNSW (Hierachical Navigable Small World) implémenté à travers Lucene dans la plateforme Neo4j permettrait d’accélérer grandement la recherche d’informations dans les graphes de connaissances ou des collections de documents.
Neo4j assure qu’un de ses clients, une firme d’assurance, aurait accéléré les requêtes de ses clients de 90 %. « Une banque mondiale a augmenté de 46 % l’efficacité de l’examen des contrats juridiques, en déployant la recherche par similarité vectorielle pour extraire avec précision les clauses clés dans des ensembles massifs de documents », ajoute l’éditeur.
Toutefois, l’éditeur ne dit pas si ces performances sont uniquement liées à l’index HNSW ou si elles résultent de l’usage de plusieurs types d’index (une des possibilités de Neo4j), bien que gourmandes en stockage et en calcul.
Néanmoins, une base de données capable de stocker et de requêter de tels vecteurs permettrait d’améliorer la précision des réponses d’un modèle d’IA générative. Une aubaine pour l’éditeur.
Le grain de sel de l’IA générative
Pour rappel, en juin, Neo4j a dévoilé une intégration avec Vertex AI de Google qui permet aux utilisateurs d’améliorer leurs graphes de connaissances avec l’IA générative.
Grâce à cette intégration, les clients de Neo4j peuvent désormais utiliser le langage naturel pour interagir avec les graphes de connaissances plutôt que Cypher. Ils peuvent exploiter Vertex AI pour transformer des données non structurées puis les charger dans des graphes de connaissance existants. Depuis la plateforme de Google, un agent conversationnel propulsé par une IA générative peut servir à explorer les relations entre les entités réelles. La combinaison de Neo4j, de Vertex AI et de LangChain doit permettre valider les réponses des grands modèles de langage (LLM) avant de les renvoyer à un utilisateur.
S’appuyant sur ces capacités ainsi que sur ses partenariats avec OpenAI, Microsoft et AWS – le module de recherche vectorielle de Neo4j présenté le 22 août complète ce portfolio.
Parce que la recherche vectorielle est au cœur des architectures qui supportent les applications d’IA générative et de recherches sémantiques, Doug Henschen, analyste chez Constellation Research, considère que l’annonce de Neo4j est importante.
Doug HenschenAnalyste, Constellation Research
« Les éditeurs de bases de données et leurs clients ont clairement le sentiment que les fonctionnalités de recherche vectorielle devraient faire partie intégrante des SGBD présents sur le marché », affirme-t-il. « La fonction proposée par Neo4j devrait améliorer la précision des applications de recherche sémantique et d’IA génératives ».
Bases de données vectorielles : les éditeurs dans les starting-blocks
Neo4j est loin d’être le seul à s’intéresser à cette technique, rappelle l’analyste.
Ces bases de données vectorielles sont nécessaires à l’orchestration de la Retrieval Augmented Generation (RAG). C’est l’une des techniques principales pour enrichir les résultats d’un LLM sans avoir à le réentraîner. Au moment d’effectuer une requête à un modèle d’IA générative, il est possible de lancer simultanément une recherche vectorielle sur les données spécifiques à une entreprise qui serviront de corpus supplémentaires pour générer une réponse.
Doug Henschen note que Alibaba, DataStax, Redis, Cockroach Labs et Dremio sont parmi ceux qui ont déjà ajouté des capacités de recherche vectorielle à leurs plateformes de données. D’autres sont en train de faire de même.
« En annonçant cette fonctionnalité, Neo4j rejoint un groupe en pleine expansion d’éditeurs de bases de données et de plateforme de données qui ont récemment fait – ou sont sur le point de faire – des annonces liées à la recherche vectorielle ».
Étant donné son positionnement historique, celui d’un éditeur d’un SGBD spécialisé dans un certain type de cas d’usage, un dilemme s’est posé à Neo4j. Fallait-il recréer une base de données vectorielle de toute pièce, tels Pinecone, Weaviate ou VectorDB ?
Après avoir constaté l’intérêt croissant pour l’IA générative, Neo4j a consulté une douzaine de ses principaux clients et leur a demandé leur avis sur la manière d’intégrer cette technologie, selon Sudhir Hasbe, Chief Product Officer chez Neo4j.
Résultat, les clients ont réclamé à l’éditeur des fonctionnalités pour interroger leurs graphes de connaissances en langage naturel. Ils veulent que Neo4j soit agnostique en termes d’intégration avec les fournisseurs de modèles d’IA générative. Ils souhaitent que leurs applications d’IA générative disposent d’une mémoire à long terme fournie par une base de données vectorielle plutôt que de devoir entraîner régulièrement les modèles sous-jacents. Et ils comptent obtenir tout cela dans une seule et même plateforme.
« D’après les commentaires reçus, il était logique de faire de la recherche vectorielle une fonctionnalité de notre base de données dans laquelle vous pouvez tracer des relations explicites et des similitudes implicites et les combiner pour un seul cas d’usage », note Shudir Hasbe. « Conserver des environnements différents ne semblait pas être la bonne solution ».
Les capacités de Vertex AI, ainsi que les algorithmes de Google Cloud pour convertir les données non structurées en vecteurs sont essentiels pour la suite, anticipe le Chief Product Officer.
Bien que l’éditeur ne souhaite pas renier son principal soutien, il compte obtenir une forme d’agnosticité. « Neo4j travaille étroitement avec OpenAI, Microsoft (Azure OpenAI), AWS (Bedrock) et Google Cloud », assure Shudir Hasbe.
« Nous voulons que ces capacités soient disponibles partout », ajoute-t-il.
Un autre objectif pourrait être de développer un outil de conversion de texte en Cypher, envisage M. Hasbe.
Tout comme des éditeurs tels Monte Carlo et Dremio, qui ont des outils pour convertir du texte en requêtes SQL (une fonctionnalité également en développement chez Qlik et Tableau), Neo4j envisage de faire de même pour Cypher. Pour rappel, l’éditeur envisageait déjà de simplifier la conception de requêtes dans son langage spécifique.
Le multicloud, le défi numéro 1 de Neo4j
Au-delà de l’IA générative, Neo4j doit encore relever le défi du multicloud, concède Shudir Hasbe.
« Tous nos clients s’orientent vers le cloud. L’une de nos grandes priorités consiste donc à nous assurer que toutes nos offres soient disponibles sur les principales infrastructures cloud et que nous proposons les bons connecteurs vers les plateformes de données des leaders du marché », explique-t-il.
Doug Henschen souligne l’importance de cette dimension multicloud pour l’avenir de Neo4j.
Plus précisément, il aimerait que l’éditeur ajoute des capacités multicloud et cross cloud à son service DBaaS, AuraDB.
En outre, l’analyste considère que Neo4j serait bien avisé d’ajouter des fonctionnalités au cœur de son module Graph Data Science afin d’améliorer la pertinence de son offre dans le cadre de l’entraînement et du déploiement de LLM.
« La prise en charge de la recherche vectorielle n’est qu’un début », prévient-il. « Il reste encore beaucoup à faire pour tirer parti de l’IA générative, afin de simplifier le développement d’applications, l’optimisation de projets, enrichir des projets analytiques, etc. ».