Seret titik kueri dan ubah metrik untuk melihat bagaimana tetangga terdekat berubah.
Mengukur jarak garis lurus antara dua titik. Lingkaran-lingkaran konsentris menunjukkan zona-zona dengan jarak yang sama — semua titik pada lingkaran yang sama memiliki "jarak" yang sama dari kueri.
Metrik hanyalah fungsi yang menerima dua vektor dan mengembalikan satu angka yang menunjukkan seberapa mirip (atau berbeda) keduanya. Pencarian vektor, pada intinya, adalah "menemukan K vektor dengan skor metrik terbaik terhadap kueri saya." Segala hal lainnya — indeks, klaster, grafik — hanyalah pencatatan administratif untuk menghindari perhitungan skor ini terhadap setiap vektor dalam basis data.
Metrik yang Anda pilih menentukan arti "serupa" bagi data Anda. Dua embedding bisa "dekat" menurut satu metrik dan "jauh" menurut metrik lain — data yang sama, jawaban yang berbeda. Itulah mengapa pilihan ini harus dilakukan sebelum Anda membuat indeks.
Coba ini: seret titik kueri ke dekat titik asal dan beralihlah antara "Cosine" dan " L2". Perhatikan bagaimana "Cosine" hanya memperhatikan "arah" yang ditunjuk oleh kueri — titik-titik di sisi berlawanan dari titik asal bisa "dekat" dalam " L2 " tetapi "jauh" dalam "Cosine". Visualisasi itulah inti dari konsep ini.
Dalam " Milvus", metrik ditetapkan per indeks melalui " metric_type " — L2, IP, atau COSINE untuk vektor padat — saat Anda membuat indeks. Setiap pencarian terhadap koleksi tersebut kemudian menggunakan fungsi yang sama seperti yang baru saja Anda coba di atas. Aturan tunggal yang paling dapat diandalkan: gunakan metrik yang digunakan untuk melatih model embedding Anda, yang tercantum di hampir setiap kartu model.
Dua jalan pintas yang berguna. Sebagian besar API embedding teks modern (OpenAI, Cohere, Voyage, dan sebagian besar sentence-transformers) menghasilkan vektor yang dimaksudkan untuk kesamaan kosinus. Dan jika vektor Anda dinormalisasi ke panjang satuan, kosinus dan hasil kali dalam akan menghasilkan peringkat yang identik — sehingga IP pada vektor yang dinormalisasi merupakan pengganti umum yang sedikit lebih efisien untuk COSINE.
Gunakan kesamaan kosinus (metric_type COSINE di Milvus). Hampir semua model embedding teks modern — termasuk keluarga text-embedding-3 dari OpenAI — dilatih untuk kesamaan kosinus. Karena embedding OpenAI dinormalisasi menjadi panjang satuan, hasil kali dalam (IP) memberikan peringkat yang identik dan merupakan alternatif yang baik.
Kesamaan kosinus hanya mengukur sudut antara dua vektor, tanpa memperhitungkan panjangnya. Produk dalam (dot product) mempertimbangkan baik keselarasan maupun besarnya, sehingga vektor yang lebih panjang yang mengarah ke arah yang sama akan mendapat skor lebih tinggi. Pada vektor yang dinormalisasi per satuan, keduanya secara matematis setara.
Tidak. Metrik tersebut sudah terintegrasi ke dalam indeks pada saat pembuatan. Untuk mengganti metrik, Anda harus menghapus indeks dan membuatnya kembali dengan `metric_type` baru. Skor dari metrik yang berbeda juga tidak dapat dibandingkan satu sama lain, jadi jangan mencampurkannya saat melakukan pemrosesan lanjutan terhadap hasil.
Kecepatan pada dasarnya sama — L2, IP, dan cosine semuanya membutuhkan satu kali pemindaian vektor. Recall adalah hal yang paling penting: pencarian dengan metrik yang berbeda dari yang digunakan untuk melatih model embedding Anda secara diam-diam akan menurunkan kualitas hasil, seringkali secara drastis.
Pelajari lebih lanjut: baca dokumentasi Metrik Kesamaan untuk daftar lengkap metrik yang didukung oleh Milvus, termasuk Hamming dan Jaccard untuk vektor biner serta BM25 untuk pencarian teks lengkap.
Perbandingan berdampingan antara pencarian brute-force dan pencarian terkluster. Sesuaikan " nprobe " secara real-time.
Ikuti langkah demi langkah pencarian graf berlapis — mulai dari lompatan antar-lapisan hingga penelusuran lokal.
Lihat bagaimana PQ-in-RAM + full-vectors-on-SSD memungkinkan Anda mencari dataset berskala miliaran pada laptop.