Aracılığıyla paylaş


VECTOR_DISTANCE (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2025 (17.x) Microsoft Fabric'teAzure SQL VeritabanıAzure SQL Yönetilen Örneği SQL veritabanı

işlevi, VECTOR_DISTANCE belirtilen uzaklık ölçümünü kullanarak iki vektör arasındaki uzaklığı hesaplar. Vektör uzaklığı her zaman kesindir ve kullanılabilir olsa bile herhangi bir vektör dizini kullanmaz. Vektör dizini kullanmak ve dolayısıyla yaklaşık vektör araması yapmak için VECTOR_SEARCH işlevini kullanmanız gerekir. Vektör dizin oluşturma ve vektör aramanın nasıl çalıştığı ve tam ve yaklaşık arama arasındaki farklar hakkında daha fazla bilgi edinmek için SQL Veritabanı Altyapısı'nda Vektör araması ve vektör dizinleri bölümüne bakın.

Note

VECTOR_DISTANCE , SQL Server 2025 veya Always-up-to-dategüncelleştirme ilkesiyle Azure SQL Yönetilen Örneği'nde kullanılabilir.

Syntax

Transact-SQL söz dizimi kuralları

VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )

Arguments

distance_metric

Verilen iki vektör arasındaki uzaklığı hesaplamak için kullanılacak uzaklık ölçümünün adını içeren bir dize. Aşağıdaki uzaklık ölçümleri desteklenir:

  • cosine - Kosinüs uzaklığı
  • euclidean - Öklid uzaklığı
  • dot - (Negatif) Noktalı ürün

vektör1

Vektör veri türü olarak değerlendirilen bir ifade.

vektör2

Vektör veri türü olarak değerlendirilen bir ifade.

Mesafe ölçümleri

Metric Description Range Examples
cosine Kosinüs (açısal) uzaklık [0, 2] 0: özdeş vektörler
2: karşıt vektörler
euclidean Öklid uzaklığı [0, +∞] 0: özdeş vektörler
dot Noktalı ürün tabanlı mesafe göstergesi,
negatif nokta ürünü hesaplanarak elde edilir
[-∞, +∞] Daha küçük sayılar daha benzer vektörleri gösterir

Dönüş değeri

İşlev, belirtilen uzaklık ölçümünü kullanarak iki vektör arasındaki uzaklığı temsil eden bir skaler float değeri döndürür.

distance_metric geçerli bir ölçüm değilse ve sağlanan vektörler vektör veri türünde değilse bir hata döndürülür.

Examples

Örnekte kullanılan veritabanının ayrıntıları GitHub'da bulunabilir: Vektör Eklemeleri ile Wikipedia Makalesini indirin ve içeri aktarın.

Örneklerde, başlığın Wikipedia makalelerinin eklemelerini depolayan türünde wikipedia_articles bir sütuna title_vector sahip adlı vector bir tablonun varlığı varsayılır. title_vector1.536 boyutlu vektörler döndüren veya text-embedding-ada-002gibi text-embedding-3-small bir ekleme modeliyle oluşturulan bir ekleme olduğu varsayılır.

Uçtan uca çözümler de dahil olmak üzere daha fazla örnek için Azure SQL Veritabanı Vektör Arama Örnekleri GitHub deposuna gidin.

A. JSON dizisinden vektör oluşturma

Aşağıdaki örnek, JSON dizisine sahip bir dizeden üç boyutlu bir vektör oluşturur.

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. Başlıklara göre ilk 10 benzer makale döndür

Aşağıdaki örnek, başlık vektörleri arasındaki kosinüs uzaklığı temelinde belirli bir makaleye en çok benzeyen 10 makaleyi döndürür.

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. Belirli vektör uzaklığı temelinde benzer makaleler döndür

Aşağıdaki örnek, yalnızca 0,3'ten küçük uzaklığa sahip başlıkları seçerek başlık vektörleri arasındaki kosinüs uzaklığı temelinde belirli bir makaleye benzer tüm makaleleri döndürür.

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;