Avant d'utiliser Vector Retrieval Service for Milvus (Milvus), estimez vos besoins en ressources de calcul pour garantir la stabilité du système et maîtriser les coûts. Milvus fournit un calculateur de ressources qui évalue les ressources nécessaires à partir de données expérimentales (nombre de vecteurs, dimension des vecteurs et type d'index). Ajustez toutefois la configuration de votre déploiement réel en fonction des résultats de vos tests.
Calculateur de ressources
Milvus maintient un ratio CPU/mémoire de 1:4. Pour assurer la stabilité de l'instance, le service alloue plus de mémoire que nécessaire.
Utilisez le calculateur de ressources pour estimer les ressources d'instance requises. Saisissez le nombre et la dimension des vecteurs, puis sélectionnez un type d'index ; le système recommande alors une configuration d'instance adaptée. Par exemple, pour un jeu de données de 8 millions de vecteurs de 768 dimensions utilisant l'index HNSW avec le paramètre M défini à 4, le calculateur affiche une configuration recommandée en temps réel. Ces recommandations constituent un point de départ pour la sélection des instances et les tests de performance. Le calculateur prend en charge les paramètres suivants : le bouton High Availability, Vector Count (Millions), Vector Dimension, Index Type (comme HNSW), Index Parameter M (nombre de voisins par nœud, plage de 4 à 64) et le bouton Scalar Field. À titre d'illustration, pour 8 millions de vecteurs de 768 dimensions avec un index HNSW (M=4), le calculateur estime un besoin de 31,2 Go de mémoire et de 22,9 Go pour les données brutes. Il recommande ainsi une configuration de cluster de 40 cœurs CPU et 160 Go de mémoire. La configuration préconisée pour chaque composant Milvus est la suivante : service de métadonnées (1 instance de 4 cœurs, 16 Go), Proxy (1 instance de 2 cœurs, 8 Go), Query Node (2 instances de 4 cœurs, 16 Go), Index Node (1 instance de 4 cœurs, 16 Go) et Data Node (1 instance de 2 cœurs, 8 Go). Ces estimations reposent sur des données expérimentales. Nous vous conseillons d'ajuster la configuration selon les résultats de vos tests avant tout déploiement en production.
Paramètres des ressources
Configuration haute disponibilité
La configuration haute disponibilité stabilise votre cluster en ligne grâce à un mécanisme de réplica à double nœud. Elle charge également deux réplicas de vos données par défaut, ce qui améliore considérablement la tolérance aux pannes et la fiabilité du système. Notez que l'activation de la haute disponibilité double les besoins en ressources par rapport à une configuration standard. Avant d'activer cette fonctionnalité, évaluez et planifiez soigneusement les ressources de votre cluster de production.
Échelle des ressources d'entrée
|
Paramètre |
Description |
|
Vector Count (Millions) |
Le nombre de vecteurs détermine directement la taille de l'index et le volume de données à analyser lors des requêtes. Un nombre élevé de vecteurs nécessite davantage de stockage, accroît la complexité de calcul pour la construction d'index et les requêtes, et entraîne des temps de traitement plus longs ainsi que des exigences matérielles supérieures. |
|
Vector Dimension |
La dimension des vecteurs influence la complexité de l'index et la précision. Des vecteurs de dimension supérieure augmentent la complexité de l'index et le coût de calcul des recherches de similarité. Cela affecte à la fois les coûts de stockage et la vitesse des requêtes, particulièrement en l'absence de stratégies efficaces de réduction de dimensionnalité ou de quantification. |
Type d'index
Le type d'index constitue un facteur clé déterminant les besoins en ressources et les performances des requêtes. Les différents algorithmes d'indexation présentent des exigences distinctes en matière de mémoire, de CPU et de temps de requête. Les types d'index pris en charge sont décrits ci-dessous.
|
Paramètre |
Description |
|
HNSW |
HNSW (Hierarchical Navigable Small World) est un index basé sur un graphe offrant une grande efficacité de requête, notamment dans les espaces de données de haute dimension. Il exige cependant davantage de ressources de calcul et de mémoire. Ce type convient aux scénarios nécessitant la vitesse de requête la plus rapide, disposant de ressources suffisantes et traitant des données de haute dimension. |
|
IVF_FLAT |
Cet index offre un équilibre entre précision et vitesse de requête, ce qui le rend adapté à la plupart des scénarios. Il réduit la complexité de calcul grâce au clustering, offrant une amélioration significative des performances par rapport à l'index FLAT avec une consommation de ressources relativement faible. Il est idéal pour les scénarios comportant de grands jeux de données nécessitant un compromis entre performances de requête et coûts des ressources. |
|
DISKANN |
DISKANN est une technique de recherche de voisins approximatifs (ANN) basée sur le disque, conçue pour une récupération rapide et efficace sur des jeux de données à grande échelle. Elle utilise l'algorithme de graphe Vamana pour indexer et récupérer efficacement les vecteurs même avec une mémoire limitée, ce qui la rend adaptée au traitement de données de haute dimension à très grande échelle. |
|
SCANN |
SCANN est une structure d'index de recherche de voisins approximatifs (ANN) efficace, adaptée aux jeux de données à grande échelle nécessitant une récupération rapide sans exigence de haute précision. Il équilibre vitesse et consommation de ressources en utilisant l'élagage de l'espace de recherche et la quantification, en mettant l'accent sur la recherche de produit intérieur maximal (MIPS). |
|
FLAT |
Ce type offre la précision de requête la plus élevée en effectuant une correspondance exacte, mais au détriment de la vitesse. Les performances peuvent s'avérer insuffisantes sur des jeux de données à grande échelle. Il convient aux scénarios avec des volumes de données relativement faibles (par exemple, quelques dizaines de millions) ayant des exigences strictes de précision et pouvant tolérer des requêtes plus lentes. |
|
IVF_SQ8 |
Conçu pour accélérer la récupération via la quantification, cet index est adapté aux scénarios à ressources limitées nécessitant un rappel élevé. Sa précision de requête peut toutefois être inférieure à celle de HNSW. Il est idéal pour les applications sur des jeux de données à grande échelle où les ressources sont restreintes et un taux de rappel élevé requis. |
Paramètres d'index
HNSW : Définissez la valeur M, qui détermine le nombre de voisins pour chaque nœud. Une valeur M plus élevée augmente le rappel et la précision de l'index, mais accroît également le temps de construction et l'utilisation de la mémoire. Une valeur M plus petite permet de construire l'index plus rapidement avec moins de mémoire, mais peut réduire la précision. Une valeur initiale recommandée pour M est
lg(N), où N représente le nombre total de vecteurs. Affinez ensuite cette valeur en fonction des performances réelles des requêtes. Essayez par exemple de définir M à 16, 32 ou 64 et ajustez selon les résultats obtenus.IVF_FLAT et IVF_SQ8 : Configurez le nombre de clusters (listes inversées) pour partitionner l'espace vectoriel. Un nombre élevé de clusters augmente la précision et le rappel de l'index, mais allonge le temps de construction et le coût de calcul des requêtes. Un nombre réduit de clusters diminue la complexité de l'index, mais risque d'entraîner une baisse de précision.
SCANN : Utilisez le paramètre
with_raw_datapour contrôler le stockage des données brutes dans l'index. Si votre système sert principalement à des recherches approximatives rapides et ne nécessite pas d'accès fréquent aux données brutes, définissez ce paramètre àFalse. Dans le cas contraire, réglez-le surTrue.
Champs scalaires
Lorsque vous activez l'option Scalar Fields, définissez le paramètre Average Size of Data per Row. Cela permet au système d'indexation d'allouer efficacement les ressources de mémoire, de stockage et de sharding afin d'optimiser les performances des requêtes.