Apa itu Basis Data Vektor Milvus?

Milvus dibuat pada tahun 2019 dengan tujuan utama untuk menyimpan, mengindeks, dan mengelola vektor embedding dalam skala besar yang dihasilkan oleh jaringan saraf dalam kedalaman dan model pembelajaran mesin (ML) lainnya.

Sebagai basis data yang dirancang khusus untuk menangani kueri vektor masukan, Milvus dapat mengindeks vektor dalam skala puluhan miliar. Berbeda dengan basis data relasional yang sudah ada yang terutama berurusan dengan pola yang telah ditentukan sebelumnya dan data terstruktur, Milvus dirancang dari awal untuk menangani vektor embedding yang berasal dari data tidak terstruktur.

Dengan ekspansi terus-menerus dari internet, data tidak terstruktur menjadi semakin umum, termasuk email, paper, data sensor IoT, foto Facebook, struktur protein, dan lainnya. Untuk memungkinkan komputer memahami dan memproses data tidak terstruktur ini, data tersebut perlu diubah menjadi vektor menggunakan teknik embedding. Milvus menyimpan dan mengindeks vektor-vektor ini. Milvus dapat menganalisis jarak kesamaan antara dua vektor dengan menghitung jarak kesamaannya, menyimpulkan korelasinya. Jika dua vektor embedding sangat mirip, itu menunjukkan bahwa sumber data asli juga mirip.

Alur Kerja Milvus:

Alur Kerja

Konsep Kunci

Jika Anda tidak terbiasa dengan dunia basis data vektor dan pencarian kesamaan, Anda mungkin akan menemukan konsep kunci berikut ini membantu.

Pelajari lebih lanjut tentang istilah-istilah Milvus.

Data Tidak Terstruktur

Data tidak terstruktur, termasuk gambar, video, audio, dan bahasa alami, mengacu pada informasi yang tidak mengikuti model atau struktur organisasional yang telah ditentukan sebelumnya. Jenis data ini menyumbang sekitar 80% dari data global dan dapat diubah menjadi vektor menggunakan berbagai model kecerdasan buatan (AI) dan pembelajaran mesin (ML).

Vektor Embedding

Vektor embedding adalah abstraksi fitur dari data tidak terstruktur (seperti email, data sensor IoT, foto Instagram, struktur protein, dll.). Dari perspektif matematis, vektor embedding terdiri dari angka desimal atau larik biner. Teknik embedding modern digunakan untuk mengubah data tidak terstruktur menjadi vektor embedding.

Pencarian Kesamaan Vektor

Pencarian kesamaan vektor melibatkan membandingkan vektor dengan basis data untuk menemukan vektor paling mirip dengan vektor kueri. Menggunakan algoritma pencarian tetangga terdekat perkiraan (ANN) dapat mempercepat proses pencarian. Jika dua vektor embedding sangat mirip, itu menunjukkan bahwa sumber data asli juga mirip.

Mengapa Memilih Milvus?

  • Kinerja tinggi untuk pencarian vektor pada kumpulan data dalam skala besar.
  • Dukungan komunitas berorientasi pengembang dengan dukungan untuk beberapa bahasa dan rangkaian alat.
  • Mencapai skalabilitas dan keandalan tinggi di cloud, bahkan mempertahankan stabilitas dalam kejadian kegagalan.
  • Memungkinkan pencarian campuran dengan menggabungkan penyaringan skalar dengan pencarian kesamaan vektor.

Indeks dan Standar Metrik Apa yang Didukung?

Indeks adalah unit organisasi dari data. Sebelum mencari atau mengkueri entitas yang dimasukkan, Anda harus mendeklarasikan tipe indeks dan standar metrik kesamaannya. Jika Anda tidak menentukan tipe indeks, Milvus akan menggunakan pencarian brute-force secara default.

Jenis Indeks

Milvus mendukung sebagian besar jenis indeks vektor untuk pencarian tetangga terdekat perkiraan (ANNS), termasuk:

  • FLAT: Cocok untuk skenario yang mencari hasil pencarian yang benar-benar akurat dan tepat pada kumpulan data dalam skala kecil (jutaan).
  • IVF_FLAT: Berdasarkan indeks kuantisasi, cocok untuk skenario yang mencari keseimbangan ideal antara akurasi dan kecepatan kueri. Ada juga versi GPU bernama GPU_IVF_FLAT.
  • IVF_SQ8: Berdasarkan indeks kuantisasi, cocok untuk skenario yang mencari pengurangan signifikan dalam konsumsi memori disk, CPU, dan GPU karena sumber daya yang sangat terbatas.
  • IVF_PQ: Berdasarkan indeks kuantisasi, cocok untuk skenario yang mengejar kecepatan kueri tinggi bahkan dengan pengorbanan akurasi. Ada juga versi GPU bernama GPU_IVF_PQ.
  • HNSW: Berdasarkan indeks grafik, cocok untuk skenario dengan persyaratan pencarian efisiensi yang sangat tinggi.

Untuk informasi lebih detail, silakan lihat Indeks Vektor.

Metrik Kesamaan

Dalam Milvus, metrik kesamaan digunakan untuk mengukur kesamaan antara vektor-vektor. Memilih metrik jarak yang baik dapat secara signifikan meningkatkan klasifikasi dan kinerja pengelompokan. Bergantung pada bentuk data masukan, metrik kesamaan khusus dipilih untuk mencapai kinerja terbaik.

Metrik umum yang digunakan untuk embedding bilangan titik adalah:

  • Jarak Euclidean (L2): Metrik ini umum digunakan dalam bidang visi komputer.
  • Produk Dalam (IP): Metrik ini umum digunakan dalam bidang pemrosesan bahasa alami.

Metrik umum yang digunakan untuk embedding biner adalah:

  • Jarak Hamming: Metrik ini umum digunakan dalam bidang pemrosesan bahasa alami.
  • Kesamaan Jaccard: Metrik ini umum digunakan untuk pencarian kesamaan molekuler.

Contoh Aplikasi

Milvus memudahkan penambahan pencarian kesamaan ke dalam aplikasi Anda. Contoh aplikasi Milvus meliputi:

  • Pencarian kesamaan gambar: Membuat gambar dapat dicari dan mengembalikan gambar yang paling mirip dari database besar hampir instan.
  • Pencarian kesamaan video: Dengan mengonversi bingkai kunci menjadi vektor dan kemudian memasukkan hasilnya ke dalam Milvus, dapat mencari dan merekomendasikan miliaran video dalam waktu nyata.
  • Pencarian kesamaan audio: Cepat melakukan kueri data audio dalam jumlah besar, seperti ucapan, musik, efek suara, dan suara serupa.
  • Sistem rekomendasi: Merekomendasikan informasi atau produk berdasarkan perilaku dan kebutuhan pengguna.
  • Sistem tanya-jawab: Chatbot digital interaktif yang dapat menjawab otomatis pertanyaan pengguna.
  • Klasifikasi urutan DNA: Mengklasifikasikan gen secara akurat dalam milidetik dengan membandingkan urutan DNA yang mirip.
  • Mesin pencari teks: Membantu pengguna menemukan informasi yang mereka cari dengan membandingkan kata kunci dengan database teks.

Konsep Desain Milvus

Sebagai database vektor berbasis awan, Milvus memisahkan penyimpanan dari komputasi dalam desainnya. Untuk meningkatkan elastisitas dan fleksibilitas, semua komponen dalam Milvus tidak memiliki status.

Sistem ini terbagi menjadi empat lapisan:

  • Lapisan Akses: Terdiri dari sekelompok proxy tanpa status yang berfungsi sebagai lapisan depan sistem dan titik akhir untuk pengguna.
  • Layanan Koordinasi: Layanan ini menugaskan tugas ke node pekerja dan bertindak sebagai pusat utama sistem.
  • Node Pekerja: Node-node ini bertindak sebagai lengan dan kaki sistem, mengikuti instruksi dari layanan koordinasi dan mengeksekusi perintah DML/DDL yang dipicu oleh pengguna secara tanpa disadari.
  • Penyimpanan: Ini adalah tulang punggung sistem yang bertanggung jawab atas persistensi data. Ini mencakup penyimpanan metadata, agen log, dan penyimpanan objek.

Arsitektur Milvus.

Alat Pengembangan

Milvus menyediakan seperangkat API dan alat yang kaya untuk pengembangan dan operasi.

Akses API

Milvus menyediakan perpustakaan klien yang dibungkus di sekitar API Milvus, yang dapat digunakan untuk menyisipkan, menghapus, dan menanyakan data secara terprogram dari kode aplikasi:

  • PyMilvus
  • Node.js SDK
  • Go SDK
  • Java SDK

Alat Ekosistem Milvus

Ekosistem Milvus menawarkan beberapa alat yang berguna, termasuk:

  • Milvus CLI
  • Attu: Sistem manajemen grafis untuk Milvus
  • MilvusDM (Migrasi Data Milvus): Alat sumber terbuka khusus untuk mengimpor dan mengekspor data dengan Milvus.
  • Alat Perencanaan Kapasitas Milvus: Membantu memperkirakan ukuran file mentah yang diperlukan, ukuran memori, dan ukuran disk stabil melalui berbagai tipe indeks.

Batasan Milvus

Milvus berkomitmen untuk menyediakan database vektor terbaik untuk mendorong aplikasi kecerdasan buatan dan pencarian kesamaan vektor. Namun, tim terus bekerja untuk memperkenalkan lebih banyak fitur dan alat optimal untuk meningkatkan pengalaman pengguna. Halaman ini mencantumkan beberapa batasan yang diketahui yang mungkin dihadapi pengguna saat menggunakan Milvus.

Panjang Nama Sumber Daya

Sumber Daya Batasan
Koleksi 255 karakter
Lapangan 255 karakter
Indeks 255 karakter
Partisi 255 karakter

Aturan Penamaan

Nama sumber daya dapat terdiri dari angka, huruf, dan garis bawah (_). Nama harus dimulai dengan huruf atau garis bawah.

Jumlah Sumber Daya

Sumber Daya Batasan
Koleksi 65.536
Koneksi/Agen 65.536

Jumlah Sumber Daya di Koleksi

Sumber Daya Batasan
Partisi 4.096
Shard 64
Lapangan 64
Indeks 1
Entitas Tidak terbatas

Panjang String

Tipe Data Batasan
VARCHAR 65.535

Dimensi Vektor

Atribut Batasan
Dimensi 32.768

Masukan dan Keluaran untuk Setiap RPC

Operasi Batasan
Operasi Sisip 512 MB
Operasi Pencarian 512 MB
Operasi Kueri 512 MB

Batasan Beban

Pada versi saat ini, data yang akan dimuat harus berada dalam 90% dari sumber daya memori total semua node kueri untuk cadangan sumber daya memori untuk mesin eksekusi.

Batasan Pencarian

Vektor Batasan
topk (jumlah hasil paling mirip yang akan dikembalikan) 16.384
nq (jumlah permintaan pencarian) 16.384