🚀 Testen Sie Zilliz Cloud, die vollständig verwaltete Milvus, kostenlos – erleben Sie 10x schnellere Leistung! Jetzt testen>>

milvus-logo
LFAI

HomeBlogsWie man zu Milvus beiträgt: Ein Schnellstart für Entwickler

Wie man zu Milvus beiträgt: Ein Schnellstart für Entwickler

  • Engineering
December 01, 2024
Shaoting Huang

Milvus ist eine Open-Source-Vektordatenbank für die Verwaltung hochdimensionaler Vektordaten. Ganz gleich, ob Sie intelligente Suchmaschinen, Empfehlungssysteme oder KI-Lösungen der nächsten Generation wie Retrieval Augmented Generation(RAG) entwickeln, Milvus ist ein leistungsstarkes Tool, das Ihnen zur Verfügung steht.

Aber was Milvus wirklich vorantreibt, ist nicht nur seine fortschrittliche Technologie, sondern auch die lebendige, leidenschaftliche Entwicklergemeinschaft, die dahinter steht. Als Open-Source-Projekt gedeiht und entwickelt sich Milvus dank der Beiträge von Entwicklern wie Ihnen weiter. Jede Fehlerbehebung, Funktionserweiterung und Leistungsverbesserung durch die Community macht Milvus schneller, skalierbarer und zuverlässiger.

Egal, ob Sie sich für Open-Source begeistern, lernen wollen oder einen bleibenden Einfluss auf die KI haben möchten, Milvus ist der perfekte Ort, um einen Beitrag zu leisten. Dieser Leitfaden führt Sie durch den Prozess - von der Einrichtung Ihrer Entwicklungsumgebung bis zum Einreichen Ihres ersten Pull Requests. Wir zeigen Ihnen auch die häufigsten Herausforderungen auf, mit denen Sie konfrontiert werden könnten, und bieten Lösungen an, um diese zu überwinden.

Bereit zum Einsteigen? Lassen Sie uns gemeinsam Milvus noch besser machen!

Einrichten Ihrer Milvus-Entwicklungsumgebung

Das Wichtigste zuerst: die Einrichtung Ihrer Entwicklungsumgebung. Sie können Milvus entweder auf Ihrem lokalen Rechner installieren oder Docker verwenden - beide Methoden sind unkompliziert, aber Sie müssen auch ein paar Abhängigkeiten von Drittanbietern installieren, damit alles läuft.

Milvus lokal erstellen

Wenn Sie gerne Dinge von Grund auf neu erstellen, ist die Erstellung von Milvus auf Ihrem lokalen Rechner ein Kinderspiel. Milvus macht es einfach, indem es alle Abhängigkeiten im install_deps.sh Skript bündelt. Hier ist die schnelle Einrichtung:

# Install third-party dependencies.
$ cd milvus/
$ ./scripts/install_deps.sh

# Compile Milvus.
$ make

Milvus mit Docker bauen

Wenn Sie Docker bevorzugen, gibt es zwei Möglichkeiten: Sie können entweder Befehle in einem vorgefertigten Container ausführen oder einen Entwicklungscontainer erstellen, um einen praktischen Ansatz zu verfolgen.

# 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  

Hinweise zur Plattform: Wenn Sie mit Linux arbeiten, können Sie loslegen - Kompilierungsprobleme sind ziemlich selten. Mac-Benutzer, insbesondere mit M1-Chips, könnten jedoch auf dem Weg dorthin auf einige Probleme stoßen. Aber keine Sorge, wir haben einen Leitfaden, der Ihnen hilft, die häufigsten Probleme zu lösen.

Abbildung: OS-Konfiguration

Die vollständige Anleitung zur Einrichtung finden Sie im offiziellen Milvus-Entwicklungshandbuch.

Häufige Probleme und deren Behebung

Manchmal verläuft die Einrichtung Ihrer Milvus-Entwicklungsumgebung nicht so reibungslos wie geplant. Machen Sie sich keine Sorgen - hier finden Sie eine kurze Übersicht über häufige Probleme, die auftreten können, und wie Sie diese schnell beheben können.

Homebrew: Unerwartete Verbindungsunterbrechung beim Lesen von Seitenbandpaketen

Wenn Sie Homebrew verwenden und eine Fehlermeldung wie diese sehen:

==> 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~ %

Fix: Erhöhen Sie die http.postBuffer Größe:

git config --global http.postBuffer 1M

Wenn Sie nach der Installation von Homebrew auch auf Brew: command not found stoßen, müssen Sie möglicherweise Ihre Git-Benutzerkonfiguration anpassen:

git config --global user.email xxxgit config --global user.name xxx

Docker: Fehler beim Abrufen der Anmeldeinformationen

Wenn Sie mit Docker arbeiten, sehen Sie möglicherweise diesen Fehler:

error getting credentials - err: exit status 1, out: ``  

Abhilfe: Öffnen Sie~/.docker/config.json und entfernen Sie das Feld credsStore.

Python: Kein Modul mit dem Namen 'imp'

Wenn Python diesen Fehler auslöst, liegt das daran, dass Python 3.12 das Modul imp entfernt hat, das einige ältere Abhängigkeiten noch verwenden.

Beheben: Downgrade auf Python 3.11:

brew install python@3.11  

Conan: Nicht erkannte Argumente oder Befehl nicht gefunden

Problem: Wenn Sie Unrecognized arguments: --install-folder conan sehen, verwenden Sie wahrscheinlich eine inkompatible Conan-Version.

Behebung: Downgrade auf Conan 1.61:

pip install conan==1.61  

Problem: Wenn Sie Conan command not found sehen, bedeutet das, dass Ihre Python-Umgebung nicht richtig eingerichtet ist.

Fix: Fügen Sie das bin-Verzeichnis von Python zu Ihrem PATH hinzu:

export PATH="/path/to/python/bin:$PATH"

LLVM: Verwendung eines nicht deklarierten Bezeichners 'kSecFormatOpenSSL'

Dieser Fehler bedeutet normalerweise, dass Ihre LLVM-Abhängigkeiten veraltet sind.

Behebung: Installieren Sie LLVM 15 neu und aktualisieren Sie Ihre Umgebungsvariablen:

brew reinstall llvm@15
export LDFLAGS="-L/opt/homebrew/opt/llvm@15/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm@15/include"

Profi-Tipps

  • Überprüfen Sie Ihre Tool-Versionen und Abhängigkeiten immer doppelt.

  • Wenn etwas immer noch nicht funktioniert, ist die Milvus GitHub Issues-Seite ein guter Ort, um Antworten zu finden oder um Hilfe zu bitten.

VS Code für die Integration von C++ und Go konfigurieren

Die Zusammenarbeit von C++ und Go in VS Code ist einfacher, als es klingt. Mit dem richtigen Setup können Sie Ihren Entwicklungsprozess für Milvus rationalisieren. Ändern Sie einfach Ihre user.settings Datei mit der untenstehenden Konfiguration:

{
   "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"
}

Das bewirkt diese Konfiguration:

  • Umgebungsvariablen: Richtet Pfade für PKG_CONFIG_PATH, LD_LIBRARY_PATH und RPATH ein, die für das Auffinden von Bibliotheken während der Builds und Tests entscheidend sind.

  • Go-Tools-Integration: Aktiviert Go's Sprachserver (gopls) und konfiguriert Werkzeuge wie gofumpt für die Formatierung und golangci-lint für das Linting.

  • Test-Einrichtung: Fügt testTags hinzu und erhöht den Timeout für laufende Tests auf 10 Minuten.

Einmal hinzugefügt, gewährleistet dieses Setup eine nahtlose Integration zwischen C++- und Go-Workflows. Es ist perfekt für die Erstellung und das Testen von Milvus ohne ständige Anpassung der Umgebung.

Profi-Tipp

Führen Sie nach der Einrichtung einen kurzen Test-Build durch, um sicherzustellen, dass alles funktioniert. Wenn etwas nicht stimmt, überprüfen Sie die Pfade und die Version der Go-Erweiterung von VS Code.

Bereitstellen von Milvus

Milvus unterstützt drei Bereitstellungsmodi: Lite, Standalone und Distributed.

  • Milvus Lite ist eine Python-Bibliothek und eine ultraleichte Version von Milvus. Sie eignet sich perfekt für das schnelle Prototyping in Python- oder Notebook-Umgebungen und für kleine lokale Experimente.

  • Milvus Standalone ist die Single-Node Deployment-Option für Milvus, die ein Client-Server-Modell verwendet. Es ist das Milvus-Äquivalent zu MySQL, während Milvus Lite mit SQLite vergleichbar ist.

  • Milvus Distributed ist der verteilte Modus von Milvus, der sich ideal für Unternehmensanwender eignet, die groß angelegte Vektordatenbank-Systeme oder Vektordaten-Plattformen aufbauen.

Alle diese Implementierungen basieren auf drei Kernkomponenten:

  • Milvus: Die Vektordatenbank-Engine, die alle Operationen steuert.

  • Etcd: Die Metadaten-Engine, die die internen Metadaten von Milvus verwaltet.

  • MinIO: Die Speicher-Engine, die die Persistenz der Daten gewährleistet.

Im verteilten Modus enthält Milvus auch Pulsar für die verteilte Nachrichtenverarbeitung über einen Pub/Sub-Mechanismus, wodurch es für Umgebungen mit hohem Durchsatz skalierbar ist.

Milvus Standalone

Der Standalone-Modus ist auf Einzelinstanz-Setups zugeschnitten und eignet sich daher perfekt für Tests und kleinere Anwendungen. Hier erfahren Sie, wie Sie loslegen können:

# 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 Distributed (früher bekannt als Milvus Cluster)

Für größere Datensätze und ein höheres Datenaufkommen bietet der verteilte Modus horizontale Skalierbarkeit. Er kombiniert mehrere Milvus-Instanzen zu einem einzigen, zusammenhängenden System. Das Deployment wird durch den Milvus Operator vereinfacht, der auf Kubernetes läuft und den gesamten Milvus-Stack für Sie verwaltet.

Möchten Sie eine schrittweise Anleitung? Sehen Sie sich die Milvus-Installationsanleitung an.

Ausführen von End-to-End-Tests (E2E)

Sobald Ihre Milvus-Installation in Betrieb ist, ist das Testen der Funktionalität mit E2E-Tests ein Kinderspiel. Diese Tests decken jeden Teil Ihrer Einrichtung ab, um sicherzustellen, dass alles wie erwartet funktioniert. Hier erfahren Sie, wie Sie sie durchführen:

# Navigate to the test directory  
cd tests/python_client  

# Install dependencies  
pip install -r requirements.txt  

# Run E2E tests  
pytest --tags=L0 -n auto  

Ausführliche Anweisungen und Tipps zur Fehlerbehebung finden Sie im Milvus-Entwicklungshandbuch.

Profi-Tipp

Wenn Sie Milvus noch nicht kennen, sollten Sie zunächst mit Milvus Lite oder dem Standalone-Modus beginnen, um ein Gefühl für die Möglichkeiten zu bekommen, bevor Sie den verteilten Modus für Produktionslasten einsetzen.

Einreichen Ihres Codes

Herzlichen Glückwunsch! Sie haben alle Unit- und E2E-Tests abgeschlossen (oder bei Bedarf debuggt und neu kompiliert). Während der erste Build einige Zeit in Anspruch nehmen kann, werden zukünftige Builds viel schneller sein - also kein Grund zur Sorge. Wenn Sie alle Tests bestanden haben, können Sie Ihre Änderungen einreichen und zu Milvus beitragen!

Jeder PR an Milvus muss mit einem relevanten Issue verknüpft werden. Hier erfahren Sie, wie Sie das machen:

  • Prüfen Sie, ob es bereits Themen gibt: Schauen Sie im Milvus Issue Tracker nach, ob es bereits einen Issue gibt, der mit Ihren Änderungen zu tun hat.

  • Erstellen Sie eine neue Meldung: Wenn kein relevanter Issue existiert, eröffnen Sie einen neuen und erklären Sie das Problem, das Sie lösen oder die Funktion, die Sie hinzufügen.

Einreichen Ihres Codes

  1. Forken Sie das Repository: Beginnen Sie damit, das Milvus-Repository in Ihrem GitHub-Konto zu forken.

  2. Erstellen Sie einen Zweig: Klonen Sie Ihren Fork lokal und erstellen Sie einen neuen Branch für Ihre Änderungen.

  3. Commit mit Signed-off-by Signatur: Stellen Sie sicher, dass Ihre Commits eine Signed-off-by Signatur enthalten, um der Open-Source-Lizenzierung zu entsprechen:

git commit -m "Commit of your change" -s

Dieser Schritt bescheinigt, dass Ihr Beitrag mit dem Developer Certificate of Origin (DCO) übereinstimmt.

Hilfreiche Ressourcen

Detaillierte Schritte und Best Practices finden Sie im Milvus Contribution Guide.

Gelegenheiten zum Beitragen

Herzlichen Glückwunsch - Sie haben Milvus zum Laufen gebracht! Sie haben die Bereitstellungsmodi erkundet, Ihre Tests durchgeführt und sich vielleicht sogar in den Code vertieft. Jetzt ist es an der Zeit, sich weiterzuentwickeln: Tragen Sie zu Milvus bei und gestalten Sie die Zukunft von KI und unstrukturierten Daten mit.

Unabhängig von Ihren Fähigkeiten gibt es einen Platz für Sie in der Milvus-Community! Egal, ob Sie ein Entwickler sind, der gerne komplexe Herausforderungen löst, ein technischer Redakteur, der gerne saubere Dokumentationen oder Technik-Blogs schreibt, oder ein Kubernetes-Enthusiast, der Bereitstellungen verbessern möchte - es gibt eine Möglichkeit für Sie, etwas zu bewirken.

Werfen Sie einen Blick auf die untenstehenden Möglichkeiten und finden Sie das Richtige für sich. Jeder Beitrag hilft, Milvus voranzubringen - und wer weiß? Ihr nächster Pull Request könnte die nächste Innovationswelle auslösen. Also, worauf warten Sie noch? Fangen wir an! 🚀

ProjekteGeeignet fürRichtlinien
milvus, milvus-sdk-goGo-Entwickler/
milvus, knowhereCPP-Entwickler/
pymilvus, milvus-sdk-node, milvus-sdk-javaEntwickler, die an anderen Sprachen interessiert sindBeitragen zu PyMilvus
milvus-helmKubernetes-Enthusiasten/
Milvus-docs, milvus-io/Gemeinschaft/BlogTechnische RedakteureBeitrag zu milvus-docs
milvus-einblickWeb-Entwickler/

Ein letztes Wort

Milvus bietet verschiedene SDKs - Python (PyMilvus), Java, Go und Node.js -, dieden Einstieg in die Entwicklung erleichtern. Bei der Mitarbeit an Milvus geht es nicht nur um Code, sondern auch darum, sich einer lebendigen und innovativen Gemeinschaft anzuschließen.

🚀Willkommen in der Milvus-Entwickler-Community, und viel Spaß beim Programmieren! Wir können es kaum erwarten, zu sehen, was Sie erschaffen werden.

Weitere Informationen

Like the article? Spread the word

Weiterlesen