Elasticsearch vs Aerospike : choisir la bonne base de données pour les applications GenAI
À mesure que les applications pilotées par l’IA évoluent, l’importance des capacités de recherche vectorielle pour soutenir ces avancées ne peut être surestimée. Cet article de blog abordera deux bases de données importantes dotées de capacités de recherche vectorielle : Elasticsearch et Aerospike. Chacune offre des capacités robustes pour gérer la recherche vectorielle, une fonctionnalité essentielle pour des applications telles que les moteurs de recommandation, la récupération d’images et la recherche sémantique. Notre objectif est de fournir aux développeurs et aux ingénieurs une comparaison claire, les aidant à décider quelle base de données correspond le mieux à leurs exigences spécifiques.
Qu’est-ce qu’une base de données vectorielle ?
Avant de comparer Elasticsearch et Aerospike, explorons d’abord le concept de bases de données vectorielles.
Une base de données vectorielle est spécialement conçue pour stocker et interroger des vecteurs de grande dimension, qui sont des représentations numériques de données non structurées. Ces vecteurs encodent des informations complexes, telles que la signification sémantique d’un texte, les caractéristiques visuelles d’images ou les attributs de produits. En permettant des recherches de similarité efficaces, les bases de données vectorielles jouent un rôle central dans les applications d’IA, permettant une analyse et une récupération des données plus avancées.
Les cas d’utilisation courants des bases de données vectorielles incluent les recommandations de produits en e-commerce, les plateformes de découverte de contenu, la détection d’anomalies en cybersécurité, l’analyse d’images médicales et les tâches de traitement du langage naturel (NLP). Elles jouent également un rôle crucial dans la génération augmentée par récupération (RAG), une technique qui améliore les performances des grands modèles de langage (LLMs) en fournissant des connaissances externes afin de réduire des problèmes tels que les hallucinations de l’IA.
Il existe de nombreux types de bases de données vectorielles disponibles sur le marché, notamment :
- Bases de données vectorielles conçues à cet effet telles que Milvus, Zilliz Cloud (Milvus entièrement géré)
- Bibliothèques de recherche vectorielle telles que Faiss et Annoy.
- Bases de données vectorielles légères telles que Chroma et Milvus Lite.
- Bases de données traditionnelles avec extensions de recherche vectorielle capables d’effectuer des recherches vectorielles à petite échelle.
Elasticsearch est un moteur de recherche basé sur Apache Lucene et Aerospike est une base de données NoSQL distribuée et évolutive. Tous deux disposent de capacités de recherche vectorielle sous forme d’extension. Cet article compare leurs capacités de recherche vectorielle.
Elasticsearch : présentation et technologie de base
Elasticsearch est un moteur de recherche open source construit au-dessus de la bibliothèque Apache Lucene. Il est connu pour l’indexation en temps réel et la recherche en texte intégral, ce qui en fait une solution de référence pour les applications intensives et l’analyse de journaux. Elasticsearch vous permet de rechercher et d’analyser rapidement et efficacement de grandes quantités de données.
Elasticsearch a été conçu pour la recherche et l’analytique, avec des fonctionnalités telles que la recherche approximative, la correspondance d’expressions et le classement par pertinence. Il est excellent pour les scénarios où des requêtes de recherche complexes et une récupération de données en temps réel sont nécessaires. Avec l’essor des applications d’IA, Elasticsearch a ajouté des capacités de recherche vectorielle afin de pouvoir effectuer de la recherche de similarité et de la recherche sémantique, ce qui est nécessaire pour les cas d’utilisation de l’IA tels que la reconnaissance d’images, la récupération de documents et l’IA générative.
Recherche vectorielle
La recherche vectorielle est intégrée à Elasticsearch via Apache Lucene. Lucene organise les données en segments immuables qui sont fusionnés périodiquement ; les vecteurs sont ajoutés aux segments de la même manière que les autres structures de données. Le processus consiste à mettre les vecteurs en mémoire tampon au moment de l’indexation, puis à sérialiser ces tampons dans le cadre des segments lorsque nécessaire. Les segments sont fusionnés périodiquement à des fins d’optimisation, et les recherches combinent les résultats vectoriels sur l’ensemble des segments.
Pour l’indexation vectorielle, Elasticsearch utilise l’algorithme HNSW (Hierarchical Navigable Small World), qui crée un graphe dans lequel les vecteurs similaires sont connectés les uns aux autres. Il est choisi pour sa simplicité, ses solides performances dans les benchmarks et sa capacité à gérer les mises à jour incrémentales sans nécessiter un réentraînement complet de l’index. Le système effectue généralement des recherches vectorielles en dizaines ou centaines de millisecondes, bien plus rapidement que les approches par force brute.
L’architecture technique d’Elasticsearch est l’un de ses plus grands atouts. Le système prend en charge les recherches sans verrou même pendant l’indexation concurrente et maintient une cohérence stricte entre les différents champs lors de la mise à jour des documents. Ainsi, si vous mettez à jour à la fois des champs vectoriels et des champs de mots-clés, les recherches verront soit toutes les anciennes valeurs, soit toutes les nouvelles valeurs ; la cohérence des données est garantie. Bien que le système puisse évoluer au-delà de la RAM disponible, les performances sont optimisées lorsque les données vectorielles tiennent en mémoire.
Au-delà des fonctionnalités principales de recherche vectorielle, Elasticsearch fournit des fonctions d’intégration pratiques qui le rendent extrêmement précieux. Les recherches vectorielles peuvent être combinées avec les filtres Elasticsearch traditionnels, ce qui vous permet d’effectuer une recherche hybride mêlant similarité vectorielle et résultats de recherche en texte intégral. La recherche vectorielle est entièrement compatible avec les fonctionnalités de sécurité d’Elasticsearch, les agrégations et le tri d’index, ce qui en fait une solution complète pour les cas d’utilisation modernes de la recherche.
Aerospike : Présentation et technologie de base
Aerospike est une base de données NoSQL destinée aux applications en temps réel à hautes performances. Elle a ajouté la prise en charge de l’indexation et de la recherche vectorielles, ce qui la rend adaptée aux cas d’utilisation de bases de données vectorielles. Cette capacité vectorielle s’appelle Aerospike Vector Search (AVS) et est en Preview. Vous pouvez demander un accès anticipé auprès d’Aerospike.
AVS ne prend en charge que les index Hierarchical Navigable Small World (HNSW) pour la recherche vectorielle. Lorsque des mises à jour ou des insertions sont effectuées dans AVS, les données d’enregistrement, y compris le vecteur, sont écrites dans Aerospike Database (ASDB) et sont immédiatement visibles. Pour l’indexation, chaque enregistrement doit comporter au moins un vecteur dans le champ vectoriel spécifié d’un index. Vous pouvez avoir plusieurs vecteurs et index pour un seul enregistrement, ce qui vous permet de rechercher les mêmes données de différentes manières. Aerospike recommande d’affecter les enregistrements upsertés à un ensemble spécifique afin de pouvoir les surveiller et effectuer des opérations dessus.
AVS dispose d’une manière unique de construire l’index : elle est concurrente sur tous les nœuds AVS. Alors que les mises à jour d’enregistrements vectoriels sont écrites directement dans ASDB, les enregistrements d’index sont traités de manière asynchrone à partir d’une file d’indexation. Cela se fait par lots et est distribué sur tous les nœuds AVS, ce qui permet d’utiliser tous les cœurs CPU du cluster AVS et d’être évolutif. Les performances d’ingestion dépendent fortement de la mémoire de l’hôte et de la configuration de la couche de stockage.
Pour chaque élément de la file d’indexation, AVS traite le vecteur pour l’indexation, construit les clusters pour chaque vecteur et les valide dans ASDB. Un enregistrement d’index contient une copie du vecteur lui-même et les clusters de ce vecteur à une couche donnée du graphe HNSW. L’indexation utilise des extensions vectorielles (AVX) pour le traitement parallèle selon le modèle instruction unique, données multiples.
AVS interroge pendant l’ingestion afin de « pré-hydrater » le cache de l’index, car les enregistrements dans les clusters sont interconnectés. Ces requêtes ne sont pas comptées comme des requêtes de recherche, mais apparaissent comme des lectures au niveau de la couche de stockage. De cette façon, le cache est alimenté avec des données pertinentes et peut améliorer les performances des requêtes. Cela montre comment AVS gère les données vectorielles et construit des index pour la recherche par similarité afin de pouvoir évoluer pour des recherches vectorielles de grande dimension.
Différences clés
La recherche vectorielle est indispensable pour les applications modernes, de la reconnaissance d’images à la récupération de documents alimentée par l’IA. Si vous devez choisir entre Elasticsearch et Aerospike pour vos besoins en recherche vectorielle, cet article vous aidera à prendre une décision éclairée.
Architecture et mise en œuvre de la recherche
Elasticsearch est construit sur Apache Lucene, il organise les données vectorielles en segments immuables qui fusionnent périodiquement. Le système utilise l’algorithme HNSW (Hierarchical Navigable Small World) pour créer un graphe où les vecteurs similaires se connectent. Cela permet aux recherches de se terminer en quelques dizaines à quelques centaines de millisecondes.
La capacité de recherche vectorielle d’Aerospike, appelée Aerospike Vector Search (AVS), est en Preview. Comme Elasticsearch, elle utilise des index HNSW mais indexe différemment. AVS traite les vecteurs de manière asynchrone sur tous les nœuds du cluster, utilise les extensions vectorielles (AVX) pour le traitement parallèle.
Gestion des données et cohérence
Elasticsearch applique une cohérence stricte sur tous les champs lors de la mise à jour des documents. Lorsque vous mettez à jour à la fois des champs vectoriels et des champs de mots-clés, les recherches verront soit toutes les anciennes valeurs, soit toutes les nouvelles valeurs, jamais un mélange. Le système permet une recherche sans verrouillage pendant l’indexation concurrente.
Aerospike gère les mises à jour de données différemment. Lorsque des enregistrements sont mis à jour ou insérés, les données vectorielles sont immédiatement écrites dans Aerospike Database (ASDB). Cependant, les enregistrements d’index sont traités de manière asynchrone à partir d’une file d’attente d’indexation, distribués par lots sur les nœuds AVS.
Performances et évolutivité
Elasticsearch fonctionne mieux lorsque les données vectorielles tiennent en mémoire, mais peut évoluer au-delà de la RAM disponible. Son architecture permet l’indexation en temps réel et la recherche en texte intégral.
Les performances d’Aerospike dépendent de la mémoire de l’hôte et de la configuration de la couche de stockage. Son indexation distribuée utilise tous les cœurs CPU du cluster AVS. Le système pré-hydrate le cache d’index via des requêtes en arrière-plan, ce qui peut améliorer les performances des requêtes.
Intégration et fonctionnalités supplémentaires
Elasticsearch est solide dans ses intégrations. Vous pouvez combiner des recherches vectorielles avec des filtres traditionnels pour effectuer une recherche hybride qui mélange la similarité vectorielle avec les résultats de recherche en texte intégral. La recherche vectorielle fonctionne de manière transparente avec les fonctionnalités de sécurité, les agrégations et le tri d’index d’Elasticsearch.
Aerospike permet plusieurs vecteurs et index par enregistrement, vous offrant une flexibilité dans la manière dont vous recherchez vos données. Le système recommande d’assigner les enregistrements upserted à des sets spécifiques pour faciliter la surveillance et les opérations.
Limites et considérations
La recherche vectorielle d’Elasticsearch est une fonctionnalité mature intégrée au cœur du système. Cependant, les performances nécessitent une gestion attentive de la mémoire et de la configuration du système.
AVS est en Preview, contactez Aerospike pour obtenir un accès anticipé. L’indexation distribuée apporte de l’évolutivité, mais le statut de preview signifie qu’il peut y avoir des limitations et des changements dans les versions futures.
Quand utiliser chacun
Utilisez Elasticsearch lorsque vous avez besoin d’une solution de recherche vectorielle prête pour la production qui se combine avec la recherche en texte intégral. Elle est parfaite pour les applications qui nécessitent une fonctionnalité de recherche hybride, par exemple les plateformes d’e-commerce qui utilisent à la fois la recherche par mots-clés et la recherche par similarité, les systèmes de recommandation de contenu ou les systèmes de récupération de documents alimentés par l’IA où la cohérence des données et les fonctionnalités de sécurité matures sont importantes. Elle est particulièrement adaptée lorsque vous disposez de la mémoire nécessaire pour optimiser les performances et devez vous intégrer à une infrastructure de recherche existante.
Utilisez Aerospike lorsque vous construisez un système qui nécessite une puissance de traitement distribuée et peut accepter une implémentation de recherche vectorielle en statut preview. Il convient aux applications qui bénéficient de l’indexation asynchrone et du traitement parallèle entre les nœuds, par exemple les systèmes d’ingestion de données à haut débit ou les applications où vous avez besoin d’options d’indexation vectorielle flexibles. Il est préférable lorsque vous pouvez utiliser son architecture distribuée et que vous n’avez pas besoin de déployer immédiatement la recherche vectorielle en production.
Conclusion
Le choix entre Elasticsearch et Aerospike dépend de vos exigences techniques et du calendrier de votre projet. Elasticsearch dispose d’une solution de recherche vectorielle mature et bien intégrée, avec des capacités de recherche hybride éprouvées et un écosystème solide, ce qui en fait le choix le plus sûr pour des besoins de production immédiats. Aerospike offre un traitement distribué puissant et des options d’indexation vectorielle flexibles, mais il est en version preview ; vous devrez donc tenir compte des limitations et des changements dans les futures versions. Votre décision doit prendre en considération l’infrastructure existante, les exigences de cohérence des données, les besoins de traitement, ainsi que la nécessité de déployer immédiatement en production ou la possibilité de travailler avec des fonctionnalités en preview pendant que vous construisez votre système.
Lisez ceci pour obtenir un aperçu d’Elasticsearch et d’Aerospike, mais pour les évaluer, vous devez le faire en fonction de votre cas d’utilisation. Un outil pouvant vous y aider est VectorDBBench, un outil de benchmarking open-source pour la comparaison des bases de données vectorielles. Au final, un benchmarking approfondi avec vos propres jeux de données et schémas de requêtes sera essentiel pour prendre une décision entre ces deux approches puissantes mais différentes de la recherche vectorielle dans les systèmes de bases de données distribuées.
Utiliser VectorDBBench open-source pour évaluer et comparer les bases de données vectorielles par vous-même
VectorDBBench est un outil de benchmarking open-source destiné aux utilisateurs qui ont besoin de systèmes de stockage et de récupération de données haute performance, en particulier des bases de données vectorielles. Cet outil permet aux utilisateurs de tester et de comparer différents systèmes de bases de données vectorielles comme Milvus et Zilliz Cloud (le Milvus géré) en utilisant leurs propres jeux de données, afin de trouver celui qui correspond à leurs cas d’utilisation. Avec VectorDBBench, les utilisateurs peuvent prendre des décisions fondées sur les performances réelles des bases de données vectorielles plutôt que sur des affirmations marketing ou des ouï-dire.
VectorDBBench est écrit en Python et sous licence open-source MIT, ce qui signifie que chacun peut l’utiliser, le modifier et le distribuer librement. L’outil est activement maintenu par une communauté de développeurs déterminés à améliorer ses fonctionnalités et ses performances.
Téléchargez VectorDBBench depuis son dépôt GitHub pour reproduire nos résultats de benchmark ou obtenir des résultats de performance sur vos propres jeux de données.
Jetez un rapide coup d’œil aux performances des bases de données vectorielles courantes sur le classement VectorDBBench.
Lisez les blogs suivants pour en savoir plus sur l’évaluation des bases de données vectorielles.
Ressources supplémentaires sur VectorDB, GenAI et ML
Continuer à lire

Data Deduplication at Trillion Scale: How to Solve the Biggest Bottleneck of LLM Training
Explore how MinHash LSH and Milvus handle data deduplication at the trillion-scale level, solving key bottlenecks in LLM training for improved AI model performance.

Zilliz Cloud Introduces Advanced BYOC-I Solution for Ultimate Enterprise Data Sovereignty
Explore Zilliz Cloud BYOC-I, the solution that balances AI innovation with data control, enabling secure deployments in finance, healthcare, and education sectors.

Vector Databases vs. Key-Value Databases
Use a vector database for AI-powered similarity search; use a key-value database for high-throughput, low-latency simple data lookups.
The Definitive Guide to Choosing a Vector Database
Overwhelmed by all the options? Learn key features to look for & how to evaluate with your own data. Choose with confidence.


