Bagikan melalui


VECTOR_DISTANCE (Transact-SQL)

Berlaku untuk: Database SQL SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed Instancedi Microsoft Fabric

Fungsi menghitung VECTOR_DISTANCE jarak antara dua vektor menggunakan metrik jarak tertentu. Jarak vektor selalu tepat dan tidak menggunakan indeks vektor apa pun, bahkan jika tersedia. Untuk menggunakan indeks vektor dan dengan demikian melakukan perkiraan pencarian vektor, Anda harus menggunakan fungsi VECTOR_SEARCH . Untuk mempelajari selengkapnya tentang cara kerja pengindeksan vektor dan pencarian vektor, dan perbedaan antara pencarian yang tepat dan perkiraan, lihat Indeks pencarian vektor dan vektor di Mesin Database SQL.

Note

VECTOR_DISTANCEtersedia di Azure SQL Managed Instance dengan kebijakan pembaruanSQL Server 2025 atau Always-up-to-date.

Syntax

Konvensi sintaks transact-SQL

VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )

Arguments

distance_metric

String dengan nama metrik jarak yang akan digunakan untuk menghitung jarak antara dua vektor yang diberikan. Metrik jarak berikut didukung:

  • cosine - Jarak kosinus
  • euclidean - Jarak Euclidean
  • dot - (Negatif) Produk titik

vektor1

Ekspresi yang mengevaluasi ke jenis data vektor .

vektor2

Ekspresi yang mengevaluasi ke jenis data vektor .

Metrik jarak

Metric Description Range Examples
cosine Jarak kosinus (sudut) [0, 2] 0: vektor identik
2: vektor yang berlawanan
euclidean Jarak Euclidean [0, +∞] 0: vektor identik
dot Indikasi jarak berbasis produk titik,
diperoleh dengan menghitung produk titik negatif
[-∞, +∞] Angka yang lebih kecil menunjukkan lebih banyak vektor serupa

Mengembalikan nilai

Fungsi mengembalikan nilai float skalar yang mewakili jarak antara kedua vektor menggunakan metrik jarak yang ditentukan.

Kesalahan dikembalikan jika distance_metric bukan metrik yang valid dan jika vektor yang disediakan bukan dari jenis data vektor.

Examples

Detail database yang digunakan dalam sampel dapat ditemukan di GitHub: Unduh dan impor Artikel Wikipedia dengan Penyematan Vektor.

Contoh mengasumsikan keberadaan tabel bernama wikipedia_articles dengan kolom title_vector jenis vector yang menyimpan penyematan judul artikel Wikipedia. title_vector diasumsikan sebagai penyematan yang dihasilkan dengan model penyematan, seperti text-embedding-ada-002 atau text-embedding-3-small, yang mengembalikan vektor dengan 1.536 dimensi.

Untuk contoh lainnya, termasuk solusi end-to-end, buka repositori GitHub Sampel Pencarian Vektor Azure SQL Database.

A. Membuat vektor dari array JSON

Contoh berikut membuat vektor dengan tiga dimensi dari string dengan array JSON.

DECLARE @v1 AS VECTOR(2) = '[1,1]';
DECLARE @v2 AS VECTOR(2) = '[-1,-1]';

SELECT VECTOR_DISTANCE('euclidean', @v1, @v2) AS euclidean,
       VECTOR_DISTANCE('cosine', @v1, @v2) AS cosine,
       VECTOR_DISTANCE('dot', @v1, @v2) AS negative_dot_product;

B. Mengembalikan 10 artikel serupa teratas berdasarkan judul

Contoh berikut mengembalikan 10 artikel paling mirip teratas ke artikel tertentu, berdasarkan jarak kosinus antara vektor judul mereka.

DECLARE @v AS VECTOR(1536);

SELECT @v = title_vector
FROM [dbo].[wikipedia_articles]
WHERE title = 'Alan Turing';

SELECT TOP (10) id,
                title,
                VECTOR_DISTANCE('cosine', @v, title_vector) AS distance
FROM [dbo].[wikipedia_articles]
ORDER BY distance;

C. Mengembalikan artikel serupa berdasarkan jarak vektor tertentu

Contoh berikut mengembalikan semua artikel serupa ke artikel tertentu, berdasarkan jarak kosinus antara vektor judulnya, hanya memilih judul dengan jarak kurang dari 0,3.

DECLARE @v AS VECTOR(1536);

SELECT @v = title_vector
FROM [dbo].[wikipedia_articles]
WHERE title = 'Alan Turing';

SELECT id,
       title,
       VECTOR_DISTANCE('cosine', @v, title_vector) AS distance
FROM [dbo].[wikipedia_articles]
WHERE VECTOR_DISTANCE('cosine', @v, title_vector) < 0.3
ORDER BY distance;