Dela via


VECTOR_DISTANCE (Transact-SQL)

Gäller för: SQL Server 2025 (17.x) Förhandsversion av Azure SQL DatabaseAzure SQL Managed InstanceSQL Database i Förhandsversion av Microsoft Fabric

Funktionen VECTOR_DISTANCE beräknar avståndet mellan två vektorer med ett angivet avståndsmått. Vektoravståndet är alltid exakt och använder inget vektorindex, även om det är tillgängligt. För att kunna använda ett vektorindex och därmed utföra en ungefärlig vektorsökning måste du använda funktionen VECTOR_SEARCH . Mer information om hur vektorindexering och vektorsökning fungerar och skillnaderna mellan exakt och ungefärlig sökning finns i Vektorer i SQL Database Engine.

Note

VECTOR_DISTANCEär tillgängligt i Azure SQL Managed Instance med sql Server 2025- eller always-up-to-date update-principen.

Syntax

Transact-SQL syntaxkonventioner

VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )

Arguments

distance_metric

En sträng med namnet på det avståndsmått som ska användas för att beräkna avståndet mellan de två angivna vektorerna. Följande avståndsmått stöds:

  • cosine - Cosinnavstånd
  • euclidean - Euklidiska avstånd
  • dot - (Negativ) Punktprodukt

vektor1

Ett uttryck som utvärderas till vektordatatyp .

vektor2

Ett uttryck som utvärderas till vektordatatyp .

Avståndsmått

Metric Description Range Examples
cosine Cosininavstånd (angular) [0, 2] 0: identiska vektorer
2: motsatta vektorer
euclidean Euklidiska avstånd [0, +∞] 0: identiska vektorer
dot Punktproduktbaserad indikation på avstånd,
erhålls genom att beräkna den negativa punktprodukten
[-∞, +∞] Mindre tal indikerar mer liknande vektorer

Returvärde

Funktionen returnerar ett skalärt flyttalvärde som representerar avståndet mellan de två vektorerna med det angivna avståndsmåttet.

Ett fel returneras om distance_metric inte är ett giltigt mått och om de angivna vektorerna inte är av vektordatatypen.

Examples

Information om databasen som används i exemplet finns på GitHub: Ladda ned och importera Wikipedia-artikeln med vektorinbäddningar.

Exempel förutsätter att det finns en tabell med namnet wikipedia_articles med en kolumn title_vector av typen vector som lagrar rubrikens inbäddningar av Wikipedia-artiklar. title_vector antas vara en inbäddning som genereras med en inbäddningsmodell, som text-embedding-ada-002 eller text-embedding-3-small, som returnerar vektorer med 1 536 dimensioner.

Om du vill ha fler exempel, inklusive lösningar från slutpunkt till slutpunkt, går du till GitHub-lagringsplatsen Azure SQL Database Vector Search Samples.

A. Skapa en vektor från en JSON-matris

I följande exempel skapas en vektor med tre dimensioner från en sträng med en JSON-matris.

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. Returnera topp 10 liknande artiklar baserat på rubriker

I följande exempel returneras de 10 mest liknande artiklarna till en viss artikel, baserat på cosinéavståndet mellan deras titelvektorer.

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. Returnera liknande artiklar baserat på specifikt vektoravstånd

I följande exempel returneras alla liknande artiklar till en viss artikel, baserat på cosinéavståndet mellan deras titelvektorer och väljer endast rubriker med ett avstånd som är mindre än 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;