Elasticsearch vs Clickhouse : 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 Clickhouse. 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, afin de les aider à 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 vs Clickhouse, 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 à haute 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 du texte, les caractéristiques visuelles des images ou les attributs des 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 comme 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écialisées 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 extensions de recherche vectorielle capables d’effectuer des recherches vectorielles à petite échelle.
Elasticsearch est un moteur de recherche basé sur Apache Lucene et Elasticsearch est un moteur de recherche basé sur Apache Lucene et ClickHouse est une base de données open source orientée colonnes. Tous deux disposent de capacités de recherche vectorielle sous forme d’extension. 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 de recherche de référence 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 de la recherche par similarité et de la recherche sémantique, ce qui est nécessaire pour les cas d’utilisation de l’IA comme 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 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 tous les 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 de réentraînement complet de l’index. Le système effectue généralement les recherches vectorielles en quelques 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 la recherche 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 optimales 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 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 de recherche modernes.
ClickHouse : Présentation et technologie de base
ClickHouse est une base de données OLAP open-source pour l’analytique en temps réel, avec une prise en charge complète de SQL et un traitement rapide des requêtes. Elle est idéale pour les requêtes analytiques grâce à un pipeline de requêtes entièrement parallélisé et peut effectuer rapidement des recherches vectorielles. Elle offre une forte compression (personnalisable via des codecs), ce qui permet de stocker et d’interroger de grands jeux de données. L’un de ses principaux avantages est qu’elle peut gérer des jeux de données de plusieurs To sans être limitée par la mémoire, ce qui en fait un excellent outil pour les utilisateurs disposant de grandes données vectorielles. Elle prend également en charge le filtrage et l’agrégation sur les métadonnées, ce qui vous permet d’interroger les vecteurs et leurs métadonnées.
ClickHouse dispose de fonctionnalités de recherche vectorielle via SQL, où les opérations de distance vectorielle sont comme n’importe quelle autre fonction SQL. Vous pouvez donc les combiner avec le filtrage et l’agrégation traditionnels. C’est idéal pour les cas d’utilisation où vous devez interroger des données vectorielles avec des métadonnées ou d’autres informations. Elle dispose également d’indices expérimentaux Approximate Nearest Neighbour (ANN) pour une correspondance plus rapide (mais approximative). Et d’une correspondance exacte par balayage linéaire des lignes avec traitement parallèle pour la rapidité et l’efficacité.
ClickHouse est excellent pour la recherche vectorielle lorsque vous devez combiner la correspondance vectorielle avec le filtrage ou l’agrégation de métadonnées. En particulier pour les très grands jeux de données vectorielles qui doivent être traités en parallèle sur plusieurs cœurs CPU. ClickHouse est également adapté lorsque vous avez besoin de la prise en charge de SQL et que votre jeu de données vectorielles est trop volumineux pour tenir dans des indices uniquement en mémoire. De plus, si vous avez déjà des données connexes dans ClickHouse ou si vous ne voulez pas apprendre un autre outil pour gérer des millions de vecteurs, ClickHouse peut vous faire gagner du temps et des ressources. La correspondance exacte rapide et parallélisée ainsi que la gestion de grands jeux de données sont les points forts de ClickHouse, il s’adresse donc aux utilisateurs avancés de la recherche.
ClickHouse est une plateforme polyvalente pour la recherche vectorielle, en particulier pour les grands jeux de données qui nécessitent un traitement parallèle et lorsque vous combinez la recherche vectorielle avec le filtrage et l’agrégation basés sur SQL. Elle n’est pas aussi performante que les bases de données vectorielles spécialisées pour les petits jeux de données limités par la mémoire ou les scénarios à QPS élevé, mais elle peut gérer des requêtes complexes incluant des métadonnées, ce qui la rend idéale pour les développeurs qui connaissent SQL et ont besoin d’une recherche vectorielle rapide.
Principales différences
Alors que la recherche vectorielle devient de plus en plus populaire dans les applications alimentées par l’IA, choisir le bon outil pour votre cas d’utilisation est essentiel. Elasticsearch et ClickHouse disposent tous deux de capacités de recherche vectorielle, mais ils répondent à des besoins différents en fonction de leur architecture et de leurs principes de conception. Voici une analyse pour vous aider à décider.
Méthodologie de recherche
- Elasticsearch: Elasticsearch propose la recherche vectorielle via l’algorithme HNSW (Hierarchical Navigable Small World). Cette approche basée sur des graphes relie des vecteurs similaires et permet une recherche efficace des plus proches voisins. HNSW prend en charge les mises à jour incrémentales sans avoir besoin de reconstruire l’index, il convient donc aux applications qui nécessitent des mises à jour fréquentes. Vous pouvez également combiner la similarité vectorielle avec des filtres traditionnels pour des scénarios de recherche hybride, comme le mélange de la pertinence par mots-clés et de la distance vectorielle.
- ClickHouse: ClickHouse intègre la recherche vectorielle directement dans son moteur de requêtes SQL. Il prend en charge la correspondance vectorielle exacte par force brute (en utilisant le traitement parallèle) et les indices de plus proches voisins approximatifs (ANN). Il convient donc aux cas d’utilisation où un filtrage ou une agrégation des métadonnées est nécessaire en plus de la recherche vectorielle. L’approche native SQL est idéale pour les développeurs déjà familiers avec les bases de données relationnelles.
Données
- Elasticsearch: Elasticsearch est conçu pour les données non structurées et semi-structurées. Il est excellent pour gérer et rechercher de grands ensembles de données riches en texte, avec des fonctionnalités comme la recherche en texte intégral, la correspondance floue et le classement par pertinence. Les données vectorielles sont stockées dans son architecture existante basée sur Lucene et offrent de solides garanties de cohérence, même pour des types de données mixtes comme le texte et les vecteurs.
- ClickHouse: ClickHouse est une base de données OLAP pour les données structurées et semi-structurées. Il est conçu pour gérer des ensembles de données massifs avec une forte compression, il convient donc aux scénarios avec des données vectorielles de plusieurs téraoctets. Les opérations vectorielles s’intègrent bien avec les métadonnées et les requêtes structurées, il est donc excellent pour les flux de travail d’analytique avancée.
Scalabilité et performances
- Elasticsearch: Elasticsearch convient bien à la recherche vectorielle en mémoire, mais peut évoluer vers des indices basés sur disque si nécessaire. HNSW est efficace pour les environnements à QPS (requêtes par seconde) élevé, mais les performances sont optimales lorsque les données vectorielles tiennent en mémoire. Elasticsearch est distribué, il peut donc évoluer horizontalement sur plusieurs nœuds, ce qui le rend adapté aux applications à grande échelle.
- ClickHouse: ClickHouse peut paralléliser les requêtes sur plusieurs cœurs CPU, ce qui est excellent pour les grands ensembles de données. Sa compression réduit les coûts de stockage et les performances d’E/S. Bien que sa recherche vectorielle ne soit pas aussi spécialisée que celle d’Elasticsearch, ClickHouse compense par sa scalabilité pour les charges de travail analytiques avec des données vectorielles et des métadonnées.
Flexibilité et personnalisation
- Elasticsearch: Elasticsearch offre une personnalisation étendue pour la recherche hybride, le tri des index et les fonctionnalités de sécurité. Il dispose d’outils comme Kibana pour la visualisation et Beats pour l’ingestion de données, il est donc plus flexible.
- ClickHouse: La flexibilité de ClickHouse réside dans son modèle SQL. Les développeurs peuvent créer des requêtes complexes combinant opérations vectorielles, filtrage des métadonnées et agrégations sans apprendre de nouveaux langages de requête. Ses codecs de compression personnalisables permettent aux utilisateurs d’optimiser le stockage pour des charges de travail spécifiques.
Intégration et écosystème
- Elasticsearch: Un écosystème mature autour d’Elasticsearch avec des pipelines de données (Logstash), de la visualisation (Kibana) et de la sécurité. Son adoption étendue signifie qu’il est facile de trouver des plugins, du support communautaire et des services gérés comme Elastic Cloud.
- ClickHouse: ClickHouse s’intègre bien avec les outils d’analytique et de BI grâce à sa conception axée sur SQL. Bien qu’il ne dispose pas du même niveau de plugins portés par la communauté qu’Elasticsearch, son orientation OLAP en fait un choix naturel pour les applications analytiques avec une recherche vectorielle haute performance.
Facilité d’utilisation
- Elasticsearch : Elasticsearch dispose d’une excellente documentation et ses API RESTful sont conviviales pour les développeurs. Mais la configuration et la maintenance peuvent être complexes dans les environnements distribués.
- ClickHouse : ClickHouse est convivial pour les développeurs familiers avec SQL. L’installation et la gestion sont relativement simples, mais le réglage fin des performances de recherche vectorielle nécessite une expertise.
Coût
- Elasticsearch : Les coûts opérationnels peuvent augmenter avec Elasticsearch en raison de sa forte consommation de mémoire, en particulier lors de la mise à l’échelle pour des cas d’utilisation à QPS élevé. Les services managés comme Elastic Cloud peuvent simplifier les opérations, mais ajoutent au coût.
- ClickHouse : La compression élevée et le traitement parallèle de ClickHouse sont rentables pour les grands ensembles de données. Il peut fonctionner sans indices limités par la mémoire, ce qui peut réduire davantage les coûts d’infrastructure.
Sécurité
- Elasticsearch : Elasticsearch dispose de fonctionnalités de sécurité robustes : contrôle d’accès basé sur les rôles, chiffrement au repos et autorisations granulaires. Ces fonctionnalités sont bien intégrées à l’écosystème, ce qui lui permet de répondre aux exigences de niveau entreprise.
- ClickHouse : ClickHouse dispose du contrôle d’accès, du chiffrement SSL et de journaux d’audit. C’est suffisant pour la plupart des applications, mais moins étendu que les fonctionnalités d’entreprise d’Elasticsearch.
Quand utiliser Elasticsearch
Elasticsearch est destiné aux cas d’utilisation où une recherche hybride est requise, recherche en texte intégral et similarité vectorielle. La recherche vectorielle basée sur HNSW est optimisée pour les environnements en temps réel à QPS élevé, elle convient donc bien à la récupération de documents alimentée par l’IA, aux systèmes de recommandation e-commerce et à l’IA générative. Avec un écosystème mature, une sécurité intégrée et de nombreuses intégrations parmi lesquelles choisir, Elasticsearch est idéal pour les environnements distribués où l’évolutivité et la facilité d’exploitation sont essentielles.
Quand utiliser ClickHouse
ClickHouse est destiné aux scénarios où vous disposez d’ensembles de données massifs nécessitant un traitement et un stockage parallèles, à des applications fortement analytiques ou à des charges de travail IA à grande échelle. Son approche native SQL facilite la combinaison de la recherche vectorielle avec le filtrage des métadonnées et les agrégations, ce qui convient bien aux développeurs familiers avec les bases de données relationnelles. ClickHouse peut gérer des ensembles de données de plusieurs téraoctets sans indices limités par la mémoire, il est donc rentable et très performant pour les requêtes qui combinent données vectorielles et structurées.
Résumé
Elasticsearch et ClickHouse sont tous deux adaptés à la recherche vectorielle, mais pour des cas d’utilisation différents. Elasticsearch convient à la recherche hybride en temps réel avec un écosystème mature et des API conviviales, tandis que ClickHouse convient à l’analytique à grande échelle avec des flux de travail centrés sur SQL et une architecture évolutive. Choisissez entre eux en fonction de votre cas d’utilisation. Avez-vous besoin d’une recherche en temps réel avec de nombreuses fonctionnalités ou d’analyses évolutives pour des ensembles de données massifs. Connaître vos types de données, vos modèles de requêtes et vos exigences de performance guidera la bonne décision.
Lisez ceci pour obtenir un aperçu d’Elasticsearch et de Clickhosue, 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 comparer les bases de données vectorielles. En fin de compte, un benchmarking approfondi avec vos propres ensembles 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 Open-source VectorDBBench 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 hautes performances, 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 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 la 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 grand public 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

Zilliz Cloud Enterprise Vector Search Powers High-Performance AI on AWS
Zilliz Cloud on AWS powers secure, scalable, ultra-fast vector search for enterprise AI apps, with BYOC, sub-10ms latency, and zero-DevOps simplicity.

8 Latest RAG Advancements Every Developer Should Know
Explore eight advanced RAG variants that can solve real problems you might be facing: slow retrieval, poor context understanding, multimodal data handling, and resource optimization.

Vector Databases vs. Object-Relational Databases
Use a vector database for AI-powered similarity search; use an object-relational database for complex data modeling with both relational integrity and object-oriented features.
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.


