Comment contribuer à Milvus : une introduction rapide pour les développeurs
Milvus est une base de données vectorielles open-source conçue pour gérer des données vectorielles de haute dimension. Que vous construisiez des moteurs de recherche intelligents, des systèmes de recommandation ou des solutions d'IA de nouvelle génération telles que la génération augmentée de recherche(RAG), Milvus est un outil puissant à portée de main.
Mais ce qui fait vraiment avancer Milvus, ce n'est pas seulement sa technologie avancée, c'est la communauté de développeurs dynamique et passionnée qui la soutient. En tant que projet open-source, Milvus prospère et évolue grâce aux contributions de développeurs tels que vous. Chaque correction de bogue, ajout de fonctionnalité et amélioration des performances provenant de la communauté rend Milvus plus rapide, plus évolutif et plus fiable.
Que vous soyez passionné par les logiciels libres, désireux d'apprendre ou que vous souhaitiez avoir un impact durable sur l'IA, Milvus est l'endroit idéal pour apporter votre contribution. Ce guide vous guidera tout au long du processus, de la configuration de votre environnement de développement à la soumission de votre première demande d'extraction. Nous mettrons également l'accent sur les défis courants auxquels vous pourriez être confronté et fournirons des solutions pour les surmonter.
Prêt à vous lancer ? Ensemble, améliorons Milvus !
Configuration de votre environnement de développement Milvus
La première chose à faire est de configurer votre environnement de développement. Vous pouvez installer Milvus sur votre machine locale ou utiliser Docker. Les deux méthodes sont simples, mais vous devrez également installer quelques dépendances tierces pour que tout fonctionne.
Construire Milvus localement
Si vous aimez construire des choses à partir de zéro, construire Milvus sur votre machine locale est un jeu d'enfant. Milvus facilite les choses en regroupant toutes les dépendances dans le script install_deps.sh
. Voici l'installation rapide :
# Install third-party dependencies.
$ cd milvus/
$ ./scripts/install_deps.sh
# Compile Milvus.
$ make
Construire Milvus avec Docker
Si vous préférez Docker, il y a deux façons de procéder : vous pouvez soit exécuter des commandes dans un conteneur préconstruit, soit créer un conteneur de développement pour une approche plus pratique.
# Option 1: Run commands in a pre-built Docker container
build/builder.sh make
# Option 2: Spin up a dev container
./scripts/devcontainer.sh up
docker-compose -f docker-compose-devcontainer.yml ps
docker exec -ti milvus-builder-1 bash
make milvus
Notes sur la plateforme : Si vous êtes sous Linux, vous pouvez y aller - les problèmes de compilation sont plutôt rares. Cependant, les utilisateurs de Mac, en particulier avec les puces M1, peuvent rencontrer quelques problèmes en cours de route. Nous avons un guide pour vous aider à résoudre les problèmes les plus courants.
Figure : Configuration du système d'exploitation
Pour obtenir le guide d'installation complet, consultez le Guide de développement Milvus officiel.
Problèmes courants et comment les résoudre
Parfois, la configuration de votre environnement de développement Milvus ne se déroule pas aussi bien que prévu. Ne vous inquiétez pas, voici un aperçu des problèmes courants que vous pouvez rencontrer et comment les résoudre rapidement.
Homebrew : Déconnexion inattendue lors de la lecture d'un paquet Sideband
Si vous utilisez Homebrew et que vous voyez une erreur comme celle-ci :
==> Tapping homebrew/core
remote: Enumerating objects: 1107077, done.
remote: Counting objects: 100% (228/228), done.
remote: Compressing objects: 100% (157/157), done.
error: 545 bytes of body are still expected.44 MiB | 341.00 KiB/s
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: index-pack failed
Failed during: git fetch --force origin refs/heads/master:refs/remotes/origin/master
myuser~ %
Correction : Augmentez la taille de http.postBuffer
:
git config --global http.postBuffer 1M
Si vous rencontrez également Brew: command not found
après avoir installé Homebrew, il se peut que vous deviez configurer votre utilisateur Git :
git config --global user.email xxxgit config --global user.name xxx
Docker : Erreur lors de l'obtention des informations d'identification
Lorsque vous travaillez avec Docker, vous pouvez voir ceci :
error getting credentials - err: exit status 1, out: ``
Correction : Ouvrez~/.docker/config.json
et supprimez le champ credsStore
.
Python : No Module Named 'imp'
Si Python envoie cette erreur, c'est parce que Python 3.12 a supprimé le module imp
, que certaines anciennes dépendances utilisent encore.
Corrigez cette erreur : Rétrogradez vers Python 3.11 :
brew install python@3.11
Conan : Arguments non reconnus ou commande introuvable
Problème : Si vous voyez Unrecognized arguments: --install-folder conan
, vous utilisez probablement une version incompatible de Conan.
Corrigez le problème : Passez à Conan 1.61 :
pip install conan==1.61
Problème : Si vous voyez Conan command not found
, cela signifie que votre environnement Python n'est pas correctement configuré.
Correction : Ajoutez le répertoire bin de Python à votre PATH
:
export PATH="/path/to/python/bin:$PATH"
LLVM : Utilisation d'un identifiant non déclaré 'kSecFormatOpenSSL'
Cette erreur signifie généralement que vos dépendances LLVM sont obsolètes.
Corrigez l'erreur : Réinstallez LLVM 15 et mettez à jour vos variables d'environnement :
brew reinstall llvm@15
export LDFLAGS="-L/opt/homebrew/opt/llvm@15/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm@15/include"
Conseils de pro
Vérifiez toujours les versions et les dépendances de vos outils.
Si quelque chose ne fonctionne toujours pas, la page Milvus GitHub Issues est un endroit idéal pour trouver des réponses ou demander de l'aide.
Configuration de VS Code pour l'intégration de C++ et Go
Faire fonctionner ensemble C++ et Go dans VS Code est plus facile qu'il n'y paraît. Avec la bonne configuration, vous pouvez rationaliser votre processus de développement pour Milvus. Il suffit de modifier votre fichier user.settings
avec la configuration ci-dessous :
{
"go.toolsEnvVars": {
"PKG_CONFIG_PATH": "/Users/zilliz/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
"LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
"RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
},
"go.testEnvVars": {
"PKG_CONFIG_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
"LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
"RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
},
"go.buildFlags": [
"-ldflags=-r /Users/zilliz/workspace/milvus/internal/core/output/lib"
],
"terminal.integrated.env.linux": {
"PKG_CONFIG_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib/pkgconfig:/Users/zilliz/workspace/milvus/internal/core/output/lib64/pkgconfig",
"LD_LIBRARY_PATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64",
"RPATH": "/Users/zilliz/workspace/milvus/internal/core/output/lib:/Users/zilliz/workspace/milvus/internal/core/output/lib64"
},
"go.useLanguageServer": true,
"gopls": {
"formatting.gofumpt": true
},
"go.formatTool": "gofumpt",
"go.lintTool": "golangci-lint",
"go.testTags": "dynamic",
"go.testTimeout": "10m"
}
Voici ce que fait cette configuration :
Variables d'environnement : Définit les chemins d'accès pour
PKG_CONFIG_PATH
,LD_LIBRARY_PATH
, etRPATH
, qui sont essentiels pour localiser les bibliothèques pendant les constructions et les tests.Intégration des outils Go : Active le serveur de langue de Go (
gopls
) et configure des outils tels quegofumpt
pour le formatage etgolangci-lint
pour le linting.Configuration des tests : Ajoute
testTags
et augmente le délai d'exécution des tests à 10 minutes.
Une fois ajoutée, cette configuration assure une intégration transparente entre les flux de travail C++ et Go. Elle est parfaite pour construire et tester Milvus sans avoir à modifier constamment l'environnement.
Conseil de pro
Après avoir mis en place cette configuration, exécutez un test de construction rapide pour confirmer que tout fonctionne. Si quelque chose ne semble pas fonctionner, vérifiez les chemins et la version de l'extension Go de VS Code.
Déploiement de Milvus
Milvus prend en charge trois modes de déploiement : Lite, Standalone et Distributed.
Milvus Lite est une bibliothèque Python et une version ultra-légère de Milvus. Il est parfait pour le prototypage rapide dans des environnements Python ou des ordinateurs portables et pour des expériences locales à petite échelle.
Milvus Standalone est l'option de déploiement à nœud unique de Milvus, qui utilise un modèle client-serveur. C'est l'équivalent de MySQL pour Milvus, tandis que Milvus Lite ressemble à SQLite.
Milvus Distributed est le mode distribué de Milvus, idéal pour les entreprises qui construisent des systèmes de bases de données vectorielles à grande échelle ou des plates-formes de données vectorielles.
Tous ces déploiements reposent sur trois composants de base :
Milvus : le moteur de base de données vectorielles qui pilote toutes les opérations.
Etcd : Le moteur de métadonnées qui gère les métadonnées internes de Milvus.
MinIO : le moteur de stockage qui assure la persistance des données.
Lorsqu'il est exécuté en mode distribué, Milvus intègre également Pulsar pour le traitement des messages distribués à l'aide d'un mécanisme Pub/Sub, ce qui le rend évolutif pour les environnements à haut débit.
Milvus autonome
Le mode autonome est conçu pour les configurations à instance unique, ce qui le rend parfait pour les tests et les applications à petite échelle. Voici comment commencer :
# Deploy Milvus Standalone
sudo docker-compose -f deployments/docker/dev/docker-compose.yml up -d
# Start the standalone service
bash ./scripts/start_standalone.sh
Milvus Distribué (précédemment connu sous le nom de Milvus Cluster)
Pour les ensembles de données plus importants et un trafic plus élevé, le mode Distribué offre une évolutivité horizontale. Il combine plusieurs instances Milvus en un seul système cohésif. Le déploiement est facilité par l'opérateur Milvus, qui s'exécute sur Kubernetes et gère l'ensemble de la pile Milvus pour vous.
Vous souhaitez obtenir des conseils étape par étape ? Consultez le Guide d'installation de Milvus.
Exécution de tests de bout en bout (E2E)
Une fois que votre déploiement Milvus est opérationnel, tester sa fonctionnalité est un jeu d'enfant grâce aux tests E2E. Ces tests couvrent chaque partie de votre installation pour s'assurer que tout fonctionne comme prévu. Voici comment les exécuter :
# Navigate to the test directory
cd tests/python_client
# Install dependencies
pip install -r requirements.txt
# Run E2E tests
pytest --tags=L0 -n auto
Pour des instructions détaillées et des conseils de dépannage, reportez-vous au Guide de développement Milvus.
Conseil de pro
Si vous ne connaissez pas Milvus, commencez par Milvus Lite ou le mode autonome pour vous familiariser avec ses capacités avant de passer au mode distribué pour les charges de travail de niveau production.
Soumettre votre code
Félicitations ! Vous avez passé tous les tests unitaires et E2E (ou débogué et recompilé si nécessaire). Si la première compilation peut prendre un certain temps, les suivantes seront beaucoup plus rapides, il n'y a donc pas lieu de s'inquiéter. Une fois que tout a été validé, vous êtes prêt à soumettre vos modifications et à contribuer à Milvus !
Lier votre demande de retrait (PR) à un problème
Chaque PR pour Milvus doit être lié à un problème pertinent. Voici comment procéder :
Vérifier les problèmes existants : Consultez l' issue tracker de Milvus pour voir s'il existe déjà un problème lié à vos modifications.
Créer un nouveau problème : S'il n'existe pas de problème pertinent, ouvrez-en un nouveau et expliquez le problème que vous résolvez ou la fonctionnalité que vous ajoutez.
Soumettre votre code
Forger le référentiel : Commencez par forker le repo Milvus sur votre compte GitHub.
Créez une branche : Clonez votre fork localement et créez une nouvelle branche pour vos modifications.
Commiter avec la signature Signed-off-by : Veillez à ce que vos modifications comprennent une signature
Signed-off-by
afin de respecter la licence open-source :
git commit -m "Commit of your change" -s
Cette étape certifie que votre contribution est conforme au certificat d'origine du développeur (DCO).
Ressources utiles
Pour connaître les étapes détaillées et les meilleures pratiques, consultez le Guide de contribution Milvus.
Possibilités de contribution
Félicitations : Milvus est désormais opérationnel ! Vous avez exploré ses modes de déploiement, exécuté vos tests et peut-être même creusé dans le code. Il est maintenant temps de passer à la vitesse supérieure : contribuez à Milvus et aidez à façonner l'avenir de l'IA et des données non structurées.
Quelles que soient vos compétences, il y a une place pour vous dans la communauté Milvus ! Que vous soyez un développeur qui aime résoudre des défis complexes, un rédacteur technique qui aime écrire une documentation propre ou des blogs d'ingénierie, ou un passionné de Kubernetes qui cherche à améliorer les déploiements, il y a un moyen pour vous d'avoir un impact.
Jetez un coup d'œil aux opportunités ci-dessous et trouvez votre bonheur. Chaque contribution permet à Milvus d'aller de l'avant, et qui sait ? Votre prochaine demande d'extraction pourrait bien être à l'origine de la prochaine vague d'innovation. Alors, qu'attendez-vous ? Commençons ! 🚀
Projets | Adapté à | Lignes directrices |
---|---|---|
milvus, milvus-sdk-go | Développeurs Go | / |
milvus, knowhere | Développeurs CPP | / |
pymilvus, milvus-sdk-node, milvus-sdk-java | Développeurs intéressés par d'autres langages | Contribuer à PyMilvus |
milvus-helm | Passionnés de Kubernetes | / |
Milvus-docs, milvus-io/community/blog | Rédacteurs techniques | Contribuer à la documentation de milvus |
milvus-insight | Développeurs web | / |
Un dernier mot
Milvus propose différents SDK - Python (PyMilvus), Java, Go et Node.js - quipermettent de commencer à construire en toute simplicité. Contribuer à Milvus n'est pas seulement une question de code, c'est aussi rejoindre une communauté dynamique et innovante.
Bienvenue dans la communauté des développeurs Milvus et bon codage ! Nous sommes impatients de voir ce que vous allez créer.
Pour en savoir plus
- Configuration de votre environnement de développement Milvus
- Déploiement de Milvus
- Exécution de tests de bout en bout (E2E)
- Soumettre votre code
- Possibilités de contribution
- Un dernier mot
- Pour en savoir plus
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word