← Kembali

Metrik Kesamaan Vektor: L2, Kosinus & Produk Dalam

Seret titik kueri dan ubah metrik untuk melihat bagaimana tetangga terdekat berubah.

5 tetangga terdekat(semakin rendah = semakin dekat)

#1P1842.1
#2P1074.0
#3P17111.6
#4P14122.8
#5P13126.9
Ukuran kemiripan
L2
Nilai yang ditampilkan
Jarak Euklides

L2 (Jarak Euklides)

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.

Apa itu metrik?

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.

Tiga hal yang akan Anda temui dalam praktik

  • L2 (Euclidean): jarak garis lurus. Semakin rendah, semakin baik. Gunakan ketika arah dan besaran sama-sama penting — embedding gambar, koordinat geografis, pembacaan sensor mentah. Ini adalah pengaturan default untuk sebagian besar model CV.
  • Kosinus: sudut antara vektor, tanpa memperhitungkan panjangnya. Semakin tinggi, semakin baik. Gunakan ketika hanya arah yang penting — embedding teks (BERT, OpenAI, dll.), sistem rekomendasi di mana “popularitas” vektor tidak boleh mendominasi.
  • Inner Product (IP): dot product, menilai baik keselarasan maupun besarnya vektor. Semakin tinggi, semakin baik. Gunakan dengan model yang secara eksplisit menormalisasi untuk IP (DPR, banyak model pengambilan data). Secara matematis identik dengan Cosine ketika vektor memiliki panjang satuan.

Dua aturan praktis

  • Sesuaikan metrik dengan model. Model embedding dilatih dengan mempertimbangkan metrik tertentu. Menggunakan metrik yang berbeda saat pencarian akan secara diam-diam merusak recall Anda. Periksa kartu model sebelum memilih.
  • Tetap konsisten. Semua vektor dalam sebuah koleksi harus menggunakan metrik yang sama. Anda tidak boleh mencampurkannya dalam satu indeks, dan Anda tidak dapat membandingkan skor secara bermakna di antara metrik yang berbeda.

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.

Menetapkan jenis metrik di Milvus

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.

Pertanyaan yang Sering Diajukan

Metrik kesamaan mana yang sebaiknya saya gunakan untuk " OpenAI " atau embedding teks lainnya?

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.

Apa perbedaan antara kesamaan kosinus dan hasil kali dalam?

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.

Apakah saya dapat mengubah jenis metrik setelah membuat indeks di Milvus?

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.

Apakah pilihan metrik memengaruhi recall atau kecepatan pencarian?

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.

Terus jelajahi