Memulai dengan klaster Milvus dan K8
Pengantar
Milvus adalah basis data vektor terdistribusi yang bertujuan untuk menyimpan, mengindeks, dan mengelola vektor penyematan dalam jumlah besar. Kemampuannya untuk mengindeks dan mencari triliunan vektor secara efisien membuat Milvus menjadi pilihan utama untuk beban kerja AI dan pembelajaran mesin.
Kubernetes (K8), di sisi lain, unggul dalam mengelola dan menskalakan aplikasi dalam kontainer. Kubernetes menyediakan fitur-fitur seperti penskalaan otomatis, penyembuhan mandiri, dan penyeimbangan beban, yang sangat penting untuk menjaga ketersediaan dan kinerja yang tinggi dalam lingkungan produksi.
Mengapa Menggunakan Keduanya?
K8 dapat secara otomatis menskalakan cluster Milvus berdasarkan beban kerja. Seiring dengan pertumbuhan data Anda atau peningkatan jumlah kueri, K8 dapat menjalankan lebih banyak instance Milvus untuk menangani beban, sehingga aplikasi Anda tetap responsif.
Salah satu fitur yang menonjol dari K8 adalah penskalaan horizontalnya, yang membuat perluasan cluster Milvus Anda sangat mudah. Seiring dengan pertumbuhan dataset Anda, K8 dengan mudah mengakomodasi pertumbuhan ini, menjadikannya solusi yang mudah dan efisien.
Selain itu, kemampuan untuk menangani kueri juga meningkat secara horizontal dengan K8. Ketika beban kueri meningkat, K8 dapat menggunakan lebih banyak instance Milvus untuk menangani kueri pencarian kemiripan yang meningkat, memastikan respons latensi yang rendah bahkan di bawah beban yang berat.
Prasyarat & Menyiapkan K8
Prasyarat
Docker - Pastikan Docker telah terinstal di sistem Anda.
Kubernetes - Siapkan cluster Kubernetes. Anda dapat menggunakan
minikube
untuk pengembangan lokal atau layanan Kubernetes penyedia cloud untuk lingkungan produksi.Helm - Instal Helm, manajer paket untuk Kubernetes, untuk membantu Anda mengelola aplikasi Kubernetes, Anda dapat memeriksa dokumentasi kami untuk mengetahui cara melakukannya https://milvus.io/docs/install_cluster-helm.md
Kubectl - Instal
kubectl
, alat baris perintah untuk berinteraksi dengan cluster Kubernetes, untuk menerapkan aplikasi, memeriksa dan mengelola sumber daya cluster, dan melihat log.
Menyiapkan K8
Setelah menginstal semua yang diperlukan untuk menjalankan klaster K8s, dan jika Anda menggunakan minikube
, mulailah klaster Anda dengan:
minikube start
Periksa status klaster K8s Anda dengan:
kubectl cluster-info
Menerapkan Milvus pada K8s
Untuk penerapan ini, kami memilih Milvus dalam mode klaster untuk memanfaatkan kemampuan terdistribusi penuhnya. Kami akan menggunakan Helm, untuk menyederhanakan proses instalasi.
1. Perintah Instalasi Helm
helm install my-milvus milvus/milvus --set pulsar.enabled=false --set kafka.enabled=true
Perintah ini menginstal Milvus pada cluster K8s Anda dengan Kafka diaktifkan dan Pulsar dinonaktifkan. Kafka berfungsi sebagai sistem pengiriman pesan dalam Milvus, menangani streaming data di antara berbagai komponen. Menonaktifkan Pulsar dan mengaktifkan Kafka akan menyesuaikan penerapan dengan preferensi dan persyaratan pengiriman pesan spesifik kita.
2. Penerusan Port
Untuk mengakses Milvus dari mesin lokal Anda, buat port forward: kubectl port-forward svc/my-milvus 27017:19530
.
Perintah ini memetakan port 19530
dari layanan Milvus svc/my-milvus
ke port yang sama pada mesin lokal Anda, sehingga Anda dapat terhubung ke Milvus menggunakan alat lokal. Jika Anda membiarkan port lokal tidak ditentukan (seperti pada :19530
), K8 akan mengalokasikan port yang tersedia, membuatnya dinamis. Pastikan Anda mencatat port lokal yang dialokasikan jika Anda memilih metode ini.
3. Memverifikasi Penyebaran:
kubectl get pods
NAME READY STATUS RESTARTS AGE
my-milvus-datacoord-595b996bd4-zprpd 1/1 Running 0 85m
my-milvus-datanode-d9d555785-47nkt 1/1 Running 0 85m
my-milvus-etcd-0 1/1 Running 0 84m
my-milvus-etcd-1 1/1 Running 0 85m
my-milvus-etcd-2 1/1 Running 0 85m
my-milvus-indexcoord-65bc68968c-6jg6q 1/1 Running 0 85m
my-milvus-indexnode-54586f55d-z9vx4 1/1 Running 0 85m
my-milvus-kafka-0 1/1 Running 0 85m
my-milvus-kafka-1 1/1 Running 0 85m
my-milvus-kafka-2 1/1 Running 0 85m
my-milvus-minio-0 1/1 Running 0 96m
my-milvus-minio-1 1/1 Running 0 96m
my-milvus-minio-2 1/1 Running 0 96m
my-milvus-minio-3 1/1 Running 0 96m
my-milvus-proxy-76bb7d497f-sqwvd 1/1 Running 0 85m
my-milvus-querycoord-6f4c7b7598-b6twj 1/1 Running 0 85m
my-milvus-querynode-677bdf485b-ktc6m 1/1 Running 0 85m
my-milvus-rootcoord-7498fddfd8-v5zw8 1/1 Running 0 85m
my-milvus-zookeeper-0 1/1 Running 0 85m
my-milvus-zookeeper-1 1/1 Running 0 85m
my-milvus-zookeeper-2 1/1 Running 0 85m
Anda akan melihat daftar pod yang mirip dengan keluaran di atas, semuanya dalam status Running. Ini mengindikasikan bahwa klaster Milvus Anda sudah beroperasi. Secara khusus, cari angka 1/1 di bawah kolom READY
, yang menandakan bahwa setiap pod sudah siap dan berjalan. Jika ada pod yang tidak berada dalam status Running, Anda mungkin perlu menyelidiki lebih lanjut untuk memastikan penerapan yang sukses.
Dengan klaster Milvus Anda yang telah diterapkan dan semua komponen telah dikonfirmasi berjalan, Anda sekarang siap untuk melanjutkan ke proses pemasukan dan pengindeksan data. Ini akan melibatkan penyambungan ke instance Milvus Anda, membuat koleksi, dan memasukkan vektor untuk pencarian dan pengambilan.
Pemasukan dan Pengindeksan Data
Untuk mulai menelan dan mengindeks data dalam cluster Milvus, kita akan menggunakan pymilvus SDK. Ada dua opsi instalasi:
SDK dasar:
pip install pymilvus
Untuk penyematan teks yang kaya dan model tingkat lanjut:
pip install pymilvus[model]
Saatnya memasukkan data ke dalam klaster kita, kita akan menggunakan pymilvus
, Anda dapat menginstal SDK hanya dengan pip install pymilvus
atau jika Anda ingin mengekstrak rich text embeddings, Anda juga dapat menggunakan PyMilvus Models
dengan menginstal pip install pymilvus[model]
.
Menghubungkan dan Membuat Koleksi:
Pertama, sambungkan ke instans Milvus Anda menggunakan port yang telah Anda teruskan sebelumnya. Pastikan URI sesuai dengan port lokal yang ditetapkan oleh K8:
from pymilvus import MilvusClient
client = MilvusClient(
uri="http://127.0.0.1:52070",
)
client.create_collection(collection_name="quick_setup", dimension=5)
Parameter dimension=5
mendefinisikan ukuran vektor untuk koleksi ini, yang penting untuk kemampuan pencarian vektor.
Menyisipkan Data
Berikut ini cara memasukkan kumpulan data awal, di mana setiap vektor mewakili sebuah item, dan bidang warna menambahkan atribut deskriptif:
data=[
{"id": 0, "vector": [0.3580376395471989, -0.6023495712049978, 0.18414012509913835, -0.26286205330961354, 0.9029438446296592], "color": "pink_8682"},
{"id": 1, "vector": [0.19886812562848388, 0.06023560599112088, 0.6976963061752597, 0.2614474506242501, 0.838729485096104], "color": "red_7025"},
{"id": 2, "vector": [0.43742130801983836, -0.5597502546264526, 0.6457887650909682, 0.7894058910881185, 0.20785793220625592], "color": "orange_6781"},
{"id": 3, "vector": [0.3172005263489739, 0.9719044792798428, -0.36981146090600725, -0.4860894583077995, 0.95791889146345], "color": "pink_9298"},
{"id": 4, "vector": [0.4452349528804562, -0.8757026943054742, 0.8220779437047674, 0.46406290649483184, 0.30337481143159106], "color": "red_4794"},
{"id": 5, "vector": [0.985825131989184, -0.8144651566660419, 0.6299267002202009, 0.1206906911183383, -0.1446277761879955], "color": "yellow_4222"},
{"id": 6, "vector": [0.8371977790571115, -0.015764369584852833, -0.31062937026679327, -0.562666951622192, -0.8984947637863987], "color": "red_9392"},
{"id": 7, "vector": [-0.33445148015177995, -0.2567135004164067, 0.8987539745369246, 0.9402995886420709, 0.5378064918413052], "color": "grey_8510"},
{"id": 8, "vector": [0.39524717779832685, 0.4000257286739164, -0.5890507376891594, -0.8650502298996872, -0.6140360785406336], "color": "white_9381"},
{"id": 9, "vector": [0.5718280481994695, 0.24070317428066512, -0.3737913482606834, -0.06726932177492717, -0.6980531615588608], "color": "purple_4976"}
]
res = client.insert(
collection_name="quick_setup",
data=data
)
print(res)
Kode yang disediakan mengasumsikan bahwa Anda telah membuat koleksi dengan cara Penyiapan Cepat. Seperti ditunjukkan dalam kode di atas,
Data yang akan disisipkan diatur ke dalam daftar kamus, di mana setiap kamus mewakili catatan data, yang disebut sebagai entitas.
Setiap kamus berisi bidang yang tidak ditentukan skema bernama warna.
Setiap kamus berisi kunci yang sesuai dengan bidang yang telah ditentukan sebelumnya dan bidang dinamis.
Masukkan Lebih Banyak Data
colors = ["green", "blue", "yellow", "red", "black", "white", "purple", "pink", "orange", "brown", "grey"]
data = [ {
"id": i,
"vector": [ random.uniform(-1, 1) for _ in range(5) ],
"color": f"{random.choice(colors)}_{str(random.randint(1000, 9999))}"
} for i in range(1000) ]
res = client.insert(
collection_name="quick_setup",
data=data[10:]
)
print(res)
Pencarian Kemiripan
Setelah mengisi koleksi, Anda dapat melakukan pencarian kemiripan untuk menemukan vektor yang mendekati vektor kueri. Nilai variabel query_vectors adalah sebuah daftar yang berisi sub-daftar float. Sub-daftar mewakili penyematan vektor 5 dimensi.
query_vectors = [
[0.041732933, 0.013779674, -0.027564144, -0.013061441, 0.009748648]
]
res = client.search(
collection_name="quick_setup", # target collection
data=query_vectors, # query vectors
limit=3, # number of returned entities
)
print(res)
Kueri ini mencari 3 vektor teratas yang paling mirip dengan vektor kueri kita, yang menunjukkan kemampuan pencarian Milvus yang kuat.
Copot pemasangan Milvus dari K8
Setelah Anda selesai dengan tutorial ini, silakan hapus instalan Milvus dari cluster K8s Anda dengan:helm uninstall my-milvus
.
Perintah ini akan menghapus semua komponen Milvus yang digunakan dalam rilis my-milvus
, membebaskan sumber daya cluster.
Kesimpulan
Menerapkan Milvus di cluster Kubernetes menunjukkan skalabilitas dan fleksibilitas basis data vektor dalam menangani beban kerja AI dan pembelajaran mesin. Melalui tutorial ini, Anda telah mempelajari dasar-dasar menyiapkan Milvus dengan Helm, membuat koleksi, dan melakukan konsumsi data serta pencarian kemiripan.
Menginstal Milvus di cluster Kubernetes dengan Helm seharusnya sangat mudah. Untuk mempelajari lebih dalam tentang penskalaan cluster Milvus untuk kumpulan data yang lebih besar atau beban kerja yang lebih intensif, dokumentasi kami menawarkan panduan terperinci https://milvus.io/docs/scaleout.md
Jangan ragu untuk memeriksa kode di Github, melihat Milvus, bereksperimen dengan berbagai konfigurasi dan kasus penggunaan, dan berbagi pengalaman Anda dengan komunitas dengan bergabung di Discord kami.
- Pengantar
- Mengapa Menggunakan Keduanya?
- Prasyarat & Menyiapkan K8
- Pemasukan dan Pengindeksan Data
- Pencarian Kemiripan
- Copot pemasangan Milvus dari K8
- Kesimpulan
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