Fungsi COSINE_DISTANCE menghitung jarak cosinus antara dua vektor.
Kemiripan cosinus didasarkan pada sudut antara dua vektor dalam ruang multidimensi, terlepas dari besarannya. Nilai ini dihitung dengan membagi hasil kali dalam (inner product) kedua vektor dengan hasil kali panjangnya. Kemiripan cosinus selalu berada dalam interval [-1, 1]. Sebagai contoh, dua vektor identik memiliki kemiripan cosinus sebesar 1, dua vektor yang saling tegak lurus memiliki kemiripan cosinus sebesar 0, dan dua vektor yang arahnya berlawanan memiliki kemiripan cosinus sebesar -1.
Sintaksis
FLOAT COSINE_DISTANCE( <vector>, <vector> )Parameter
vector: Wajib. Vektor bertipe data VECTOR.
Nilai kembalian
Mengembalikan jarak cosinus antara dua vektor input sebagai nilai FLOAT dalam rentang [0, 2].
Pengoptimalan fungsi vektor dapat menyebabkan sedikit kehilangan presisi bilangan titik mengambang, dengan margin kesalahan maksimum sebesar 1e-4.
Contoh
-- Aktifkan tipe data VECTOR.
set odps.sql.type.vector.enable=true;
set odps.sql.type.system.odps2=true;
-- Siapkan data.
CREATE TABLE vectors (a VECTOR(FLOAT, 3), b VECTOR(FLOAT, 3));
INSERT INTO vectors SELECT CAST(ARRAY(1.1,2.2,3.0) AS VECTOR(FLOAT,3)), CAST(ARRAY(1.0,1.0,1.0) AS VECTOR(FLOAT,3));
INSERT INTO vectors SELECT CAST(ARRAY(1.0,2.2,3.0) AS VECTOR(FLOAT,3)), CAST(ARRAY(4.0,6.0,8.0) AS VECTOR(FLOAT,3));
SELECT a, COSINE_DISTANCE(a, CAST(ARRAY(1.0,2.0,3.0) AS VECTOR(FLOAT, 3))) AS similarity
FROM vectors
ORDER BY similarity DESC
LIMIT 1;
-- Result:
+------+------------+
| a | similarity |
+------+------------+
| [1.1, 2.2, 3] | 0.0010684728622436523 |
+------+------------+