Jenis Metrik
Metrik kemiripan digunakan untuk mengukur kemiripan di antara vektor. Memilih metrik jarak yang tepat dapat membantu meningkatkan kinerja klasifikasi dan pengelompokan secara signifikan.
Saat ini, Milvus mendukung jenis-jenis metrik kemiripan berikut ini: Jarak Euclidean (L2), Inner Product (IP), Cosine Similarity (COSINE), JACCARD, HAMMING, dan BM25 (dirancang khusus untuk pencarian teks lengkap pada vektor yang jarang).
Tabel di bawah ini merangkum pemetaan antara berbagai jenis bidang dan jenis metrik yang sesuai.
Jenis Bidang |
Rentang Dimensi |
Jenis Metrik yang Didukung |
Jenis Metrik Default |
|---|---|---|---|
|
2-32,768 |
|
|
|
2-32,768 |
|
|
|
2-32,768 |
|
|
|
2-32,768 |
|
|
|
Tidak perlu menentukan dimensi. |
|
|
|
8-32,768*8 |
|
|
Untuk bidang vektor dengan tipe
SPARSE\_FLOAT\_VECTOR, gunakan tipe metrikBM25hanya saat melakukan pencarian teks lengkap. Untuk informasi lebih lanjut, lihat Pencarian Teks Lengkap.Untuk bidang vektor dengan tipe
BINARY_VECTOR, nilai dimensi (dim) harus kelipatan 8.
Tabel di bawah ini merangkum karakteristik nilai jarak kemiripan dari semua jenis metrik yang didukung dan kisaran nilainya.
Jenis Metrik |
Karakteristik Nilai Jarak Kemiripan |
Rentang Nilai Jarak Kemiripan |
|---|---|---|
|
Nilai yang lebih kecil menunjukkan kemiripan yang lebih besar. |
[0, ∞) |
|
Nilai yang lebih besar menunjukkan kemiripan yang lebih besar. |
[-1, 1] |
|
Nilai yang lebih besar menunjukkan kemiripan yang lebih besar. |
[-1, 1] |
|
Nilai yang lebih kecil menunjukkan kemiripan yang lebih besar. |
[0, 1] |
|
Memperkirakan kemiripan Jaccard dari bit tanda tangan MinHash; jarak yang lebih kecil = lebih mirip |
[0, 1] |
|
Nilai yang lebih kecil menunjukkan kemiripan yang lebih besar. |
[0, dim(vektor)] |
|
Nilai relevansi berdasarkan frekuensi term, frekuensi dokumen terbalik, dan normalisasi dokumen. |
[0, ∞) |
Untuk mengindeks bidang vektor dalam bidang Array of Structs, Anda harus mengawali MAX_SIM dengan kumpulan jenis metrik yang disebutkan di atas, berdasarkan sematan vektor yang tersimpan dalam bidang tersebut. Sebagai contoh,
Untuk bidang vektor yang menyimpan sematan vektor tipe
FLOAT_VECTOR,FLOAT16_VECTOR,BFLOAT16_VECTOR, atauINT8_VECTOR, Anda dapat menggunakanMAX_SIM_COSINE,MAX_SIM_IP, atauMAX_SIM_L2sebagai tipe metrik.Untuk bidang vektor yang menyimpan sematan vektor tipe
BINARY_VECTOR, Anda dapat menggunakanMAX_SIM_JACCADRatauMAX_SIM_HAMMINGsebagai tipe metrik.
Jarak Euclidean (L2)
Pada dasarnya, jarak Euclidean mengukur panjang segmen yang menghubungkan 2 titik.
Rumus untuk jarak Euclidean adalah sebagai berikut:
Metrik Euclidean
di mana a = (a0, a1, ...,an-1) dan b = (b0, b1, ..., bn-1) adalah dua titik dalam ruang Euclidean n-dimensi.
Ini adalah metrik jarak yang paling umum digunakan dan sangat berguna ketika datanya kontinu.
Milvus hanya menghitung nilai sebelum menerapkan akar kuadrat ketika jarak Euclidean dipilih sebagai metrik jarak.
Produk dalam (IP)
Jarak IP antara dua penyematan didefinisikan sebagai berikut:
Rumus IP
IP lebih berguna jika Anda perlu membandingkan data yang tidak dinormalisasi atau ketika Anda peduli dengan besaran dan sudut.
Jika Anda menggunakan IP untuk menghitung kemiripan di antara embedding, Anda harus menormalkan embedding. Setelah normalisasi, hasil kali dalam sama dengan kemiripan kosinus.
Misalkan X' dinormalisasi dari penyematan X:
Rumus Normalisasi
Korelasi antara kedua embedding adalah sebagai berikut:
Korelasi Antara Penyematan
Kesamaan kosinus
Kemiripan kosinus menggunakan kosinus sudut antara dua set vektor untuk mengukur seberapa mirip mereka. Anda dapat membayangkan dua set vektor sebagai segmen garis yang dimulai dari titik yang sama, seperti [0,0,...], tetapi mengarah ke arah yang berbeda.
Untuk menghitung kemiripan kosinus antara dua set vektor A = (a0, a1,...,an-1) dan B = (b0, b1,..., bn-1), gunakan rumus berikut:
Kesamaan Kosinus
Kesamaan kosinus selalu berada dalam interval [-1, 1]. Sebagai contoh, dua vektor proporsional memiliki kemiripan kosinus 1, dua vektor ortogonal memiliki kemiripan 0, dan dua vektor yang berlawanan memiliki kemiripan -1. Semakin besar kosinus, semakin kecil sudut antara dua vektor tersebut, yang mengindikasikan bahwa dua vektor tersebut semakin mirip satu sama lain.
Dengan mengurangkan kemiripan kosinusnya dari 1, Anda bisa mendapatkan jarak kosinus antara dua vektor.
Jarak JACCARD
Koefisien jarak JACCARD mengukur kemiripan antara dua set sampel dan didefinisikan sebagai kardinalitas perpotongan set yang ditentukan dibagi dengan kardinalitas penyatuannya. Ini hanya dapat diterapkan pada set sampel yang terbatas.
Rumus Koefisien Kemiripan JACCARD
Jarak JACCARD mengukur ketidaksamaan antara kumpulan data dan diperoleh dengan mengurangi koefisien kemiripan JACCARD dari 1. Untuk variabel biner, jarak JACCARD setara dengan koefisien Tanimoto.
Rumus Jarak JACCARD
MHJACCARD
MinHash Jaccard (MHJACCARD) adalah jenis metrik yang digunakan untuk pencarian kemiripan yang efisien dan mendekati pada kumpulan besar - seperti kumpulan kata dokumen, kumpulan tag pengguna, atau kumpulan k-mer genom. Alih-alih membandingkan set mentah secara langsung, MHJACCARD membandingkan tanda tangan MinHash, yang merupakan representasi ringkas yang dirancang untuk memperkirakan kemiripan Jaccard secara efisien.
Pendekatan ini secara signifikan lebih cepat daripada menghitung kemiripan Jaccard yang tepat dan sangat berguna dalam skenario berskala besar atau berdimensi tinggi.
Jenis vektor yang berlaku
BINARY_VECTOR, di mana setiap vektor menyimpan tanda tangan MinHash. Setiap elemen sesuai dengan nilai hash minimum di bawah salah satu fungsi hash independen yang diterapkan pada set asli.
Definisi jarak
MHJACCARD mengukur berapa banyak posisi dalam dua tanda tangan MinHash yang cocok. Semakin tinggi rasio kecocokannya, semakin mirip set yang mendasarinya.
Laporan Milvus:
- Jarak = 1 - perkiraan kemiripan (rasio kecocokan)
Nilai jarak berkisar antara 0 hingga 1:
0 berarti tanda tangan MinHash identik (perkiraan kemiripan Jaccard = 1)
1 berarti tidak ada kecocokan di posisi mana pun (perkiraan kemiripan Jaccard = 0)
Untuk informasi mengenai detail teknis, lihat MINHASH_LSH.
Jarak HAMMING
Jarak HAMMING mengukur string data biner. Jarak antara dua string dengan panjang yang sama adalah jumlah posisi bit di mana bit-bit tersebut berbeda.
Sebagai contoh, misalkan ada dua string, 1101 1001 dan 1001 1101.
11011001 ⊕ 10011101 = 01000100. Karena ini mengandung dua 1, maka jarak HAMMING, d (11011001, 10011101) = 2.
Kesamaan BM25
BM25 adalah metode pengukuran relevansi teks yang banyak digunakan, yang dirancang khusus untuk pencarian teks lengkap. Metode ini menggabungkan tiga faktor kunci berikut:
Frekuensi Istilah (TF): Mengukur seberapa sering sebuah istilah muncul dalam sebuah dokumen. Meskipun frekuensi yang lebih tinggi sering kali mengindikasikan kepentingan yang lebih besar, BM25 menggunakan parameter saturasi k untuk mencegah istilah yang terlalu sering muncul mendominasi skor relevansi.
Frekuensi Dokumen Terbalik (Inverse Document Frequency, IDF): Mencerminkan pentingnya sebuah istilah di seluruh korpus. Istilah yang muncul di lebih sedikit dokumen menerima nilai IDF yang lebih tinggi, yang mengindikasikan kontribusi yang lebih besar terhadap relevansi.
Normalisasi Panjang Dokumen: Dokumen yang lebih panjang cenderung mendapat nilai lebih tinggi karena mengandung lebih banyak istilah. BM25 mengurangi bias ini dengan menormalkan panjang dokumen, dengan parameter b yang mengontrol kekuatan normalisasi ini.
Penilaian BM25 dihitung sebagai berikut:
Deskripsi parameter:
Q: Teks kueri yang disediakan oleh pengguna.
D: Dokumen yang sedang dievaluasi.
,: Frekuensi term, yang merepresentasikan seberapa sering term q muncul dalam dokumen D.
): Frekuensi dokumen terbalik, dihitung sebagai:
dimana N adalah jumlah total dokumen dalam korpus, n ) adalah jumlah dokumen yang mengandung term q .
Panjang dokumen D (jumlah total term).
: Panjang rata-rata semua dokumen dalam korpus.
k: Mengontrol pengaruh frekuensi term pada skor. Nilai yang lebih tinggi meningkatkan pentingnya frekuensi term. Kisaran umumnya adalah [1.2, 2.0], sementara Milvus mengizinkan kisaran [0, 3].
b: Mengontrol tingkat normalisasi panjang, mulai dari 0 hingga 1. Bila nilainya 0, tidak ada normalisasi yang diterapkan; bila nilainya 1, normalisasi penuh diterapkan.