Cara Berkontribusi ke Milvus: Awal yang Cepat untuk Pengembang
Milvus adalah basis data vektor sumber terbuka yang dirancang untuk mengelola data vektor berdimensi tinggi. Baik Anda membangun mesin pencari cerdas, sistem rekomendasi, atau solusi AI generasi berikutnya seperti retrieval augmented generation(RAG), Milvus adalah alat yang kuat di ujung jari Anda.
Namun, yang benar-benar mendorong Milvus maju bukan hanya teknologinya yang canggih, tetapi juga komunitas pengembang yang bersemangat dan bergairah di belakangnya. Sebagai proyek sumber terbuka, Milvus tumbuh dan berkembang berkat kontribusi pengembang seperti Anda. Setiap perbaikan bug, penambahan fitur, dan peningkatan kinerja dari komunitas membuat Milvus lebih cepat, lebih terukur, dan lebih dapat diandalkan.
Jika Anda menyukai open-source, ingin belajar, atau ingin membuat dampak yang berkelanjutan di bidang AI, Milvus adalah tempat yang tepat untuk berkontribusi. Panduan ini akan memandu Anda melalui prosesnya-mulai dari menyiapkan lingkungan pengembangan hingga mengirimkan pull request pertama Anda. Kami juga akan menyoroti tantangan umum yang mungkin Anda hadapi dan memberikan solusi untuk mengatasinya.
Siap untuk terjun? Mari kita buat Milvus menjadi lebih baik bersama-sama!
Menyiapkan Lingkungan Pengembangan Milvus Anda
Hal pertama yang harus Anda lakukan adalah menyiapkan lingkungan pengembangan Anda. Anda dapat menginstal Milvus di mesin lokal Anda atau menggunakan Docker-kedua metode ini sangat mudah, tetapi Anda juga harus menginstal beberapa dependensi pihak ketiga untuk menjalankan semuanya.
Membangun Milvus Secara Lokal
Jika Anda suka membangun sesuatu dari awal, membangun Milvus di mesin lokal Anda sangatlah mudah. Milvus membuatnya mudah dengan membundel semua dependensi dalam skrip install_deps.sh
. Berikut ini adalah penyiapan cepatnya:
# Install third-party dependencies.
$ cd milvus/
$ ./scripts/install_deps.sh
# Compile Milvus.
$ make
Membangun Milvus dengan Docker
Jika Anda lebih memilih Docker, ada dua cara untuk melakukannya: Anda dapat menjalankan perintah dalam kontainer yang sudah dibuat sebelumnya atau menjalankan kontainer dev untuk pendekatan yang lebih praktis.
# 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
Catatan Platform: Jika Anda menggunakan Linux, Anda siap untuk melanjutkan - masalah kompilasi cukup jarang terjadi. Namun, pengguna Mac, terutama dengan chip M1, mungkin akan mengalami beberapa kendala di sepanjang jalan. Namun, jangan khawatir-kami memiliki panduan untuk membantu Anda mengatasi masalah yang paling umum.
Gambar: Konfigurasi OS
Untuk panduan penyiapan lengkap, lihat Panduan Pengembangan Milvus resmi.
Masalah Umum dan Cara Mengatasinya
Terkadang, menyiapkan lingkungan pengembangan Milvus Anda tidak berjalan mulus seperti yang direncanakan. Jangan khawatir - berikut ini adalah ikhtisar singkat tentang masalah umum yang mungkin Anda temui dan cara memperbaikinya dengan cepat.
Homebrew: Pemutusan Tak Terduga Saat Membaca Paket Sideband
Jika Anda menggunakan Homebrew dan melihat kesalahan seperti ini:
==> 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~ %
Perbaiki: Tingkatkan ukuran http.postBuffer
:
git config --global http.postBuffer 1M
Jika Anda juga mengalami Brew: command not found
setelah menginstal Homebrew, Anda mungkin perlu mengatur konfigurasi pengguna Git:
git config --global user.email xxxgit config --global user.name xxx
Docker: Kesalahan Mendapatkan Kredensial
Saat bekerja dengan Docker, Anda mungkin melihat ini:
error getting credentials - err: exit status 1, out: ``
Perbaiki: Buka~/.docker/config.json
dan hapus bidang credsStore
.
Python: Tidak Ada Modul Bernama 'imp'
Jika Python melemparkan kesalahan ini, itu karena Python 3.12 menghapus modul imp
, yang masih digunakan oleh beberapa dependensi lama.
Memperbaiki: Turunkan versi ke Python 3.11:
brew install python@3.11
Conan: Argumen yang Tidak Dikenali atau Perintah Tidak Ditemukan
Masalah: Jika Anda melihat Unrecognized arguments: --install-folder conan
, kemungkinan besar Anda menggunakan versi Conan yang tidak kompatibel.
Perbaikan: Turunkan versi ke Conan 1.61:
pip install conan==1.61
Masalah: Jika Anda melihat Conan command not found
, itu berarti lingkungan Python Anda tidak diatur dengan benar.
Perbaikan: Tambahkan direktori bin Python ke PATH
:
export PATH="/path/to/python/bin:$PATH"
LLVM: Penggunaan Pengenal yang Tidak Dideklarasikan 'kSecFormatOpenSSL'
Kesalahan ini biasanya berarti dependensi LLVM Anda sudah kedaluwarsa.
Memperbaiki: Instal ulang LLVM 15 dan perbarui variabel lingkungan Anda:
brew reinstall llvm@15
export LDFLAGS="-L/opt/homebrew/opt/llvm@15/lib"
export CPPFLAGS="-I/opt/homebrew/opt/llvm@15/include"
Tips Pro
Selalu periksa ulang versi dan dependensi alat Anda.
Jika masih ada yang tidak berfungsi, halaman Permasalahan Milvus GitHub adalah tempat yang tepat untuk menemukan jawaban atau meminta bantuan.
Mengonfigurasi Kode VS untuk Integrasi C++ dan Go
Membuat C++ dan Go bekerja bersama di VS Code lebih mudah daripada kedengarannya. Dengan pengaturan yang tepat, Anda dapat menyederhanakan proses pengembangan Anda untuk Milvus. Cukup ubah file user.settings
Anda dengan konfigurasi di bawah ini:
{
"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"
}
Inilah yang dilakukan oleh konfigurasi ini:
Variabel Lingkungan: Mengatur jalur untuk
PKG_CONFIG_PATH
,LD_LIBRARY_PATH
, danRPATH
, yang sangat penting untuk menemukan pustaka selama pembangunan dan pengujian.Integrasi Alat Bantu Go: Mengaktifkan server bahasa Go (
gopls
) dan mengonfigurasi alat sepertigofumpt
untuk pemformatan dangolangci-lint
untuk linting.Pengaturan Pengujian: Menambahkan
testTags
dan meningkatkan batas waktu untuk menjalankan pengujian menjadi 10 menit.
Setelah ditambahkan, pengaturan ini memastikan integrasi yang mulus antara alur kerja C++ dan Go. Ini sempurna untuk membangun dan menguji Milvus tanpa perlu mengubah lingkungan secara konstan.
Kiat Pro
Setelah menyiapkannya, jalankan uji coba cepat untuk memastikan semuanya berfungsi. Jika ada sesuatu yang terasa aneh, periksa kembali jalur dan versi ekstensi Go VS Code.
Menerapkan Milvus
Milvus mendukung tiga mode penerapan-Lite, Standalone, dan Distributed.
Milvus Lite adalah pustaka Python dan versi Milvus yang sangat ringan. Sangat cocok untuk pembuatan prototipe cepat di lingkungan Python atau notebook dan untuk eksperimen lokal berskala kecil.
Milvus Standalone adalah opsi penerapan node tunggal untuk Milvus, menggunakan model client-server. Milvus setara dengan MySQL, sedangkan Milvus Lite seperti SQLite.
Milvus Distributed adalah mode terdistribusi dari Milvus, yang ideal untuk pengguna perusahaan yang membangun sistem basis data vektor berskala besar atau platform data vektor.
Semua penerapan ini bergantung pada tiga komponen inti:
Milvus: Mesin basis data vektor yang menggerakkan semua operasi.
Etcd: Mesin metadata yang mengelola metadata internal Milvus.
MinIO: Mesin penyimpanan yang memastikan persistensi data.
Ketika berjalan dalam mode Terdistribusi, Milvus juga menggabungkan Pulsar untuk pemrosesan pesan terdistribusi menggunakan mekanisme Pub/Sub, sehingga dapat diskalakan untuk lingkungan dengan throughput tinggi.
Milvus Standalone
Mode Standalone dirancang untuk pengaturan instance tunggal, membuatnya sempurna untuk pengujian dan aplikasi skala kecil. Berikut cara untuk memulai:
# 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 Terdistribusi (sebelumnya dikenal sebagai Milvus Cluster)
Untuk dataset yang lebih besar dan lalu lintas yang lebih tinggi, mode Distributed menawarkan skalabilitas horizontal. Mode ini menggabungkan beberapa instance Milvus ke dalam satu sistem yang kohesif. Penerapan menjadi mudah dengan Milvus Operator, yang berjalan di Kubernetes dan mengelola seluruh tumpukan Milvus untuk Anda.
Ingin panduan langkah demi langkah? Lihat Panduan Instalasi Milvus.
Menjalankan Pengujian End-to-End (E2E)
Setelah penerapan Milvus Anda aktif dan berjalan, menguji fungsionalitasnya sangat mudah dengan pengujian E2E. Pengujian ini mencakup setiap bagian dari penyiapan Anda untuk memastikan semuanya bekerja seperti yang diharapkan. Berikut cara menjalankannya:
# Navigate to the test directory
cd tests/python_client
# Install dependencies
pip install -r requirements.txt
# Run E2E tests
pytest --tags=L0 -n auto
Untuk instruksi mendalam dan tips pemecahan masalah, lihat Panduan Pengembangan Milvus.
Kiat Pro
Jika Anda baru mengenal Milvus, mulailah dengan mode Milvus Lite atau Standalone untuk merasakan kemampuannya sebelum meningkatkan ke mode Distributed untuk beban kerja tingkat produksi.
Mengirimkan Kode Anda
Selamat! Anda telah menyelesaikan semua pengujian unit dan E2E (atau melakukan debug dan kompilasi ulang sesuai kebutuhan). Meskipun pembangunan pertama dapat memakan waktu, pembangunan selanjutnya akan jauh lebih cepat-jadi tidak perlu khawatir. Setelah semuanya selesai, Anda siap untuk mengirimkan perubahan Anda dan berkontribusi ke Milvus!
Tautkan Pull Request (PR) Anda ke sebuah isu
Setiap PR ke Milvus harus dikaitkan dengan isu yang relevan. Berikut cara untuk menanganinya:
Periksa Isu yang Sudah Ada: Lihatlah melalui pelacak isu Milvus untuk melihat apakah sudah ada isu yang terkait dengan perubahan Anda.
Buat Masalah Baru: Jika tidak ada isu yang relevan, buka isu baru dan jelaskan masalah yang Anda selesaikan atau fitur yang Anda tambahkan.
Mengirimkan Kode Anda
Garpu (Fork) Repositori: Mulailah dengan melakukan fork repo Milvus ke akun GitHub Anda.
Membuat Cabang: Kloning fork Anda secara lokal dan buat cabang baru untuk perubahan Anda.
Lakukan komit dengan Tanda Tangan yang ditandatangani: Pastikan komit Anda menyertakan tanda tangan
Signed-off-by
untuk mematuhi lisensi sumber terbuka:
git commit -m "Commit of your change" -s
Langkah ini mengesahkan kontribusi Anda sesuai dengan Developer Certificate of Origin (DCO).
Sumber Daya Bermanfaat
Untuk langkah-langkah terperinci dan praktik terbaik, lihat Panduan Kontribusi Milvus.
Peluang untuk Berkontribusi
Selamat-Anda telah membuat Milvus aktif dan berjalan! Anda telah menjelajahi mode penerapannya, menjalankan pengujian, dan bahkan mungkin menggali kodenya. Sekarang saatnya untuk naik level: berkontribusi pada Milvus dan membantu membentuk masa depan AI dan data tak terstruktur.
Apa pun keahlian Anda, selalu ada tempat untuk Anda di komunitas Milvus! Apakah Anda seorang pengembang yang suka memecahkan tantangan yang rumit, penulis teknologi yang suka menulis dokumentasi yang jelas atau blog teknik, atau penggemar Kubernetes yang ingin meningkatkan penerapan, ada cara bagi Anda untuk memberikan dampak.
Lihatlah peluang di bawah ini dan temukan yang cocok untuk Anda. Setiap kontribusi membantu memajukan Milvus-dan siapa tahu? Permintaan bantuan Anda berikutnya mungkin akan mendorong gelombang inovasi berikutnya. Jadi, tunggu apa lagi? Mari kita mulai! 🚀
Proyek | Cocok untuk | Pedoman |
---|---|---|
milvus, milvus-sdk-go | Pengembang Go | / |
milvus, knowhere | Pengembang CPP | / |
pymilvus, milvus-sdk-node, milvus-sdk-java | Pengembang yang tertarik dengan bahasa lain | Berkontribusi untuk PyMilvus |
milvus-helm | Penggemar Kubernetes | / |
Milvus-docs, milvus-io/komunitas/blog | Penulis teknologi | Berkontribusi di milvus docs |
milvus-insight | Pengembang web | / |
Kata Penutup
Milvus menawarkan berbagai SDK-Python (PyMilvus), Java, Go, dan Node.js-yangmemudahkan untuk mulai membangun. Berkontribusi di Milvus bukan hanya tentang kode, tetapi juga tentang bergabung dengan komunitas yang dinamis dan inovatif.
Selamat datang di komunitas pengembang Milvus, dan selamat berkoding! Kami tidak sabar untuk melihat apa yang akan Anda buat.
Bacaan Lebih Lanjut
- Menyiapkan Lingkungan Pengembangan Milvus Anda
- Menerapkan Milvus
- Menjalankan Pengujian End-to-End (E2E)
- Mengirimkan Kode Anda
- Peluang untuk Berkontribusi
- Kata Penutup
- Bacaan Lebih Lanjut
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