Recherche sémantique, RAG : dix bases de données vectorielles à évaluer
Les bases de données vectorielles propulsent des moteurs de recherche sophistiqués, ainsi que les applications RAG. Voilà dix solutions dédiées à évaluer.
Une base de données vectorielle est un outil sophistiqué qui permet de stocker, de gérer et d’extraire des informations de manière efficace. Elle traite les données représentées sous forme de vecteurs. Chaque vecteur – souvent appelé « embedding » – est un point dans un espace multidimensionnel, où chaque dimension correspond à une caractéristique des données. Il peut décrire des objets (images, vidéo, sons, textes, etc.), des événements ou des phénomènes de manière détaillée et multiple.
La force d’une base de données vectorielle réside dans sa capacité à effectuer des recherches de similarité entre les vecteurs, et ce – idéalement – à grande échelle. Un tel système peut rapidement passer au crible des millions de représentations vectorielles pour trouver ceux qui sont les plus proches des éléments recherchés par les utilisateurs. En clair, c’est comme chercher une aiguille dans une botte de foin. Hormis le fait que l’aiguille et le foin sont des chiffres.
Les bases de données suivantes, qu’elles soient libres ou commerciales, excellent en la matière. Chacune d’entre elles présente ses propres forces et faiblesses et brille dans différents scénarios. Ici, elles ont été sélectionnées pour leurs capacités sur la base d’études de marché réalisées par des sources réputées, dont DB-Engines. Elles sont présentées par ordre alphabétique, sans classement de valeur.
1. Activeloop Deep Lake
Deep Lake est présenté par Activeloop comme un lac de données dédié à l’IA qui stocke et gère différents types de données pertinentes pour les applications de machine learning (ML). Il peut gérer l’intégration de vecteurs, mais aussi des images, des documents, des vidéos, « bruts ». Les données sont sauvegardées localement dans un espace de stockage objet cloud désigné par l’usager, ou dans le système Deep Lake.
Avantages
- L’enregistrement des données dans un format tensoriel met les informations à la disposition des algorithmes d’IA et permet d’interroger des données complexes, telles que des tables structurées, à l’aide de SQL.
- Un « loader » de données rapide de Deep Lake transmet les données aux GPU, ce qui permet d’accélérer l’entraînement des modèles d’IA.
- Le Tensor Query Language de la plateforme permet aux utilisateurs d’itérer des données non structurées plus rapidement, ce qui accélère les déploiements d’IA.
Inconvénients
- Deep Lake dispose d’un écosystème limité d’outils, d’intégrations et de support communautaire par rapport à des bases de données plus établies.
- Le format tensoriel de Deep Lake et le Tensor Query Language présentent une courbe d’apprentissage abrupte.
Les utilisateurs de modèles d’IA consacrés à l’analyse d’images pourraient tirer parti de Deep Lake. Cette plateforme est capable de stocker et de gérer les vastes volumes de données d’imagerie non structurées, essentiels à l’entraînement et à l’optimisation de ces algorithmes. La solution est déjà exploitée par Matterport et Bayer.
2. Chroma DB
Chroma DB est une base de données vectorielles open source s’appuyant sur SQLite. Elle est spécialement conçue pour enrichir les résultats générés par les grands modèles de langage (LLM), dans le cadre de déploiement de systèmes RAG (Retrieval Augmented Generation). Chroma DB peut également alimenter des moteurs de recherche sémantique. Les créateurs, qui prévoient de lancer une version managée distribuée, misent sur sa simplicité d’accès pour les développeurs.
Avantages
- Gère de grands volumes de données sans dégradation des performances (indexation HNSW).
- Stocke les embeddings avec leurs métadonnées pour une meilleure recherche contextuelle.
- Utilise Sentence Transformers pour vectoriser les données, mais Chroma DB est agnostique des modèles d’embeddings.
Inconvénients
- Principalement axés sur Python et JavaScript, d’autres langages de programmation sont pris en charge de manière limitée.
- Un projet relativement nouveau avec une communauté active, mais réduite.
- Manque de documentation sur les fondations de la plateforme.
Chroma DB fournit une bibliothèque client qui permet aux développeurs d’interagir avec la base de données en utilisant la syntaxe et les constructions familières de Python. Il a gagné en popularité pour les cas d’usage de systèmes RAG textuel, parce que Chroma DB s’intègre bien avec les bibliothèques et frameworks populaires de traitement du langage naturel basés sur ce langage de programmation, tels que LangChain, spaCy, Hugging Face Transformers et Gensim.
3. Marqo
Marqo est un moteur de recherche neuronal open source qui permet aux utilisateurs d’indexer et de rechercher des données textuelles à l’aide de modèles de deep learning. Il offre une expérience simple pour construire des applications de recherche avec des capacités avancées de compréhension du langage naturel.
Entre la v1 et la v2 de Marqo, l’éditeur a purement et simplement changé le back-end de sa plateforme, passant d’Opensearch (dérivé d’Elasticsearch et donc d’Apache Lucene) à Vespa (projet né chez Yahoo). Les deux technologies offrent des fonctionnalités similaires, mais la startup a constaté que Vespa fournit des performances supérieures. Marqo dit pouvoir prendre en charge une centaine de millions de documents.
En juillet 2024, la version 2.10.0 de Marqo a amélioré la capacité à comprendre la terminologie spécifique à un domaine grâce à un mélange de méthodes de recherche lexicale et tensorielle.
Avantages
- Entièrement géré et facile à configurer.
- Prends en charge la recherche vectorielle et textuelle (dite hybride).
- Offre une seule API REST pour l’indexation et l’interrogation.
Inconvénients
- S’il fait de sa force la possibilité d’entraîner des modèles d’embeddings pour des usages spécifiques à un domaine, cette tâche requiert des compétences avancées.
- Marqo peut nécessiter des ressources informatiques importantes, en particulier pour l’indexation initiale et le traitement d’ensembles de données volumineux.
Marqo décline sa plateforme pour les e-commerçants disposant d’un vaste catalogue de produits et de contenus générés par des algorithmes et des utilisateurs, tel que des descriptions de produits, des commentaires et des questions-réponses.
4. Pinecone
Pinecone est une base de données vectorielle sous licence commerciale et l’une des options les plus populaires sur le marché. Elle est spécifiquement optimisée pour gérer les embeddings exploités dans le cadre de diverses tâches modernes de ML, telles que le traitement du langage naturel, les systèmes de recommandation et la reconnaissance d’images.
Avantages
- Les API et les SDK la rendent accessible aux développeurs qui n’ont pas d’expertise approfondie dans les technologies de recherche vectorielle.
- Le service entièrement géré s’occupe de l’infrastructure, de la mise à l’échelle et de la maintenance, ce qui réduit la charge opérationnelle des utilisateurs.
Inconvénients
- Le service managé de Pinecone peut entraîner des coûts plus élevés que les solutions à déployer par ses propres moyens, en particulier à grande échelle.
- La dépendance à un service managé et le fait que la technologie est propriétaire sous-tendent une forme d’enfermement propriétaire.
La facilité d’intégration de Pinecone avec les systèmes existants permet à la plateforme de déployer rapidement des fonctionnalités de recommandation et de recherche de produits avancées, améliorant ainsi l’engagement des utilisateurs sans passer par un long processus de développement.
5. Qdrant
Qdrant est un moteur de recherche open source de similarités vectorielles écrit en Rust qui stocke, recherche et gère des vecteurs à haute dimension et les métadonnées associées. En 2023, son éditeur a lancé une nouvelle technologie de compression de la quantification binaire qui accélère les requêtes et réduit l’utilisation de la mémoire, avec une perte minimale de précision. Parmi les clients les plus connus figurent Discord, Mozilla, Disney+, Deloitte ou encore HPE.
Avantages
- Recherche de similarité performante avec des algorithmes d’indexation avancés.
- Compression des vecteurs
- Prévu pour les usages multitenant à large échelle. Robuste.
- API simple et intuitive pour une intégration facile.
Inconvénients
- Le traitement et le stockage de données vectorielles de haute dimension nécessitent des ressources informatiques importantes.
- Courbe d’apprentissage abrupte.
Recherche avancée, système de recommandation, RAG, analyse de données et détection d’anomalies… voilà les cas d’usage principaux listés par les fondateurs de Qdrant
6. Redis
Redis est l’acronyme de Remote Dictionary Server (serveur de dictionnaires à distance). Il s’agit d’un magasin de données en mémoire qui fonctionne comme un cache et un courtier de messages. Bien que ce ne soit pas une véritable base de données vectorielle, Redis – tout comme Oracle DB, PostgreSQL ou encore Elasticsearch – fournit des fonctions de recherche vectorielle. De nombreuses applications utilisent déjà Redis à d’autres fins, ce qui en fait une option pratique.
Ses deux modules – RediSearch et RedisAI – prennent en charge l’exécution et la gestion des modèles de deep learning et de leurs données. RedisAI stocke et traite les tenseurs et les scripts qui servent souvent à l’intégration de vecteurs et effectuent des recherches de similarité vectorielle à l’aide de RediSearch.
Avantages
- L’intégration est simple et efficace pour les utilisateurs existants de Redis.
- Les capacités vectorielles sont des modules d’un système plus complet, offrant une plus grande polyvalence.
- Communauté active fournissant un support par les pairs.
Inconvénients
- Redis n’est pas spécialisé dans les opérations vectorielles, et offre donc une latence moindre que les SGBD spécialisés
- L’évolutivité des grands jeux de données vectorielles peut être limitée par rapport aux bases de données vectorielles dédiées.
Redis convient parfaitement aux développeurs d’applications qui l’utilisent déjà et qui souhaitent ajouter des fonctionnalités de recherche vectorielle sans se former à un nouveau SGBD. Cependant, l’éditeur n’a pas encore trouvé la solution pour égaler les bases de données vectorielles « pur jus ».
7. Vald
Vald est un moteur de recherche vectorielle distribué, open source et hautement évolutif, conçu pour stocker et rechercher efficacement des données vectorielles à grande échelle.
Une caractéristique essentielle de Vald est sa capacité à effectuer des opérations d’indexation sans provoquer d’arrêt du monde, un problème courant dans certaines bases de données vectorielles. Un arrêt du monde se produit lorsqu’une base de données doit reconstruire ou mettre à jour son index pour tenir compte des changements dans un processus d’indexation typique. Le back-end peut avoir besoin de verrouiller l’index pendant la phase de mise à jour, interrompant temporairement toutes les autres opérations jusqu’à ce qu’elles soient terminées.
Vald surmonte cette limitation en s’appuyant sur la distribution d’un index ANN « hybride », à la fois orienté graphe et « tree based », NGT, concocté par Yahoo Japan. Son approche minimise les perturbations du système et permet un fonctionnement continu, ce qui est particulièrement utile dans les scénarios où l’ingestion et l’interrogation de données en temps réel ou quasi réel sont nécessaires.
Avantages
- Architecture hautement évolutive et distribuée pour traiter des données vectorielles à grande échelle.
- Bibliothèques client dans plusieurs langages de programmation pour une intégration facile.
- Indexation automatique asynchrone pour un fonctionnement continu pendant les phases d’indexation.
Inconvénients
- Nécessite des connaissances sur Kubernetes et les systèmes distribués pour le déploiement et la gestion.
- Le modèle de cohérence éventuel pourrait ne pas convenir aux applications qui nécessitent de fortes garanties de validité des données.
- Support communautaire bien plus faible que les autres projets cités plus haut.
Vald convient à la reconnaissance d’images en temps réel et aux fonctions de marquage des médias sociaux ou des applications de sécurité. L’architecture distribuée de la plateforme et ses capacités de recherche de haute performance lui permettent de gérer une échelle massive de données d’images et d’effectuer des recherches de similarité en temps réel. La capacité d’indexation automatique asynchrone de Vald garantit que la plateforme reste réactive et répond aux demandes des utilisateurs même lorsque de nouvelles images sont indexées.
8. Vespa
Née chez Yahoo et portée par une entreprise indépendante depuis 2023, Vespa est un moteur de recherche et une base de données vectorielle open source. Vespa peut combiner toutes les formes de méthodes de recherche, des méthodes plein texte (avec des algorithmes de type BM25) en passant par la correspondance par métadonnées et jusqu’à la recherche de similarités vectorielles approximative (ANN). Vespa est autant à l’aise dans la recherche augmentée, les recommandations, que la propulsion de systèmes RAG, l’autocomplétion de recherche. Le tout à large échelle. Vespa est utilisé par Yahoo (150 applications), Spotify, Qwant ou encore Marqo.
Avantages
- Le SGBD vectoriel le plus éprouvé du marché.
- Son système de combinaison des méthodes de recherche à l’aide d’opérateurs AND et OR, associés à ses algorithmes de classement des résultats.
- Les performances et la robustesse à large échelle.
- Une offre cloud à déployer sur AWS et GCP.
Inconvénients
- Une couche applicative orientée Java (back-end en C++), donc (un peu) moins accessible que Pinecone et Chroma DB.
9. Weaviate
Weaviate est une base de données vectorielle open source et cloud-native. Elle comporte des modules pour des cas d’usage spécifiques, tels que la recherche sémantique, des plug-ins d’intégration et une console pour visualiser les données. Weaviate est également distribué commercialement.
Avantages
- Requêtes rapides avec des recherches de voisins les plus proches inférieures à 100 millisecondes sur des millions d’objets.
- Déploiements protéiformes (Kubernetes, Docker, managé, embarqué).
- Prise en charge d’objets et de vecteurs grâce aux modules Weaviate et aux extensions personnalisées.
- Connexions de type graphe entre les objets pour des requêtes performantes et efficaces.
Inconvénients
- Les fonctionnalités de haute disponibilité sont sur la feuille de route, mais doivent encore être implémentées.
- La complexité augmente lorsqu’il faut gérer plusieurs types de médias et des modules personnalisés.
Weaviate met en avant les capacités de sa solution pour propulser des systèmes de recommandation avancés dans les plateformes e-commerce, de RAG « clé en main » ou encore d’architecture pour recueillir les retours des utilisateurs d’un chatbot.
10. Zilliz Milvus
Milvus est également une base de données vectorielle open source, porté par la LF AI & Data, une filiale de la Linux Foundation. Elle est populaire auprès des data scientists et des ingénieurs ML. Milvus peut gérer et rechercher de manière transparente des milliards de vecteurs, ce qui en fait une bonne solution pour les entreprises qui traitent des quantités massives de données. Milvus dispose d’une architecture composite et évolutive, laissant le choix des index (une dizaine au total) et de la méthode de calcul de similarité entre les vecteurs (cinq méthodes, quand ses concurrents en proposent généralement deux).
Zilliz Cloud, créé par les développeurs de Milvus, offre un service entièrement managé qui rationalise le déploiement et la mise à l’échelle des applications de recherche vectorielle. Il simplifie l’intégration des fonctionnalités de recherche vectorielle dans les applications, ce qui les rend plus accessibles à un plus grand nombre d’utilisateurs ne disposant pas d’une expertise approfondie en matière de gestion d’infrastructure.
Avantages
- Facile à utiliser avec des SDK pour différents langages de programmation.
- Hautement disponible et résilient.
- Options de déploiement en cloud.
Inconvénients
- Courbe d’apprentissage plus raide pour les fonctionnalités complexes.
- Nécessite plus de ressources de calcul.
Milvus peut vectoriser tout type de données non structurées, dont les images, les sons, les textes, les vidéos et même les séquences ADN. Ziliz met principalement en avant les usages liés à l’IA générative et à la recherche d’images.
Choisir le bon outil
Le choix de la base de données vectorielle appropriée dépend des exigences spécifiques de toute entreprise, telles que l’évolutivité, les performances, la facilité d’utilisation et l’intégration avec les systèmes existants. Les options libres telles que Chroma DB, Zilliz Milvus et Weaviate offrent flexibilité et contrôle, tandis que les offres telles que Marqo, Pinecone et Redis proposent des services gérés et des fonctionnalités supplémentaires.
Il convient également de tenir compte des préférences des développeurs en matière de langage de programmation, du volume de données et de la complexité du cas d’usage. Il est essentiel d’évaluer le soutien de la communauté, la documentation et la feuille de route de chaque option.
L’expérimentation de différentes options et l’analyse comparative de leurs performances peuvent aider à prendre la décision la plus éclairée. C’est d’autant plus aisé que la plupart des solutions citées ci-dessus sont open source ou accessibles à travers un essai gratuit.