Choisir une base de données vectorielle : Milvus vs. Chroma DB
Cette comparaison entre Milvus et Chroma DB a été mise à jour pour la dernière fois le 21 janvier 2025. Afin de vous fournir les conclusions les plus récentes, ce blog sera régulièrement mis à jour avec les dernières informations.
L’essor des grands modèles de langage (LLMs) comme ChatGPT a suscité une demande pour des bases de données vectorielles servant de mémoire à long terme pour ces modèles. Cette demande a conduit au développement de divers systèmes de recherche vectorielle, allant des bases de données traditionnelles avec des plugins de recherche vectorielle intégrés aux bases de données vectorielles légères et aux bases de données vectorielles spécialisées. Différentes bases de données vectorielles utilisent diverses métriques de distance pour évaluer les relations et les similarités entre les points de données, soulignant l’importance de choisir la bonne base de données pour une recherche efficace de similarité vectorielle.
La base de données vectorielle Chroma est une base de données vectorielle légère remarquable, qui privilégie la facilité d’utilisation et la convivialité pour les développeurs. En revanche, Milvus, une base de données vectorielle open source, native de l’IA et spécialement conçue, excelle dans la gestion d’applications à grande échelle, hautes performances et faible latence.
Bien que les deux bases de données gèrent efficacement les données vectorielles, elles répondent à des besoins distincts. Chroma est un bon choix pour les développeurs travaillant avec des ensembles de données inférieurs à un million de vecteurs, qui privilégient une mise en œuvre rapide et simple. En revanche, Milvus, conçu par Zilliz, est spécifiquement destiné aux applications exigeant une échelle extrême pouvant atteindre des milliards, voire des billions, de points vectoriels, une capacité de recherche robuste et des temps de réponse rapides. Son architecture est finement optimisée pour ces indicateurs de performance critiques, positionnant Milvus comme une solution robuste et innovante pour les applications de bases de données vectorielles les plus exigeantes. En outre, une analyse comparative de bases de données vectorielles populaires comme Pinecone, Milvus et Weaviate révèle leurs forces, leurs compromis et leurs cas d’utilisation, ce qui est crucial pour sélectionner la solution appropriée en fonction de besoins spécifiques.
Cette comparaison entre Chroma et Milvus vise à approfondir ces distinctions et à fournir une compréhension complète de leurs capacités respectives. Nous présenterons également Milvus Lite, une version légère de Milvus, et la comparerons à Chroma.
Milvus surpasse Chroma en matière de scalabilité élastique et horizontale.
| Fonctionnalités | Milvus | Chroma |
|---|---|---|
| Séparation du stockage et du calcul | Oui | Oui |
| Séparation des requêtes et des insertions | Oui. Au niveau des composants (ce qui offre une scalabilité plus fine). | Non. Ne peut pas évoluer au-delà d’un seul nœud. |
| Placement dynamique des segments vs. partitionnement statique des données | Placement dynamique des segments | Pas de remplacement distribué des données |
| Cloud-native | Oui | Non |
| Prise en charge de vecteurs à l’échelle du milliard/billion | Oui | Non. Il ne peut gérer que jusqu’à un million de vecteurs. |
Milvus dispose d’un système distribué avec des composants de calcul et de stockage séparés, offrant une scalabilité fluide jusqu’à des milliards, voire des billions, de vecteurs afin de répondre aux besoins métier croissants. Cette architecture permet également une mise à l’échelle indépendante des ressources de calcul et de stockage, offrant flexibilité et rentabilité en adéquation avec l’évolution des exigences métier.
De plus, Milvus peut allouer dynamiquement de nouveaux nœuds à un groupe d’actions, accélérant les opérations ou réduisant le nombre de nœuds, libérant ainsi des ressources pour d’autres actions. L’allocation dynamique des nœuds permet une mise à l’échelle et une planification des ressources plus faciles, et garantit une faible latence ainsi qu’un débit élevé.
À l’inverse, tout en privilégiant la simplicité et la facilité d’utilisation, Chroma est confronté à des limites de scalabilité, avec une limite supérieure de stockage allant jusqu’à un million de points vectoriels. Sa limitation à un seul nœud et l’absence de remplacement de données distribué entravent son adéquation aux applications dont les exigences augmentent.
En termes de fonctionnalités, Milvus et Chroma offrent tous deux un ensemble de fonctionnalités conçues pour gérer et récupérer efficacement les embeddings vectoriels.
| Fonctionnalités | Milvus | Chroma |
|---|---|---|
| Contrôle d’accès basé sur les rôles (RBAC) | Oui | Non |
| Prise en charge des index sur disque | Oui | Non |
| Recherche hybride (c.-à-d. filtrage scalaire) | Oui avec filtrage scalaire | Oui avec filtrage scalaire |
| Partitions/espaces de noms/groupes logiques | Oui | Non |
| Type d’index pris en charge | 14 index : FLAT, IVF_FLAT, IVF_SQ8, IVF_PQ, HNSW, BIN_FLAT, BIN_IVF_FLAT, DiskANN, ScaNN, SPARSE_INVERTED_INDEX, SPARSE_WAND, CAGRA, GPU_IVF_FLAT et GPU_IVF_PQ), HNSW |
Milvus se distingue par une prise en charge robuste du contrôle d’accès basé sur les rôles (RBAC), offrant un mécanisme efficace de gestion de l’accès aux données. Cette fonctionnalité s’avère particulièrement précieuse pour les applications de niveau entreprise, en renforçant les capacités d’isolation et de protection des données. Milvus intègre en outre plusieurs index en mémoire et des partitions au niveau des tables, garantissant une récupération haute performance dans les cas d’utilisation en temps réel. De plus, la plateforme offre de la flexibilité avec des index sur disque, fournissant des options aux développeurs et aux entreprises plus sensibles aux considérations de coût et ne nécessitant pas un nombre élevé de requêtes par seconde (QPS).
D’un autre côté, Chroma ne prend pas en charge le RBAC, ce qui pourrait limiter ses capacités de gestion et de protection de l’accès aux données. La plateforme repose principalement sur une indexation de base en mémoire, présentant une approche plus simple, mais avec des limites potentielles pour les applications ayant des exigences plus complexes.
Milvus et Chroma permettent des opérations de recherche hybride, autorisant les utilisateurs à effectuer des recherches vectorielles avec un filtrage efficace des métadonnées avant et après l’opération de recherche. Dans Milvus 2.4, nous prendrons en charge l’index inversé avec tantivy, promettant une augmentation substantielle de la vitesse de préfiltrage.
Une autre différence notable entre Milvus et Chroma réside dans leur prise en charge des types d’index. Milvus prend en charge un vaste éventail de 14 index, notamment 14 index, notamment FLAT, IVF_FLAT, IVF_SQ8, IVF_PQ, HNSW, BIN_FLAT, BIN_IVF_FLAT, DiskANN, ScaNN, SPARSE_INVERTED_INDEX, SPARSE_WAND, CAGRA, GPU_IVF_FLAT et GPU_IVF_PQ. En revanche, Chroma s’appuie uniquement sur l’algorithme HNSW pour sa recherche KNN.
Bien que les fonctionnalités de Chroma puissent être suffisantes pour certaines applications spécifiques, ses limites pourraient affecter son adaptabilité à divers cas d’utilisation. Grâce à ses fonctionnalités complètes, Milvus est une solution polyvalente qui répond à un spectre plus large de besoins en gestion de données vectorielles.
Qu’est-ce qu’une base de données vectorielle ?
Une base de données vectorielle est un type spécialisé de base de données conçu pour stocker des données sous forme de vecteurs de grande dimension. Ces vecteurs sont essentiellement des listes de nombres qui encapsulent les caractéristiques ou propriétés d’un objet, ce qui les rend idéaux pour représenter des données complexes et non structurées telles que des images, des vidéos et le langage naturel. Contrairement aux bases de données traditionnelles, qui sont optimisées pour les données structurées et les requêtes relationnelles, les bases de données vectorielles excellent dans la gestion de vecteurs de grande dimension et l’exécution de comparaisons mathématiques afin de déterminer la similarité ou la dissimilarité entre des points de données.
Les bases de données vectorielles sont particulièrement avantageuses dans les scénarios où les données sont non structurées et nécessitent des capacités de recherche sophistiquées. Par exemple, elles permettent aux applications d’effectuer des requêtes complexes, comme trouver des images similaires à une image donnée ou récupérer des documents sémantiquement liés à un texte spécifique. Cette capacité est cruciale pour les applications modernes dans des domaines tels que le traitement du langage naturel, la vision par ordinateur et les systèmes de recommandation, où la capacité à stocker efficacement et à rechercher dans de vastes quantités de données vectorielles constitue un avantage significatif en matière de performances.
Fonctionnalités clés des bases de données vectorielles
Les fonctionnalités clés des bases de données vectorielles sont conçues pour optimiser le stockage, la récupération et la gestion des données vectorielles à haute dimension. Ces fonctionnalités comprennent :
Indexation vectorielle : Les bases de données vectorielles emploient des algorithmes d’indexation spécialisés pour stocker et récupérer efficacement des données vectorielles à haute dimension. Cela garantit que les recherches sont rapides et précises, même lorsque l’ensemble de données s’agrandit.
Recherche vectorielle : L’une des principales fonctions d’une base de données vectorielle est de permettre des recherches rapides et efficaces de vecteurs similaires. Cela permet des requêtes complexes telles que « trouve-moi des images similaires à celle-ci » ou « récupère des documents sémantiquement liés à ce texte », ce qui la rend inestimable pour les applications d’IA et d’apprentissage automatique.
Remplacement de données distribué : Les bases de données vectorielles avancées comme Milvus prennent en charge le remplacement de données distribué, ce qui améliore la gestion des données et l’évolutivité. Cette fonctionnalité permet à la base de données de gérer des données à grande échelle sur plusieurs nœuds, garantissant une haute disponibilité et de bonnes performances.
Prise en charge de différents types de données : Les bases de données vectorielles sont polyvalentes dans la gestion de divers types de données, y compris les données structurées et non structurées. Elles prennent en charge différents formats de données, ce qui les rend adaptées à un large éventail d’applications.
Ces fonctionnalités clés font des bases de données vectorielles un outil puissant pour gérer et interroger des données vectorielles à haute dimension, offrant des avantages significatifs par rapport aux bases de données traditionnelles dans des cas d’utilisation spécifiques.
Milvus vs. Chroma sur les fondations open-source et les fonctionnalités spécialement conçues dans les bases de données vectorielles
Milvus et Chroma sont toutes deux des bases de données open-source sous licence Apache 2.0.
| Fonctionnalités | Milvus | Chroma |
|---|---|---|
| Spécialement conçue pour les vecteurs | Oui | Oui |
| Cohérence ajustable | Oui | Non |
| Prise en charge des données vectorielles en flux et par lots | Oui | Non |
| Prise en charge des vecteurs binaires | Oui | Non |
| SDK multilingue | SDK Python, Java, JavaScript, Go et Node.js entièrement pris en charge | Python, Javascript |
Milvus a été créé par les ingénieurs de Zilliz en 2019. Il a ensuite été donné à la LF AI & Data Foundation en 2021 afin d’améliorer son accessibilité à un plus large éventail de développeurs et d’organisations. Milvus compte 32 000+ étoiles GitHub, plus de 260 contributeurs communautaires et plus de 70 millions de téléchargements d’images docker.
Chroma est maintenu par une seule entité commerciale appelée Chroma. Avec plus de 17 000 étoiles GitHub, Chroma s’est initialement concentré sur les charges de travail analytiques portant sur les embeddings. Cependant, avec l’émergence de l’IA et des LLM comme ChatGPT, il est devenu un magasin d’embeddings à usage général.
Milvus et Chroma offrent des fonctionnalités spécialement conçues pour répondre à des besoins spécifiques dans les applications de données vectorielles. Milvus fournit un ensemble complet de fonctionnalités, notamment une cohérence ajustable, la prise en charge du traitement en flux et par lots des données vectorielles, la prise en charge des vecteurs binaires, ainsi qu’un SDK multilangage comprenant Python, Java, Go, C++, Node.js et Ruby.
Chroma privilégie la simplicité et la facilité d’utilisation plutôt qu’un vaste ensemble de fonctionnalités, ce qui se traduit par une offre plus limitée. Il fournit une sélection restreinte de SDK, principalement axée sur Python et JavaScript.
Chroma privilégie une prise en main et une utilisation faciles. Cependant, cette simplicité s’accompagne de compromis, notamment des performances de recherche réduites, des limites de scalabilité et l’exclusion de nombreuses fonctionnalités utiles de gestion de base de données.
Milvus Lite est une alternative légère à Milvus qui s’exécute localement au sein de votre application Python. Il préserve la facilité de prise en main tout en conservant un ensemble étendu de fonctionnalités. Basé sur la populaire base de données vectorielle open source Milvus, Milvus Lite réutilise les composants essentiels pour l’indexation vectorielle et l’analyse des requêtes, tout en supprimant les éléments conçus pour une forte scalabilité dans les systèmes distribués. Cette conception en fait une solution compacte et efficace, idéale pour les environnements disposant de ressources informatiques limitées, tels que les ordinateurs portables, les Jupyter Notebooks et les appareils mobiles ou en périphérie.
Milvus Lite s’intègre à diverses piles de développement IA comme LangChain et LlamaIndex, permettant son utilisation comme magasin vectoriel dans des pipelines de génération augmentée par récupération (RAG) pour une récupération efficace des embeddings vectoriels sans nécessiter de configuration de serveur. Exécutez simplement pip install pymilvus (version 2.4.3 ou supérieure) pour l’intégrer à votre application IA en tant que bibliothèque Python.
Milvus Lite partage l’API Milvus, garantissant que votre code côté client fonctionne aussi bien pour de petits déploiements locaux que pour des serveurs Milvus déployés sur Docker ou Kubernetes avec des milliards de vecteurs.
Remarque: Milvus Lite convient pour débuter avec la recherche par similarité vectorielle ou pour créer des démos et des prototypes. Pour un cas d’utilisation en production, nous recommandons d’utiliser Milvus sur Docker et Kubenetes, ou d’envisager Milvus entièrement géré sur Zilliz Cloud.
Pour des informations plus détaillées sur Milvus Lite, consultez les ressources suivantes:
Remarque: Milvus Lite convient pour débuter avec la recherche vectorielle ou pour créer des démos et des prototypes. Pour un cas d’utilisation en production, nous recommandons d’utiliser Milvus sur Docker et Kubenetes, ou d’envisager Milvus entièrement géré sur .
Pour des informations plus détaillées sur Milvus Lite, consultez les ressources suivantes:
Présentation de Milvus Lite: commencez à créer une application GenAI en quelques secondes
Comparaison VectorDB : Comparer n’importe quelle base de données vectorielle open source à une alternative
Mise à jour de Milvus : Quoi de neuf dans Milvus 2.4.0 ?
Milvus entièrement géré : Essayez Zilliz Cloud gratuitement
Webinar : Libérer la puissance de la recherche vectorielle dans Zilliz Cloud
RAG : Qu’est-ce que RAG ?
Dernière mise à jour de Zilliz Cloud : Zilliz Cloud disponible dans 11 régions chez 3 grands fournisseurs de cloud
Comparaison des bases de données vectorielles : Milvus et Chroma
Scalabilité et performances
Milvus : Milvus est conçu pour les environnements distribués à grande échelle, offrant une scalabilité élastique et horizontale. Cela en fait un excellent choix pour les applications hautes performances qui nécessitent la capacité de monter en charge de manière transparente à mesure que les volumes de données augmentent. L’architecture de Milvus prend en charge l’ajout de nouveaux nœuds pour gérer des charges de travail accrues, garantissant une faible latence et un débit élevé.
Chroma : Chroma, en revanche, est optimisé pour des capacités de recherche en temps réel et à faible latence. Son architecture à nœud unique est conçue pour les applications qui privilégient des performances de recherche rapides plutôt que la scalabilité. Bien que cela rende Chroma adapté aux jeux de données plus petits et aux applications nécessitant une mise en œuvre rapide, il peut rencontrer des limites à mesure que les volumes de données augmentent.
Fonctionnalités et facilité d’utilisation
Milvus : Milvus offre un ensemble complet de fonctionnalités comprenant la cohérence ajustable, la prise en charge du traitement en flux et par lots des données vectorielles, la prise en charge des vecteurs binaires et un SDK multilingue. Ces fonctionnalités rendent Milvus adapté aux applications complexes qui nécessitent une gestion robuste des données et une flexibilité dans le traitement de différents types de données vectorielles.
Chroma : Chroma se concentre sur la fourniture d’une API simple et facile à utiliser, ce qui le rend très convivial pour le développement. Cette simplicité est idéale pour les applications qui ont besoin d’une solution de base de données directe, sans la complexité de fonctionnalités étendues. Toutefois, cette facilité d’utilisation s’accompagne de compromis en matière de scalabilité et de fonctionnalités avancées.
Gestion des données vectorielles
Milvus : Milvus prend en charge un large éventail d’algorithmes d’indexation, notamment IVF et HNSW, qui sont essentiels pour une recherche et une récupération vectorielles efficaces. De plus, Milvus fournit une prise en charge robuste de la réplication des données et du basculement, garantissant une haute disponibilité et une grande fiabilité dans les environnements de production.
Chroma : Chroma utilise un algorithme d’indexation propriétaire conçu pour des performances de recherche rapides. Il prend également en charge la réplication des données et le basculement, mais son architecture à nœud unique peut limiter son efficacité dans la gestion de données à grande échelle et de requêtes complexes.
En résumé, bien que Milvus et Chroma offrent tous deux des fonctionnalités précieuses pour la gestion des données vectorielles, ils répondent à des besoins différents. Milvus est idéal pour les applications à grande échelle et hautes performances nécessitant des fonctionnalités étendues et une grande scalabilité, tandis que Chroma convient aux applications à plus petite échelle qui privilégient la facilité d’utilisation et une mise en œuvre rapide.
Continuer à lire

Zilliz Cloud Delivers Better Performance and Lower Costs with Arm Neoverse-based AWS Graviton
Zilliz Cloud adopts Arm-based AWS Graviton3 CPUs to cut costs, speed up AI vector search, and power billion-scale RAG and semantic search workloads.

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.

Why Deepseek is Waking up AI Giants Like OpenAI And Why You Should Care
Discover how DeepSeek R1's open-source AI model with superior reasoning capabilities and lower costs is disrupting the AI landscape and challenging tech giants like OpenAI.



