Aperçu des options de déploiement de Milvus
Milvus est une base de données vectorielle hautement performante et évolutive. Elle prend en charge des cas d'utilisation de tailles très diverses, depuis les démonstrations s'exécutant localement dans des blocs-notes Jupyter jusqu'aux clusters Kubernetes à grande échelle gérant des dizaines de milliards de vecteurs. Il existe actuellement trois options de déploiement de Milvus : Milvus Lite, Milvus Standalone et Milvus Distributed.
Milvus Lite
Milvus Lite est une bibliothèque Python qui peut être importée dans vos applications. En tant que version légère de Milvus, elle est idéale pour le prototypage rapide dans les blocs-notes Jupyter ou l'exécution sur des appareils intelligents avec des ressources limitées. Milvus Lite prend en charge les mêmes API que les autres déploiements Milvus. Le code côté client interagissant avec Milvus Lite peut également fonctionner avec les instances Milvus dans d'autres modes de déploiement.
Pour intégrer Milvus Lite dans vos applications, exécutez pip install pymilvus
pour l'installer et utilisez l'instruction MilvusClient("./demo.db")
pour instancier une base de données vectorielle avec un fichier local qui conserve toutes vos données. Pour plus de détails, voir Exécuter Milvus Lite.
Milvus Standalone
Milvus Standalone est un déploiement de serveur sur une seule machine. Tous les composants de Milvus Standalone sont regroupés dans une seule image Docker, ce qui facilite le déploiement. Si vous avez une charge de travail de production mais préférez ne pas utiliser Kubernetes, l'exécution de Milvus Standalone sur une seule machine avec suffisamment de mémoire est une bonne option. En outre, Milvus Standalone prend en charge la haute disponibilité via la réplication maître-esclave.
Milvus Distribué
Milvus Distributed peut être déployé sur des clusters Kubernetes. Ce déploiement présente une architecture cloud-native, où la charge d'ingestion et les requêtes de recherche sont traitées séparément par des nœuds isolés, ce qui permet la redondance des composants critiques. Il offre l'évolutivité et la disponibilité les plus élevées, ainsi que la flexibilité nécessaire pour personnaliser les ressources allouées dans chaque composant. Milvus Distributed est le meilleur choix pour les utilisateurs professionnels qui exécutent des systèmes de recherche vectorielle à grande échelle en production.
Choisissez le bon déploiement pour votre cas d'utilisation
Le choix d'un mode de déploiement dépend généralement du stade de développement de votre application :
Pour un prototypage rapide
Si vous souhaitez construire rapidement quelque chose en tant que prototype ou à des fins d'apprentissage, comme des démonstrations de Retrieval Augmented Generation (RAG), des chatbots d'IA, des recherches multimodalités, Milvus Lite lui-même ou une combinaison de Milvus Lite et Milvus Standalone est approprié. Vous pouvez utiliser Milvus Lite dans des carnets de notes pour un prototypage rapide et explorer diverses approches telles que différentes stratégies de regroupement dans RAG. Il se peut que vous souhaitiez déployer l'application construite avec Milvus Lite dans une production à petite échelle pour servir des utilisateurs réels, ou valider l'idée sur des ensembles de données plus importants, par exemple plus de quelques millions de vecteurs. Milvus Standalone est approprié. La logique d'application de Milvus Lite peut toujours être partagée car tous les déploiements de Milvus ont la même API côté client. Les données stockées dans Milvus Lite peuvent également être portées vers Milvus Standalone à l'aide d'un outil de ligne de commande.
Déploiement de la production à petite échelle
Pour une production à un stade précoce, lorsque le projet cherche encore à s'adapter au marché des produits et que l'agilité est plus importante que l'évolutivité, Milvus Standalone est le meilleur choix. Il peut encore évoluer jusqu'à 100 millions de vecteurs s'il dispose de suffisamment de ressources machine, tout en nécessitant beaucoup moins de DevOps que la maintenance d'un cluster K8s.
Déploiement de production à grande échelle
Lorsque votre entreprise se développe rapidement et que l'échelle des données dépasse la capacité d'un seul serveur, il est temps d'envisager Milvus Distributed. Vous pouvez continuer à utiliser Milvus Standalone pour l'environnement de développement ou de mise en scène pour sa commodité, et exploiter le cluster K8s qui exécute Milvus Distributed. Cela peut vous permettre d'atteindre des dizaines de milliards de vecteurs, tout en vous offrant la flexibilité nécessaire pour adapter la taille des nœuds à votre charge de travail particulière, telle que des cas de lecture élevée, d'écriture peu fréquente ou d'écriture élevée, de lecture faible.
Recherche locale sur les périphériques
Pour la recherche dans des dispositifs périphériques privés ou sensibles, vous pouvez déployer Milvus Lite sur le dispositif sans dépendre d'un service basé dans le nuage pour effectuer une recherche de texte ou d'image. Cela convient à des cas tels que la recherche de documents propriétaires ou la détection d'objets sur l'appareil.
Le choix du mode de déploiement de Milvus dépend de l'étape et de l'échelle de votre projet. Milvus fournit une solution flexible et puissante pour divers besoins, du prototypage rapide au déploiement d'entreprise à grande échelle.
- Milvus Lite est recommandé pour les petits ensembles de données, jusqu'à quelques millions de vecteurs.
- Milvus Standalone convient aux ensembles de données de taille moyenne, jusqu'à 100 millions de vecteurs.
- Milvus Distributed est conçu pour les déploiements à grande échelle, capable de traiter des ensembles de données de 100 millions à des dizaines de milliards de vecteurs.
Sélectionnez l'option de déploiement correspondant à votre cas d'utilisation
Comparaison des fonctionnalités
Fonctionnalité | Milvus Lite | Milvus Standalone | Milvus distribué |
---|---|---|---|
SDK / Liraire client | Python gRPC | Python Go Java Node.js C# RESTful | Python Java Go Node.js C# RESTful |
Types de données | Vecteur dense Vecteur espacé Vecteur binaire Booléen Entier Virgule flottante VarChar Tableau JSON | Dense Vector Sparse Vector Binary Vector Boolean Integer Floating Point VarChar Array JSON | Vecteur dense Vecteur espacé Vecteur binaire Booléen Entier Point flottant VarChar Tableau JSON |
Capacités de recherche | Recherche vectorielle (ANN Search) Filtrage des métadonnées Recherche par plage Requête scalaire Obtention d'entités par clé primaire Recherche hybride | Vector Search (ANN Search) Filtrage des métadonnées Range Search Scalar Query Get Entities by Primary Key Hybrid Search | Recherche vectorielle (ANN Search) Filtrage des métadonnées Recherche d'intervalle Requête scalaire Obtention d'entités par clé primaire Recherche hybride |
Opérations CRUD | ✔️ | ✔️ | ✔️ |
Gestion avancée des données | N/A | Contrôle d'accès Partition Clé de partition | Contrôle d'accès Partition Clé de partition Groupement de ressources physiques |
Niveaux de cohérence | Fort | Forte Stabilité limitée Session Éventuelle | Forte Anomalie limitée Session Eventuelle |