Halaman ini menjelaskan cara memilih di antara fungsi jarak vektor yang disediakan di Spanner untuk mengukur kesamaan antara embedding vektor.
Setelah membuat embedding dari data Spanner, Anda dapat melakukan penelusuran kesamaan menggunakan fungsi jarak vektor. Tabel berikut menjelaskan fungsi jarak vektor di Spanner.
Fungsi | Deskripsi | Formula | Hubungan dengan meningkatnya kesamaan |
---|---|---|---|
Perkalian titik | Menghitung kosinus sudut \(\theta\) yang dikalikan dengan hasil kali magnitudo vektor yang sesuai. | \(a_1b_1+a_2b_2+...+a_nb_n\) \(=|a||b|cos(\theta)\) | Peningkatan |
Jarak kosinus | Fungsi jarak kosinus mengurangi kemiripan kosinus dari satu (cosine_distance() = 1 - cosine similarity ). Kemiripan kosinus mengukur kosinus sudut \(\theta\) antara dua vektor.
|
1 - \(\frac{a^T b}{|a| \cdot |b|}\) | Penurunan |
Jarak Euclidean | Mengukur jarak garis lurus antara dua vektor. | \(\sqrt{(a_1-b_1)^2+(a_2-b_2)^2+...+(a_N-b_N)^2}\) | Penurunan |
Memilih ukuran kesamaan
Bergantung pada apakah semua embedding vektor dinormalkan atau tidak, Anda dapat menentukan ukuran kesamaan yang akan digunakan untuk menemukan kesamaan. Penyematan vektor yang dinormalkan memiliki besaran (panjang) tepat 1,0.
Data yang dinormalisasi
Jika Anda memiliki set data dengan semua embedding vektor dinormalkan, ketiga fungsi tersebut akan memberikan hasil penelusuran semantik yang sama. Pada intinya, meskipun setiap fungsi menampilkan nilai yang berbeda, nilai tersebut akan diurutkan dengan cara yang sama. Saat
embedding dinormalkan, DOT_PRODUCT()
biasanya paling efisien secara komputasi, tetapi perbedaannya dalam sebagian besar kasus dapat diabaikan. Namun, jika aplikasi
Anda sangat sensitif terhadap performa, DOT_PRODUCT()
mungkin dapat membantu penyesuaian performa.
Data yang tidak dinormalisasi
Jika Anda memiliki set data dengan embedding vektor tidak dinormalisasi, penggunaan DOT_PRODUCT()
sebagai fungsi jarak secara matematis tidak benar karena perkalian titik sebagai fungsi tidak mengukur jarak. Bergantung pada cara embedding dihasilkan dan jenis penelusuran yang lebih disukai, jarak kosinus atau fungsi jarak Euclidean dapat memberikan hasil penelusuran yang secara subjektif lebih baik daripada fungsi lainnya.
Tidak yakin apakah data dinormalisasi atau tidak dinormalisasi
Jika Anda tidak yakin apakah data Anda dinormalkan atau tidak dan Anda ingin menggunakan DOT_PRODUCT()
, sebaiknya gunakan COSINE_DISTANCE()
.
COSINE_DISTANCE()
seperti DOT_PRODUCT()
dengan normalisasi bawaan.
Kemiripan yang diukur menggunakan COSINE_DISTANCE()
berkisar dari -1
hingga 1
. Hasil
yang mendekati 0
menunjukkan bahwa vektor tersebut sangat mirip.
Langkah selanjutnya
- Pelajari lebih lanjut cara melakukan penelusuran vektor dengan menemukan tetangga k terdekat.
- Pelajari cara mengekspor embedding ke Vertex AI Vector Search.
- Pelajari fungsi
COSINE_DISTANCE()
,EUCLIDEAN_DISTANCE()
, danDOT_PRODUCT()
GoogleSQL lebih lanjut. - Pelajari fungsi
spanner.cosine_distance()
PostgreSQL,spanner.euclidean_distance(), and spanner.dot_product()
lebih lanjut.