Apa itu Milvus?
Milvus adalah basis data vektor berkinerja tinggi dan sangat skalabel yang berjalan secara efisien di berbagai lingkungan, mulai dari laptop hingga sistem terdistribusi berskala besar. Milvus tersedia sebagai perangkat lunak sumber terbuka dan layanan cloud.
Milvus adalah proyek sumber terbuka di bawah LF AI & Data Foundation yang didistribusikan di bawah lisensi Apache 2.0. Sebagian besar kontributor adalah para ahli dari komunitas komputasi berkinerja tinggi (HPC), yang berspesialisasi dalam membangun sistem berskala besar dan mengoptimalkan kode yang sadar akan perangkat keras. Kontributor inti termasuk para profesional dari Zilliz, ARM, NVIDIA, AMD, Intel, Meta, IBM, Salesforce, Alibaba, dan Microsoft.
Data Tidak Terstruktur, Penyematan, dan Milvus
Data tidak terstruktur, seperti teks, gambar, dan audio, memiliki format yang beragam dan memiliki semantik yang kaya, sehingga sulit untuk dianalisis. Untuk mengelola kerumitan ini, embeddings digunakan untuk mengubah data yang tidak terstruktur menjadi vektor numerik yang menangkap karakteristik esensialnya. Vektor-vektor ini kemudian disimpan dalam basis data vektor, sehingga memungkinkan pencarian dan analisis yang cepat dan terukur.
Milvus menawarkan kemampuan pemodelan data yang kuat, memungkinkan Anda untuk mengatur data yang tidak terstruktur atau multi-modal ke dalam koleksi yang terstruktur. Milvus mendukung berbagai tipe data untuk pemodelan atribut yang berbeda, termasuk tipe numerik dan karakter yang umum, berbagai tipe vektor, larik, set, dan JSON, sehingga Anda tidak perlu repot mengelola banyak sistem basis data.
Data tidak terstruktur, penyematan, dan Milvus
Milvus menawarkan tiga mode penerapan, yang mencakup berbagai skala data-dari pembuatan prototipe lokal di Jupyter Notebooks hingga cluster Kubernetes besar yang mengelola puluhan miliar vektor:
- Milvus Lite adalah pustaka Python yang dapat dengan mudah diintegrasikan ke dalam aplikasi Anda. Sebagai versi ringan dari Milvus, Milvus Lite sangat ideal untuk membuat prototipe cepat di Jupyter Notebooks atau berjalan di perangkat dengan sumber daya terbatas. Pelajari lebih lanjut.
- Milvus Standalone adalah penerapan server mesin tunggal, dengan semua komponen yang dibundel ke dalam satu image Docker untuk penerapan yang mudah. Pelajari lebih lanjut.
- Milvus Distributed dapat digunakan pada cluster Kubernetes, menampilkan arsitektur cloud-native yang dirancang untuk skenario berskala miliaran atau bahkan lebih besar. Arsitektur ini memastikan redundansi pada komponen-komponen penting. Pelajari lebih lanjut.
Apa yang Membuat Milvus Begitu Cepat?
Milvus dirancang sejak hari pertama untuk menjadi sistem basis data vektor yang sangat efisien. Dalam banyak kasus, Milvus mengungguli database vektor lain sebanyak 2-5x (lihat hasil VectorDBBench). Performa tinggi ini adalah hasil dari beberapa keputusan desain utama:
Pengoptimalan yang sadar akan perangkat keras: Untuk mengakomodasi Milvus di berbagai lingkungan perangkat keras, kami telah mengoptimalkan kinerjanya secara khusus untuk berbagai arsitektur dan platform perangkat keras, termasuk AVX512, SIMD, GPU, dan SSD NVMe.
Algoritma Pencarian Tingkat Lanjut: Milvus mendukung berbagai macam algoritme pengindeksan/pencarian dalam memori dan pada disk, termasuk IVF, HNSW, DiskANN, dan banyak lagi, yang semuanya telah dioptimalkan secara mendalam. Dibandingkan dengan implementasi populer seperti FAISS dan HNSWLib, Milvus memberikan kinerja 30%-70% lebih baik.
Mesin Pencari dalam bahasa C++: Lebih dari 80% kinerja basis data vektor ditentukan oleh mesin pencarinya. Milvus menggunakan C++ untuk komponen penting ini karena performa bahasa yang tinggi, optimasi tingkat rendah, dan manajemen sumber daya yang efisien. Yang paling penting, Milvus mengintegrasikan berbagai pengoptimalan kode yang sadar akan perangkat keras, mulai dari vektorisasi tingkat perakitan hingga paralelisasi dan penjadwalan multi-thread, untuk memanfaatkan kemampuan perangkat keras secara maksimal.
Berorientasi pada Kolom: Milvus adalah sistem basis data vektor yang berorientasi pada kolom. Keuntungan utama berasal dari pola akses data. Ketika melakukan kueri, database berorientasi kolom hanya membaca kolom tertentu yang terlibat dalam kueri, bukan seluruh baris, yang sangat mengurangi jumlah data yang diakses. Selain itu, operasi pada data berbasis kolom dapat dengan mudah dibuat vektornya, sehingga memungkinkan operasi diterapkan di seluruh kolom sekaligus, yang selanjutnya meningkatkan kinerja.
Apa yang Membuat Milvus begitu Skalabel
Pada tahun 2022, Milvus mendukung vektor berskala miliaran, dan pada tahun 2023, Milvus meningkatkan skalanya hingga puluhan miliar dengan stabilitas yang konsisten, memberdayakan skenario berskala besar untuk lebih dari 300 perusahaan besar, termasuk Salesforce, PayPal, Shopee, Airbnb, eBay, NVIDIA, IBM, AT&T, LINE, ROBLOX, Inflection, dan lain-lain.
Arsitektur sistem Milvus yang cloud-native dan sangat terpisah memastikan bahwa sistem dapat terus berkembang seiring dengan pertumbuhan data:
Arsitektur sistem yang sangat terpisah dari Milvus
Milvus sendiri sepenuhnya tidak memiliki status sehingga dapat dengan mudah diskalakan dengan bantuan Kubernetes atau cloud publik. Selain itu, komponen-komponen Milvus dipisahkan dengan baik, dengan tiga tugas yang paling penting-pencarian, penyisipan data, dan pengindeksan/pemadatan-dirancang sebagai proses yang mudah diparalelkan, dengan logika yang rumit yang dipisahkan. Hal ini memastikan bahwa simpul kueri, simpul data, dan simpul indeks yang sesuai dapat menskalakan naik dan turun secara independen, mengoptimalkan kinerja dan efisiensi biaya.
Jenis Pencarian yang Didukung oleh Milvus
Milvus mendukung berbagai jenis fungsi pencarian untuk memenuhi tuntutan kasus penggunaan yang berbeda:
- Pencarian ANN: Menemukan K vektor teratas yang paling dekat dengan vektor kueri Anda.
- Pencarian Pemfilteran: Melakukan pencarian ANN di bawah kondisi pemfilteran yang ditentukan.
- Pencarian Rentang: Menemukan vektor dalam radius tertentu dari vektor kueri Anda.
- Pencarian Hibrida: Melakukan pencarian ANN berdasarkan beberapa bidang vektor.
- Pencarian Teks Lengkap: Pencarian teks lengkap berdasarkan BM25.
- Pemeringkatan ulang: Menyesuaikan urutan hasil pencarian berdasarkan kriteria tambahan atau algoritme sekunder, menyempurnakan hasil pencarian ANN awal.
- Ambil: Mengambil data berdasarkan kunci utamanya.
- Query: Mengambil data menggunakan ekspresi tertentu.
Kumpulan Fitur Komprehensif
Selain fitur-fitur pencarian utama yang disebutkan di atas, Milvus juga menyediakan serangkaian fitur yang diimplementasikan di sekitar pencarian ANN sehingga Anda dapat sepenuhnya memanfaatkan kemampuannya.
API dan SDK
- API RESTful (resmi)
- PyMilvus (Python SDK) (resmi)
- Go SDK (resmi)
- Java SDK (resmi)
- Node.js (JavaScript) SDK (resmi)
- C# (dikontribusikan oleh Microsoft)
Tipe Data Tingkat Lanjut
Selain tipe data primitif, Milvus mendukung berbagai tipe data tingkat lanjut dan metrik jarak yang dapat diterapkan.
Akselerasi
Algoritme Pencarian Milvus mendukung serangkaian pengindeksan yang dapat disesuaikan dan algoritme pencarian. Untuk detailnya, lihat Indeks Dalam Memori, Indeks Pada Disk, dan Indeks GPU.
Partisi dan Kunci Partisi Partisi adalah sub-divisi dari koleksi Milvus. Anda dapat memilih bidang skalar sebagai kunci partisi untuk performa pencarian yang lebih baik. Untuk detailnya, lihat Mengelola Partisi dan Menggunakan Kunci Partisi.
Model Konsistensi yang Dapat Disetel Konsistensi memastikan setiap simpul atau replika Milvus memiliki tampilan data yang sama ketika menulis atau membaca data pada waktu tertentu. Anda dapat dengan mudah menyetel tingkat konsistensi ketika melakukan pencarian ANN di Milvus. Untuk detailnya, lihat Konsistensi.
Impor Data Throughput Tinggi Untuk mengimpor data dalam jumlah besar ke dalam Milvus daripada memasukkannya satu per satu, pertimbangkan untuk menggunakan alat impor data throughput tinggi. Untuk detailnya, lihat Menyiapkan Data Sumber dan Mengimpor Data.
Dukungan Multi-tenancy Milvus telah mengimplementasikan banyak fitur yang berorientasi pada skenario multi-tenancy, termasuk Partition Key, Clustering Key, dan banyak lagi. Untuk detailnya, lihat Strategi Multi-tenancy.
Keamanan dan Otorisasi
Model Konsistensi yang Dapat Disetel Konsistensi memastikan setiap node atau replika Milvus memiliki tampilan data yang sama saat menulis atau membaca data pada waktu tertentu. Anda dapat dengan mudah menyetel tingkat konsistensi saat melakukan pencarian ANN di Milvus. Untuk detailnya, lihat Konsistensi.
Isolasi Data dan Kontrol Sumber Daya Untuk skenario multi-tenancy, isolasi data adalah persyaratan keamanan dasar. Milvus mengimplementasikan beberapa fitur untuk menyelesaikan masalah keamanan Anda. Untuk detailnya, lihat Mengelola Grup Sumber Daya dan Pemadatan Clustering.
Integrasi AI
Integrasi Model Penyematan Model Penyematan mengubah data yang tidak terstruktur menjadi representasi numerik dalam ruang data berdimensi tinggi sehingga Anda dapat menyimpannya di Milvus. Saat ini, PyMilvus, Python SDK, mengintegrasikan beberapa model embedding sehingga Anda dapat dengan cepat menyiapkan data Anda ke dalam embedding vektor. Untuk detailnya, lihat Ikhtisar Penyematan.
Integrasi Model Perangkingan Dalam ranah pencarian informasi dan AI generatif, perangking ulang adalah alat penting yang mengoptimalkan urutan hasil dari pencarian awal. PyMilvus juga mengintegrasikan beberapa model perangkingan ulang untuk mengoptimalkan urutan hasil yang dikembalikan dari pencarian awal. Untuk detailnya, lihat Ikhtisar Perangking.
LangChain dan Integrasi Alat AI lainnya Di era GenAI, alat, seperti LangChain, mendapatkan banyak perhatian dari para pengembang aplikasi. Sebagai komponen inti, Milvus biasanya berfungsi sebagai penyimpan vektor dalam alat tersebut. Untuk mempelajari cara mengintegrasikan Milvus ke dalam alat AI favorit Anda, lihat Integrasi dan Tutorial kami.
Alat dan Ekosistem
Attu Attu adalah GUI intuitif lengkap yang membantu Anda mengelola Milvus dan data yang disimpannya. Untuk detailnya, lihat repositori Attu.
Birdwatcher Birdwatcher adalah alat debugging untuk Milvus. Dengan menggunakannya untuk terhubung ke etcd, Anda dapat memeriksa status sistem Milvus Anda atau mengkonfigurasinya dengan cepat. Untuk detailnya, lihat BirdWatcher.
Integrasi Promethus & Grafana Prometheus adalah perangkat pemantauan dan peringatan sistem sumber terbuka untuk Kubernetes. Grafana adalah tumpukan visualisasi sumber terbuka yang dapat terhubung dengan semua sumber data. Anda dapat menggunakan Promethus & Grafana sebagai penyedia layanan pemantauan untuk memantau kinerja Milvus yang didistribusikan secara visual. Untuk detailnya, lihat Menerapkan Layanan Pemantauan.
Cadangan Milvus Cadangan Milvus adalah alat yang memungkinkan pengguna untuk mencadangkan dan memulihkan data Milvus. Alat ini menyediakan CLI dan API untuk menyesuaikan diri dengan skenario aplikasi yang berbeda. Untuk detailnya, lihat Cadangan Milvus.
Milvus Capture Data Change (CDC) Milvus-CDC dapat menangkap dan menyinkronkan data tambahan dalam instance Milvus dan memastikan keandalan data bisnis dengan mentransfernya dengan mulus antara instance sumber dan target, sehingga memudahkan pencadangan tambahan dan pemulihan bencana. Untuk detailnya, lihat Milvus CDC.
Konektor Milvus Milvus telah merencanakan satu set konektor bagi Anda untuk mengintegrasikan Milvus dengan alat pihak ketiga, seperti Apache Spark. Saat ini, Anda dapat menggunakan Konektor Spark kami untuk memasukkan data Milvus Anda ke Apache Spark untuk pemrosesan pembelajaran mesin. Untuk detailnya, lihat Konektor Spark-Milvus.
Layanan Transmisi Vektor (VTS) Milvus menyediakan seperangkat alat bagi Anda untuk mentransfer data Anda antara instans Milvus dan sekumpulan sumber data, termasuk klaster Zilliz, Elasticsearch, Postgres (PgVector), dan instans Milvus lainnya. Untuk detailnya, lihat Migrasi.