🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
  • Home
  • Blog
  • Cara Berkontribusi ke Milvus: Awal yang Cepat untuk Pengembang

Cara Berkontribusi ke Milvus: Awal yang Cepat untuk Pengembang

  • Engineering
December 01, 2024
Shaoting Huang

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, dan RPATH, yang sangat penting untuk menemukan pustaka selama pembangunan dan pengujian.

  • Integrasi Alat Bantu Go: Mengaktifkan server bahasa Go (gopls) dan mengonfigurasi alat seperti gofumpt untuk pemformatan dan golangci-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!

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

  1. Garpu (Fork) Repositori: Mulailah dengan melakukan fork repo Milvus ke akun GitHub Anda.

  2. Membuat Cabang: Kloning fork Anda secara lokal dan buat cabang baru untuk perubahan Anda.

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

ProyekCocok untukPedoman
milvus, milvus-sdk-goPengembang Go/
milvus, knowherePengembang CPP/
pymilvus, milvus-sdk-node, milvus-sdk-javaPengembang yang tertarik dengan bahasa lainBerkontribusi untuk PyMilvus
milvus-helmPenggemar Kubernetes/
Milvus-docs, milvus-io/komunitas/blogPenulis teknologiBerkontribusi di milvus docs
milvus-insightPengembang 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

Like the article? Spread the word

Terus Baca