Qu'est-ce que Milvus ?
Milvus est une base de données vectorielle hautement performante et évolutive qui s'exécute efficacement dans un large éventail d'environnements, de l'ordinateur portable aux systèmes distribués à grande échelle. Elle est disponible à la fois sous forme de logiciel libre et de service en nuage.
Milvus est un projet open-source de LF AI & Data Foundation distribué sous la licence Apache 2.0. La plupart des contributeurs sont des experts de la communauté du calcul haute performance (HPC), spécialisés dans la construction de systèmes à grande échelle et dans l'optimisation de codes tenant compte du matériel. Les principaux contributeurs sont des professionnels de Zilliz, ARM, NVIDIA, AMD, Intel, Meta, IBM, Salesforce, Alibaba et Microsoft.
Données non structurées, Embeddings et Milvus
Les données non structurées, telles que le texte, les images et le son, varient en termes de format et comportent une sémantique sous-jacente riche, ce qui rend leur analyse difficile. Pour gérer cette complexité, les embeddings sont utilisés pour convertir les données non structurées en vecteurs numériques qui capturent leurs caractéristiques essentielles. Ces vecteurs sont ensuite stockés dans une base de données vectorielle, ce qui permet des recherches et des analyses rapides et évolutives.
Milvus offre de solides capacités de modélisation des données, ce qui vous permet d'organiser vos données non structurées ou multimodales en collections structurées. Il prend en charge un large éventail de types de données pour différentes modélisations d'attributs, notamment les types numériques et de caractères courants, divers types de vecteurs, des tableaux, des ensembles et JSON, ce qui vous évite d'avoir à gérer plusieurs systèmes de base de données.
Données non structurées, embeddings et Milvus
Milvus propose trois modes de déploiement, couvrant un large éventail d'échelles de données, du prototypage local dans les blocs-notes Jupyter aux clusters Kubernetes massifs gérant des dizaines de milliards de vecteurs :
- Milvus Lite est une bibliothèque Python qui peut être facilement intégrée dans vos applications. En tant que version légère de Milvus, elle est idéale pour le prototypage rapide dans les ordinateurs portables Jupyter ou l'exécution sur des appareils périphériques avec des ressources limitées. En savoir plus.
- Milvus Standalone est un déploiement de serveur sur une seule machine, avec tous les composants regroupés dans une image Docker unique pour un déploiement pratique. En savoir plus.
- Milvus Distributed peut être déployé sur des clusters Kubernetes, avec une architecture cloud-native conçue pour des scénarios à l'échelle du milliard, voire plus. Cette architecture garantit la redondance des composants critiques. En savoir plus.
Ce qui rend Milvus si rapide?
Milvus a été conçu dès le premier jour pour être un système de base de données vectorielle très efficace. Dans la plupart des cas, Milvus surpasse les autres bases de données vectorielles de 2 à 5 fois (voir les résultats de VectorDBBench). Ces performances élevées sont le résultat de plusieurs décisions clés en matière de conception :
Optimisation en fonction du matériel: Pour adapter Milvus à divers environnements matériels, nous avons optimisé ses performances spécifiquement pour de nombreuses architectures et plateformes matérielles, notamment AVX512, SIMD, GPU et NVMe SSD.
Algorithmes de recherche avancés: Milvus prend en charge une large gamme d'algorithmes d'indexation/recherche en mémoire et sur disque, notamment IVF, HNSW, DiskANN, et bien d'autres, qui ont tous été profondément optimisés. Comparé à des implémentations populaires comme FAISS et HNSWLib, Milvus offre des performances supérieures de 30 à 70 %.
Moteur de recherche en C++: Plus de 80 % des performances d'une base de données vectorielles sont déterminées par son moteur de recherche. Milvus utilise C++ pour ce composant critique en raison des performances élevées du langage, de l'optimisation de bas niveau et de la gestion efficace des ressources. Plus important encore, Milvus intègre de nombreuses optimisations de code tenant compte du matériel, allant de la vectorisation au niveau de l'assemblage à la parallélisation et à l'ordonnancement multithread, afin d'exploiter pleinement les capacités du matériel.
Orienté colonnes: Milvus est un système de base de données vectorielles orienté colonnes. Les principaux avantages proviennent des schémas d'accès aux données. Lors de l'exécution des requêtes, une base de données orientée colonnes ne lit que les champs spécifiques impliqués dans la requête, plutôt que des lignes entières, ce qui réduit considérablement la quantité de données accédées. En outre, les opérations sur les données en colonnes peuvent être facilement vectorisées, ce qui permet d'appliquer des opérations à l'ensemble des colonnes en une seule fois, ce qui améliore encore les performances.
Ce qui rend Milvus si évolutif
En 2022, Milvus a pris en charge des vecteurs à l'échelle du milliard, et en 2023, il est passé à des dizaines de milliards avec une stabilité constante, alimentant des scénarios à grande échelle pour plus de 300 grandes entreprises, notamment Salesforce, PayPal, Shopee, Airbnb, eBay, NVIDIA, IBM, AT&T, LINE, ROBLOX, Inflection, etc.
L'architecture de système hautement découplée et native pour l'informatique en nuage de Milvus garantit que le système peut s'étendre continuellement au fur et à mesure que les données augmentent :
Architecture système hautement découplée de Milvus
Milvus lui-même est entièrement sans état, de sorte qu'il peut être facilement mis à l'échelle à l'aide de Kubernetes ou de clouds publics. En outre, les composants de Milvus sont bien découplés, les trois tâches les plus critiques - recherche, insertion de données et indexation/compactage - étant conçues comme des processus facilement parallélisables, avec une logique complexe séparée. Cela garantit que le nœud de requête, le nœud de données et le nœud d'index correspondants peuvent évoluer de manière indépendante, optimisant ainsi les performances et la rentabilité.
Types de recherches prises en charge par Milvus
Milvus prend en charge différents types de fonctions de recherche pour répondre aux exigences des différents cas d'utilisation :
- Recherche ANN: Trouve les K premiers vecteurs les plus proches de votre vecteur d'interrogation.
- Recherche par filtrage: Effectue une recherche ANN dans des conditions de filtrage spécifiées.
- Recherche par plage: Recherche les vecteurs situés dans un rayon spécifié par rapport au vecteur de votre requête.
- Recherche hybride: Effectue une recherche ANN basée sur plusieurs champs vectoriels.
- Recherche par mot-clé : Recherche par mot-clé basée sur BM25.
- Reranking (reclassement): Ajuste l'ordre des résultats de la recherche en fonction de critères supplémentaires ou d'un algorithme secondaire, en affinant les résultats initiaux de la recherche ANN.
- Récupérer: Récupère les données en fonction de leurs clés primaires.
- Requête: Permet d'extraire des données à l'aide d'expressions spécifiques.
Un ensemble complet de fonctionnalités
Outre les fonctions de recherche clés mentionnées ci-dessus, Milvus fournit également un ensemble de fonctions mises en œuvre autour des recherches ANN afin que vous puissiez utiliser pleinement ses capacités.
API et SDK
- API RESTful (officielle)
- PyMilvus (SDK Python) (officiel)
- Go SDK (officiel)
- SDK Java (officiel)
- SDKNode.js (JavaScript) (officiel)
- C# (contribué par Microsoft)
Types de données avancés
Outre les types de données primitifs, Milvus prend en charge divers types de données avancés et leurs métriques de distance respectives.
- Vecteurs épars
- Vecteurs binaires
- Prise en charge JSON
- Prise en charge des tableaux
- Mesures de distance
Accélération
Algorithmes de recherche Milvus prend en charge un ensemble d'algorithmes d'indexation et de recherche paramétrables. Pour plus de détails, voir Index en mémoire, Index sur disque et Index GPU.
Partitions et clés de partition Les partitions sont des sous-divisions d'une collection Milvus. Vous pouvez choisir un champ scalaire comme clé de partition pour améliorer les performances de recherche. Pour plus de détails, voir Gérer les partitions et Utiliser la clé de partition.
Modèle de cohérence réglable La cohérence garantit que chaque nœud ou réplica Milvus a la même vue des données lorsqu'il écrit ou lit des données à un moment donné. Vous pouvez facilement régler le niveau de cohérence lorsque vous effectuez des recherches ANN dans Milvus. Pour plus de détails, voir Cohérence.
Importation de données à haut débit Pour importer un grand volume de données dans Milvus au lieu de les insérer l'une après l'autre, envisagez d'utiliser nos outils d'importation de données à haut débit. Pour plus de détails, voir Préparer les données sources et Importer les données.
Prise en charge de la multi-tenance Milvus a mis en œuvre de nombreuses fonctionnalités orientées vers les scénarios de multi-tenance, y compris la clé de partition, la clé de clustering, etc. Pour plus de détails, voir Stratégies multi-tenant.
Sécurité et autorisation
Modèle de cohérence réglable La cohérence garantit que chaque nœud ou réplica Milvus a la même vue des données lorsqu'il écrit ou lit des données à un moment donné. Vous pouvez facilement régler le niveau de cohérence lorsque vous effectuez des recherches ANN dans Milvus. Pour plus de détails, voir Cohérence.
Isolation des données et contrôle des ressources Dans les scénarios de multi-location, l'isolation des données est l'exigence de base en matière de sécurité. Milvus met en œuvre plusieurs fonctionnalités pour résoudre vos problèmes de sécurité. Pour plus de détails, voir Gestion des groupes de ressources et Compaction du clustering.
Intégrations AI
Intégrations de modèles d'intégration Les modèles d'intégration convertissent les données non structurées en leur représentation numérique dans un espace de données à haute dimension afin que vous puissiez les stocker dans Milvus. Actuellement, PyMilvus, le SDK Python, intègre plusieurs modèles d'intégration afin que vous puissiez rapidement préparer vos données en intégrations vectorielles. Pour plus de détails, voir Vue d'ensemble de l'intégration.
Intégrations de modèles de reranking Dans le domaine de la recherche d'informations et de l'IA générative, un reranker est un outil essentiel qui optimise l'ordre des résultats des recherches initiales. PyMilvus intègre également plusieurs modèles de reclassement afin d'optimiser l'ordre des résultats renvoyés par les recherches initiales. Pour plus de détails, reportez-vous à la section Vue d'ensemble des modèles de reclassement.
LangChain et autres intégrations d'outils d'IA À l'ère de la GenAI, les outils tels que LangChain suscitent beaucoup d'intérêt de la part des développeurs d'applications. En tant que composant de base, Milvus sert généralement de magasin de vecteurs dans ces outils. Pour savoir comment intégrer Milvus dans vos outils d'IA préférés, reportez-vous à nos intégrations et tutoriels.
Outils et écosystème
Attu Attu est une interface graphique intuitive tout-en-un qui vous aide à gérer Milvus et les données qu'il stocke. Pour plus de détails, consultez le référentiel Attu.
Birdwatcher Birdwatcher est un outil de débogage pour Milvus. En l'utilisant pour se connecter à etcd, vous pouvez vérifier l'état de votre système Milvus ou le configurer à la volée. Pour plus d'informations, reportez-vous à BirdWatcher.
Intégrations Promethus & Grafana Prometheus est une boîte à outils open-source de surveillance des systèmes et d'alerte pour Kubernetes. Grafana est une pile de visualisation open-source qui peut se connecter à toutes les sources de données. Vous pouvez utiliser Promethus et Grafana en tant que fournisseur de services de surveillance pour surveiller visuellement les performances de Milvus distribué. Pour plus de détails, voir Déploiement des services de surveillance.
Milvus Backup Milvus Backup est un outil qui permet aux utilisateurs de sauvegarder et de restaurer les données Milvus. Il fournit à la fois une interface CLI et une API pour s'adapter à différents scénarios d'application. Pour plus de détails, voir Milvus Backup.
Milvus Capture Data Change (CDC) Milvus-CDC peut capturer et synchroniser des données incrémentielles dans les instances Milvus et garantit la fiabilité des données d'entreprise en les transférant de manière transparente entre les instances source et cible, ce qui facilite la sauvegarde incrémentielle et la reprise après sinistre. Pour plus de détails, voir Milvus CDC.
Connecteurs Milvus Milvus a prévu un ensemble de connecteurs pour vous permettre d'intégrer Milvus de manière transparente à des outils tiers, tels qu'Apache Spark. Actuellement, vous pouvez utiliser notre connecteur Spark pour alimenter vos données Milvus vers Apache Spark en vue d'un traitement d'apprentissage automatique. Pour plus d'informations, reportez-vous à Spark-Milvus Connector.
Vector Transmission Services (VTS) Milvus fournit un ensemble d'outils vous permettant de transférer vos données entre une instance Milvus et un ensemble de sources de données, y compris les clusters Zilliz, Elasticsearch, Postgres (PgVector) et une autre instance Milvus. Pour plus de détails, voir Migrations.