Elasticsearch vs MyScale : 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 saurait être surestimée. Cet article de blog abordera deux bases de données de premier plan dotées de capacités de recherche vectorielle : Elasticsearch et MyScale. 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 recherche d’images et la recherche sémantique. Notre objectif est de fournir aux développeurs et aux ingénieurs une comparaison claire, afin de les aider à déterminer 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 MyScale, explorons d’abord le concept de bases de données vectorielles.
Une base de données vectorielle est spécifiquement 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, comme 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, en 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 spécialement conçues 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 des modules de recherche vectorielle capables d’effectuer des recherches vectorielles à petite échelle.
Elasticsearch est un moteur de recherche basé sur Apache Lucene et MyScale est une base de données construite sur ClickHouse qui combine recherche vectorielle et analytique SQL. Tous deux disposent de capacités de recherche vectorielle sous forme de module complémentaire. Cet article compare leurs capacités de recherche vectorielle.
Elasticsearch : aperçu 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 incontournable pour les applications exigeantes et l’analyse des journaux. Elasticsearch vous permet de rechercher et d’analyser de grandes quantités de données rapidement et efficacement.
Elasticsearch a été conçu pour la recherche et l’analytique, avec des fonctionnalités comme la recherche floue, la correspondance d’expressions et le classement par pertinence. Il est excellent pour les scénarios où des requêtes de recherche complexes et la récupération de données en temps réel sont requises. Avec l’essor des applications d’IA, Elasticsearch a ajouté des capacités de recherche vectorielle afin de pouvoir effectuer des recherches de similarité et des recherches sémantiques, nécessaires 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 dans 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 implique de mettre les vecteurs en mémoire tampon au moment de l’indexation, puis de sérialiser ces tampons dans le cadre des segments lorsque cela est 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 des vecteurs similaires sont connectés les uns aux autres. Il est choisi pour sa simplicité, ses excellentes performances dans les benchmarks et sa capacité à gérer les mises à jour incrémentales sans nécessiter de réentraînement complet de l’index. Le système effectue généralement des recherches vectorielles en dizaines ou centaines de millisecondes, beaucoup 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 stricte cohérence 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 capacités de recherche vectorielle de base, Elasticsearch fournit des fonctionnalités 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 de faire une recherche hybride mêlant similarité vectorielle et résultats de recherche plein texte. La recherche vectorielle est entièrement compatible avec les fonctionnalités de sécurité, les agrégations et le tri d’index d’Elasticsearch ; c’est donc une solution complète pour les cas d’utilisation de recherche modernes.
Qu’est-ce que MyScale ? Présentation et technologie de base
MyScale est une base de données cloud construite sur la base de la base de données open source ClickHouse, conçue pour les charges de travail d’IA et d’apprentissage automatique. Elle peut gérer des données structurées et vectorielles, ainsi que l’analytique en temps réel et l’apprentissage automatique. MyScale se concentre sur les séries temporelles, la recherche vectorielle et la recherche plein texte ; elle convient donc au traitement en temps réel et aux insights pilotés par l’IA. En utilisant l’architecture ClickHouse, MyScale offre de hautes performances et une grande évolutivité pour l’IA.
L’une des fonctionnalités clés de MyScale est la prise en charge native de SQL, qui simplifie les requêtes pilotées par l’IA en intégrant la recherche vectorielle, la recherche plein texte et les requêtes SQL traditionnelles dans un seul système. Cela réduit le besoin de plusieurs outils et la rend évolutive pour l’IA. MyScale prend en charge et gère le traitement analytique des données structurées et vectorisées sur une seule plateforme, en utilisant une architecture de base de données OLAP pour opérer sur des données vectorisées. Les développeurs peuvent interagir avec MyScale à l’aide de SQL, ce qui la rend accessible à tous les programmeurs familiers avec les bases de données relationnelles.
MyScale propose plusieurs types d’index vectoriels et métriques de similarité afin de prendre en charge différents cas d’utilisation. Elle prend en charge des métriques de distance courantes comme la distance euclidienne (L2), le produit scalaire (IP) et la similarité cosinus. La base de données dispose de plusieurs algorithmes d’indexation : MSTG (Multi-Scale Tree Graph), ScaNN, IVFFLAT, IVFPQ, IVFSQ et HNSW, chacun avec son propre ensemble de paramètres à ajuster. Le moteur vectoriel propriétaire MSTG de MyScale utilise des SSD NVMe pour augmenter la densité des données, de sorte qu’il surpasse les bases de données vectorielles spécialisées tant en performances qu’en coût.
En combinant les fonctionnalités d’une base de données SQL, d’une base de données vectorielle et d’un moteur de recherche plein texte dans un seul système, MyScale réduit les coûts d’infrastructure et de maintenance. Cette unification permet des requêtes et des analyses de données conjointes, ainsi qu’une fondation de données unique pour les applications d’IA. MyScale propose également MyScale Telemetry pour une observabilité complète des systèmes LLM, afin que vous puissiez surveiller et déboguer efficacement. À mesure que les données deviennent plus complexes, MyScale est une solution pérenne capable de gérer de nouvelles modalités de données et des tailles de bases de données plus importantes, tout en maintenant les performances de calcul et l’intégration entre différents types de données.
Principales différences
Lorsque vous choisissez une solution de recherche vectorielle, connaître les principales différences entre Elasticsearch et MyScale vous aidera à prendre une décision. Décomposons-les :
Architecture et fondation
Elasticsearch est construit au-dessus de la bibliothèque Apache Lucene, axée sur la recherche et l’analyse. Il stocke les vecteurs sous forme de segments immuables qui fusionnent périodiquement en utilisant l’algorithme HNSW pour l’indexation vectorielle. Cela crée un graphe où les vecteurs similaires sont connectés, de sorte que les recherches sont généralement de l’ordre de la sous-milliseconde.
MyScale adopte une approche différente, construite au-dessus de ClickHouse. Il utilise une architecture OLAP conçue pour les charges de travail d’IA et de machine learning. MyScale propose plusieurs options d’indexation, notamment MSTG, ScaNN, IVFFLAT, IVFPQ, IVFSQ et HNSW, ce qui vous donne plus de flexibilité pour choisir le bon algorithme selon votre cas d’utilisation.
Recherche et gestion des données
Elasticsearch est efficace pour combiner la recherche vectorielle avec la recherche traditionnelle. Vous pouvez mélanger des recherches de similarité vectorielle avec des requêtes full-text, ce qui le rend solide pour les scénarios de recherche hybride. Le système est strict sur la cohérence lors des mises à jour : lorsque vous modifiez à la fois les champs vectoriels et les champs de mots-clés, les recherches verront soit toutes les anciennes valeurs, soit toutes les nouvelles valeurs.
MyScale se distingue par son support SQL natif, ce qui vous permet de combiner recherche vectorielle, recherche full-text et requêtes SQL dans un seul système. Il gère à la fois les données structurées et vectorielles grâce à son architecture OLAP, ce qui peut correspondre à ce dont vous avez l’habitude si vous travaillez déjà avec des bases de données SQL.
Performance et stockage
Elasticsearch offre les meilleures performances lorsque les données vectorielles tiennent en mémoire, mais peut évoluer au-delà de la RAM disponible. Son architecture de recherche sans verrou permet une indexation concurrente sans bloquer les recherches.
MyScale utilise une approche unique avec son moteur vectoriel MSTG, qui utilise des SSD NVMe pour augmenter la densité des données. Selon la documentation, cela offre de meilleures performances et une meilleure efficacité des coûts que les bases de données vectorielles spécialisées.
Intégration et surveillance
Elasticsearch dispose de bonnes fonctionnalités d’intégration, fonctionne bien avec ses fonctionnalités de sécurité, ses agrégations et le tri d’index. Il est donc adapté à la plupart des cas d’utilisation modernes de recherche.
MyScale dispose de MyScale Telemetry pour surveiller les systèmes LLM, afin que vous puissiez suivre et déboguer vos applications. Il vise à réduire la complexité de l’infrastructure en combinant base de données SQL, base de données vectorielle et recherche full-text dans un seul système.
Quand utiliser chacun
Elasticsearch est excellent pour les scénarios de recherche hybride où vous devez combiner la recherche full text avec la recherche de similarité vectorielle. Son architecture construite au-dessus d’Apache Lucene le rend parfait pour les applications qui nécessitent une indexation en temps réel, une cohérence stricte des données et une recherche concurrente tout en maintenant les performances. Donc si vous êtes déjà dans l’écosystème Elastic ou si vous construisez une application de recherche qui doit équilibrer recherche sémantique et recherche par mots-clés.
MyScale convient mieux aux organisations qui disposent de workflows basés sur SQL et qui ont besoin de davantage d’options d’indexation vectorielle. Son architecture ClickHouse et OLAP le rend parfait pour les charges de travail d’IA et de machine learning qui combinent l’analyse de données structurées avec des opérations vectorielles. Sa capacité à utiliser des SSD NVMe via son moteur vectoriel MSTG et sa surveillance intégrée des systèmes LLM en font un excellent choix pour les équipes qui construisent des applications d’IA nécessitant un stockage rentable et de l’observabilité.
Conclusion
En fin de compte, le choix entre Elasticsearch et MyScale dépend de vos exigences techniques et de votre infrastructure existante. Elasticsearch dispose de capacités matures de recherche hybride et d’une évolutivité éprouvée avec des garanties strictes de cohérence, ce qui le rend idéal pour les applications fortement orientées recherche. MyScale offre des opérations vectorielles natives SQL avec plusieurs options d’indexation et une utilisation efficace du stockage, ce qui le rend adapté aux applications axées sur l’IA qui nécessitent une analyse de données structurées. Votre décision doit être basée sur l’expertise de votre équipe (SQL vs connaissances spécifiques à la recherche), votre stack technologique existante, vos exigences de stockage et le fait que vous ayez besoin de capacités de recherche hybride ou d’une optimisation des charges de travail d’IA.
Lisez ceci pour obtenir un aperçu d’Elasticsearch et de MyScale, mais pour les évaluer, vous devez le faire en fonction de votre cas d’utilisation. Un outil qui peut vous y aider est VectorDBBench, un outil de benchmarking open source pour la comparaison de bases de données vectorielles. Au final, un benchmarking approfondi avec vos propres jeux de données et modèles 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 vous-même les bases de données vectorielles
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 hautes performances, en particulier de 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 managé) en utilisant leurs propres jeux de données et 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 distribué 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 engagés dans l’amélioration de ses fonctionnalités et de ses performances.
Téléchargez VectorDBBench depuis son référentiel GitHub pour reproduire nos résultats de benchmark ou obtenir des résultats de performance sur vos propres jeux de données.
Jetez un coup d’œil rapide aux performances des principales bases de données vectorielles 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 le ML
Continuer à lire

Cosmos World Foundation Model Platform for Physical AI
NVIDIA's Cosmos platform enables safe, digital twin training of GenAI models for physical applications, overcoming data scarcity and safety challenges.

Vector Databases vs. Document Databases
Use a vector database for similarity search and AI-powered applications; use a document database for flexible schema and JSON-like data storage.

What is the K-Nearest Neighbors (KNN) Algorithm in Machine Learning?
KNN is a supervised machine learning technique and algorithm for classification and regression. This post is the ultimate guide to KNN.
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.


