Wie man zu Milvus beiträgt: Ein Schnellstart für Entwickler
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
undRPATH
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 wiegofumpt
für die Formatierung undgolangci-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!
Verknüpfen Sie Ihren Pull Request (PR) mit einem Issue
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
Forken Sie das Repository: Beginnen Sie damit, das Milvus-Repository in Ihrem GitHub-Konto zu forken.
Erstellen Sie einen Zweig: Klonen Sie Ihren Fork lokal und erstellen Sie einen neuen Branch für Ihre Änderungen.
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! 🚀
Projekte | Geeignet für | Richtlinien |
---|---|---|
milvus, milvus-sdk-go | Go-Entwickler | / |
milvus, knowhere | CPP-Entwickler | / |
pymilvus, milvus-sdk-node, milvus-sdk-java | Entwickler, die an anderen Sprachen interessiert sind | Beitragen zu PyMilvus |
milvus-helm | Kubernetes-Enthusiasten | / |
Milvus-docs, milvus-io/Gemeinschaft/Blog | Technische Redakteure | Beitrag zu milvus-docs |
milvus-einblick | Web-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
- Einrichten Ihrer Milvus-Entwicklungsumgebung
- Bereitstellen von Milvus
- Ausführen von End-to-End-Tests (E2E)
- Einreichen Ihres Codes
- Gelegenheiten zum Beitragen
- Ein letztes Wort
- Weitere Informationen
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