Bagikan melalui


VECTOR_DISTANCE (T-SQL) (Pratinjau)

Berlaku untuk: Pratinjau SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL database di Microsoft Fabric

Catatan

Jenis data ini dalam pratinjau dan dapat berubah. Pastikan untuk membaca persyaratan penggunaan pratinjau dalam Perjanjian Tingkat Layanan (SLA) untuk Layanan Online.

Menghitung 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 Vektor di Mesin Database SQL.

Sintaks

Konvensi sintaks transact-SQL

VECTOR_DISTANCE ( distance_metric, vector1, vector2 )

Argumen

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

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

Nilai hasil

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.

Contoh

Detail database yang digunakan dalam sampel dapat ditemukan di sini: 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.

Contoh 1

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

DECLARE @v1 VECTOR(2) = '[1,1]';
DECLARE @v2 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;

Contoh 2

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

Contoh 3

Contoh berikut mengembalikan semua artikel serupa ke artikel tertentu, berdasarkan jarak kosinus antara vektor judulnya, hanya memilih yang memiliki 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