🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI

HomeBlogsComment contribuer à Milvus : une introduction rapide pour les développeurs

Comment contribuer à Milvus : une introduction rapide pour les développeurs

  • Engineering
December 01, 2024
Shaoting Huang

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, et RPATH, 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 que gofumpt pour le formatage et golangci-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 !

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

  1. Forger le référentiel : Commencez par forker le repo Milvus sur votre compte GitHub.

  2. Créez une branche : Clonez votre fork localement et créez une nouvelle branche pour vos modifications.

  3. 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 ! 🚀

ProjetsAdapté àLignes directrices
milvus, milvus-sdk-goDéveloppeurs Go/
milvus, knowhereDéveloppeurs CPP/
pymilvus, milvus-sdk-node, milvus-sdk-javaDéveloppeurs intéressés par d'autres langagesContribuer à PyMilvus
milvus-helmPassionnés de Kubernetes/
Milvus-docs, milvus-io/community/blogRédacteurs techniquesContribuer à la documentation de milvus
milvus-insightDé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

Like the article? Spread the word

Continuer à Lire