FAQ opérationnelle
Que faire si je ne parviens pas à extraire l'image Docker Milvus de Docker Hub ?
Si vous n'avez pas réussi à extraire l'image Docker Milvus de Docker Hub, essayez d'ajouter d'autres miroirs de registre.
Les utilisateurs de Chine continentale peuvent ajouter l'URL "https://registry.docker-cn.com" au tableau registry-mirrors dans /etc.docker/daemon.json.
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
Docker est-il le seul moyen d'installer et d'exécuter Milvus ?
Docker est un moyen efficace de déployer Milvus, mais ce n'est pas le seul. Vous pouvez également déployer Milvus à partir du code source. Cela nécessite Ubuntu (18.04 ou supérieur) ou CentOS (7 ou supérieur). Voir Construire Milvus à partir du code source pour plus d'informations.
Quels sont les principaux facteurs qui affectent le rappel ?
Le rappel est principalement affecté par le type d'index et les paramètres de recherche.
Pour les index FLAT, Milvus effectue un balayage exhaustif dans une collection, avec un retour de 100 %.
Pour les index IVF, le paramètre nprobe détermine l'étendue d'une recherche dans la collection. L'augmentation de nprobe accroît la proportion de vecteurs recherchés et le rappel, mais diminue les performances de la requête.
Pour l'index HNSW, le paramètre ef détermine l'étendue de la recherche dans le graphe. L'augmentation de ef augmente le nombre de points recherchés dans le graphe et le rappel, mais diminue les performances de la requête.
Pour plus d'informations, voir Indexation vectorielle.
Pourquoi les modifications que j'ai apportées aux fichiers de configuration n'ont-elles pas été prises en compte ?
Milvus ne prend pas en charge la modification des fichiers de configuration pendant l'exécution. Vous devez redémarrer Milvus Docker pour que les modifications des fichiers de configuration soient prises en compte.
Comment puis-je savoir si Milvus a démarré avec succès ?
Si Milvus est démarré à l'aide de Docker Compose, exécutez docker ps
pour observer le nombre de conteneurs Docker en cours d'exécution et vérifier si les services Milvus ont démarré correctement.
Pour Milvus standalone, vous devez pouvoir observer au moins trois conteneurs Docker en cours d'exécution, l'un étant le service Milvus et les deux autres étant le service de gestion et de stockage etcd. Pour plus d'informations, voir Installation de Milvus Standalone.
Pourquoi l'heure dans les fichiers journaux est-elle différente de l'heure du système ?
La différence d'heure est généralement due au fait que la machine hôte n'utilise pas le temps universel coordonné (UTC).
Les fichiers journaux contenus dans l'image Docker utilisent l'UTC par défaut. Si votre machine hôte n'utilise pas l'UTC, ce problème peut se produire.
Comment puis-je savoir si mon processeur prend en charge Milvus ?
Les opérations de calcul de Milvus dépendent de la prise en charge par l'unité centrale du jeu d'instructions d'extension SIMD (instruction unique, données multiples). La prise en charge par votre unité centrale du jeu d'instructions d'extension SIMD est cruciale pour la construction d'index et la recherche de similarité vectorielle dans Milvus. Assurez-vous que votre unité centrale prend en charge au moins l'un des jeux d'instructions SIMD suivants :
- SSE4.2
- AVX
- AVX2
- AVX512
Exécutez la commande lscpu pour vérifier si votre processeur prend en charge les jeux d'instructions SIMD mentionnés ci-dessus :
$ lscpu | grep -e sse4_2 -e avx -e avx2 -e avx512
Pourquoi Milvus renvoie-t-il illegal instruction
au démarrage ?
Milvus exige que votre CPU prenne en charge un jeu d'instructions SIMD : SSE4.2, AVX, AVX2 ou AVX512. L'unité centrale doit prendre en charge au moins l'une de ces instructions pour que Milvus fonctionne normalement. Une erreur illegal instruction
renvoyée lors du démarrage suggère que votre CPU ne prend pas en charge l'un des quatre jeux d'instructions ci-dessus.
Voir la prise en charge du jeu d'instructions SIMD par le processeur.
Puis-je installer Milvus sous Windows ?
Oui, vous pouvez installer Milvus sur Windows soit en compilant à partir du code source, soit à partir d'un package binaire.
Voir Exécuter Milvus sous Windows pour savoir comment installer Milvus sous Windows.
J'ai obtenu une erreur lors de l'installation de pymilvus sur Windows. Que dois-je faire ?
Il n'est pas recommandé d'installer PyMilvus sous Windows. Mais si vous devez installer PyMilvus sur Windows mais que vous avez obtenu une erreur, essayez de l'installer dans un environnement Conda. Voir Installer Milvus SDK pour plus d'informations sur l'installation de PyMilvus dans l'environnement Conda.
Puis-je déployer Milvus lorsque je suis déconnecté d'Internet ?
Oui, vous pouvez installer Milvus dans un environnement hors ligne. Voir Installer Milvus hors ligne pour plus d'informations.
Où puis-je trouver les journaux générés par Milvus ?
Le journal Milvus est imprimé sur stout (sortie standard) et stderr (erreur standard) par défaut, mais nous vous recommandons vivement de rediriger votre journal vers un volume persistant en production. Pour ce faire, mettez à jour log.file.rootPath
dans milvus.yaml. Et si vous déployez Milvus avec le diagramme milvus-helm
, vous devez également activer la persistance du journal via --set log.persistence.enabled=true
.
Si vous n'avez pas modifié la configuration, l'utilisation de kubectl logs <pod-name> ou de docker logs CONTAINER peut également vous aider à trouver le journal.
Puis-je créer un index pour un segment avant d'y insérer des données ?
Oui, vous pouvez le faire. Mais nous recommandons d'insérer les données par lots, chacun ne devant pas dépasser 256 Mo, avant d'indexer chaque segment.
Puis-je partager une instance etcd entre plusieurs instances Milvus ?
Oui, vous pouvez partager une instance etcd entre plusieurs instances Milvus. Pour ce faire, vous devez modifier etcd.rootPath
en une valeur distincte pour chaque instance Milvus dans les fichiers de configuration de chacune d'entre elles avant de les démarrer.
Puis-je partager une instance Pulsar entre plusieurs instances Milvus ?
Oui, vous pouvez partager une instance Pulsar entre plusieurs instances Milvus. Pour ce faire, vous pouvez
- Si le multi-tenant est activé sur votre instance Pulsar, envisagez d'allouer un locataire ou un espace de noms distinct pour chaque instance Milvus. Pour ce faire, vous devez modifier
pulsar.tenant
oupulsar.namespace
dans les fichiers de configuration de vos instances Milvus en une valeur unique pour chacune d'entre elles avant de les démarrer. - Si vous ne prévoyez pas d'activer le multi-tenant sur votre instance Pulsar, envisagez de modifier
msgChannel.chanNamePrefix.cluster
dans les fichiers de configuration de vos instances Milvus en une valeur unique pour chacune d'entre elles avant de les démarrer.
Puis-je partager une instance MinIO entre plusieurs instances Milvus ?
Oui, vous pouvez partager une instance MinIO entre plusieurs instances Milvus. Pour ce faire, vous devez changer minio.rootPath
en une valeur unique pour chaque instance Milvus dans les fichiers de configuration de chacune d'entre elles avant de les démarrer.
Comment traiter le message d'erreur pymilvus.exceptions.ConnectionConfigException: <ConnectionConfigException: (code=1, message=Illegal uri: [example.db], expected form 'https://user:pwd@example.com:12345')>
?
Le message d'erreur Illegal uri [example.db]
indique que vous essayez de vous connecter à Milvus Lite à l'aide d'une version antérieure de PyMilvus qui ne prend pas en charge ce type de connexion. Pour résoudre ce problème, mettez à niveau votre installation PyMilvus vers au moins la version 2.4.2, qui inclut la prise en charge de la connexion à Milvus Lite.
Vous pouvez mettre à jour PyMilvus à l'aide de la commande suivante :
pip install pymilvus>=2.4.2
Pourquoi est-ce que j'obtiens moins de résultats que les limit
que j'ai définis dans ma recherche/requête ?
Plusieurs raisons peuvent expliquer pourquoi vous obtenez moins de résultats que le site limit
que vous avez spécifié :
Données limitées: Il se peut que la collection ne contienne pas suffisamment d'entités pour respecter la limite que vous avez demandée. Si le nombre total d'entités dans la collection est inférieur à la limite, vous obtiendrez naturellement moins de résultats.
Doubles clés primaires: Milvus donne la priorité à des entités spécifiques lorsqu'il rencontre des clés primaires en double au cours d'une recherche. Ce comportement varie en fonction du type de recherche :
Requête (correspondance exacte): Milvus sélectionne l'entité la plus récente avec la clé primaire correspondante. Recherche ANN : Milvus sélectionne l'entité ayant le score de similarité le plus élevé, même si les entités partagent le même PK. Cette priorisation peut entraîner moins de résultats uniques que la limite si votre collection comporte de nombreuses clés primaires en double.
Correspondances insuffisantes: Les expressions de filtrage de votre recherche peuvent être trop strictes, ce qui réduit le nombre d'entités répondant au seuil de similarité. Si les conditions définies pour la recherche sont trop restrictives, il n'y aura pas assez d'entités correspondantes, ce qui entraînera moins de résultats que prévu.
MilvusClient("milvus_demo.db") gives an error: ModuleNotFoundError: No module named 'milvus_lite'
. Quelle est la cause de cette erreur et comment la résoudre ?
Cette erreur se produit lorsque vous essayez d'utiliser Milvus Lite sur une plate-forme Windows. Milvus Lite est principalement conçu pour les environnements Linux et peut ne pas avoir de support natif pour Windows.
La solution consiste à utiliser un environnement Linux :
- Utilisez un système d'exploitation basé sur Linux ou une machine virtuelle pour exécuter Milvus Lite.
- Cette approche garantira la compatibilité avec les dépendances et les fonctionnalités de la bibliothèque.
Quelles sont les erreurs "length exceeds max length" dans Milvus, et comment les comprendre et les traiter ?
Les erreurs "Length exceeds max length" dans Milvus se produisent lorsque la taille d'un élément de données dépasse la taille maximale autorisée pour une collection ou un champ. Voici quelques exemples et explications :
Erreur de champ JSON :
<MilvusException: (code=1100, message=the length (398324) of json field (metadata) exceeds max length (65536): expected=valid length json string, actual=length exceeds max length: invalid parameter)>
Erreur de longueur de chaîne :
<ParamError: (code=1, message=invalid input, length of string exceeds max length. length: 74238, max length: 60535)>
Erreur de champ VarChar :
<MilvusException: (code=1100, message=the length (60540) of 0th VarChar paragraph exceeds max length (0)%!(EXTRA int64=60535): invalid parameter)>
Pour comprendre et traiter ces erreurs :
- Comprenez que
len(str)
en Python représente le nombre de caractères, et non la taille en octets. - Pour les types de données basés sur des chaînes comme VARCHAR et JSON, utilisez
len(bytes(str, encoding='utf-8'))
pour déterminer la taille réelle en octets, ce que Milvus utilise pour "max-length".
Exemple en Python :
# Python Example: result of len() str cannot be used as "max-length" in Milvus
>>> s = "你好,世界!"
>>> len(s) # Number of characters of s.
6
>>> len(bytes(s, "utf-8")) # Size in bytes of s, max-length in Milvus.
18
Vous avez encore des questions ?
Vous pouvez le faire :
- Consulter Milvus sur GitHub. N'hésitez pas à poser des questions, à partager des idées et à aider les autres.
- Rejoignez notre forum Milvus ou notre canal Slack pour trouver de l'aide et vous engager avec notre communauté open-source.