Tutorial 10: Milvus - Database Vektor Terdistribusi untuk AI
Daftar Isi
Pendahuluan
Seiring aplikasi AI semakin bergantung pada pencarian semantik, sistem rekomendasi, dan retrieval-augmented generation (RAG), kebutuhan akan penyimpanan dan pengambilan vektor yang efisien menjadi sangat kritis. Milvus adalah database vektor open-source dan terdistribusi yang dirancang khusus untuk menangani data vektor berskala miliaran dengan latensi milidetik.
Berbeda dengan database tujuan umum yang menambahkan pencarian vektor sebagai fitur tambahan, Milvus dirancang dari awal untuk pencarian kemiripan (similarity search). Platform ini mendukung berbagai jenis indeks (IVFFLAT, HNSW, IVFPQ, dan lainnya), pencarian hibrida yang menggabungkan kemiripan vektor dengan filter skalar, penskalaan horizontal di seluruh kluster, dan integrasi yang mulus dengan framework ML.
Tutorial ini memberikan panduan komprehensif dan praktis tentang Milvus, dari pengaturan dasar hingga deployment produksi.
Prasyarat
- Python 3.9 atau lebih tinggi
- Docker dan Docker Compose (untuk deployment Milvus lokal)
- Pemahaman dasar tentang embedding vektor dan pencarian kemiripan
- Keakraban dengan struktur data Python
Instal paket yang diperlukan:
pip install pymilvus langchain langchain-openai numpy pandas
Arsitektur Milvus
Milvus menggunakan arsitektur cloud-native yang terpisah (disaggregated) dengan empat lapisan utama:
Lapisan Akses - Node proxy stateless yang menangani koneksi klien, perutean permintaan, dan agregasi hasil. Node-node ini dapat diskalakan secara horizontal dan berada di belakang load balancer. Layanan Koordinator - Otak dari kluster, bertanggung jawab atas manajemen metadata, koordinasi query, dan koordinasi data. Layanan ini mengelola skema koleksi, tugas pembuatan indeks, dan perutean query. Node Pekerja - Dibagi menjadi tiga jenis:- Node Query: Menjalankan operasi pencarian dan query pada segmen yang dimuat
- Node Data: Menangani penyisipan, penghapusan, dan kompaksi data
- Node Indeks: Membangun indeks vektor di latar belakang
Aplikasi Klien
|
[Lapisan Akses - Node Proxy]
|
[Layanan Koordinator]
/ | \
[Node] [Node] [Node]
Query Data Indeks
|
[Object Storage + etcd]
Instalasi dan Pengaturan
Pengaturan Lokal dengan Docker Compose
# Unduh file docker-compose
wget https://github.com/milvus-io/milvus/releases/download/v2.4.0/milvus-standalone-docker-compose.yml -O docker-compose.yml
Jalankan Milvus
docker compose up -d
Verifikasi bahwa Milvus berjalan
docker compose ps
Menghubungkan dari Python
from pymilvus import connections, utility
Hubungkan ke Milvus
connections.connect(
alias="default",
host="localhost",
port="19530"
)
Verifikasi koneksi
print(f"Terhubung ke Milvus. Versi server: {utility.getserverversion()}")
Daftar koleksi yang ada
koleksi = utility.listcollections()
print(f"Koleksi yang ada: {koleksi}")