Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2025 (17.x) Preview
AzureSQL Database Azure SQL Managed Instance
SQL-database
in Microsoft Fabric Preview
De VECTOR_DISTANCE functie berekent de afstand tussen twee vectoren met behulp van een opgegeven afstandsmetriek. Vectorafstand is altijd exact en gebruikt geen vectorindex, zelfs als deze beschikbaar is. Als u een vectorindex wilt gebruiken en zo een geschatte vectorzoekopdracht wilt uitvoeren, moet u de VECTOR_SEARCH-functie gebruiken. Raadpleeg Vectoren in de SQL Database Engine voor meer informatie over de werking van vectorindexering en vectorzoekopdrachten en de verschillen tussen exacte en geschatte zoekopdrachten.
Note
VECTOR_DISTANCEis beschikbaar in Azure SQL Managed Instance met het updatebeleid voor SQL Server 2025 of Always-up-to-date update.
Syntax
Transact-SQL syntaxis-conventies
VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )
Arguments
distance_metric
Een tekenreeks met de naam van de metrische afstand die moet worden gebruikt om de afstand tussen de twee opgegeven vectoren te berekenen. De volgende metrische gegevens over afstand worden ondersteund:
-
cosine- Cosinusafstand -
euclidean- Euclidische afstand -
dot- (Negatief) Dot-product
vector1
Een expressie die het gegevenstype vector evalueert.
vector2
Een expressie die het gegevenstype vector evalueert.
Metrische gegevens over afstand
| Metric | Description | Range | Examples |
|---|---|---|---|
cosine |
Cosinusafstand (hoekig) | [0, 2] |
0: identieke vectoren2: tegengestelde vectoren |
euclidean |
Euclidische afstand | [0, +∞] |
0: identieke vectoren |
dot |
Dot product-gebaseerde indicatie van afstand, verkregen door de berekening van het negatieve puntproduct |
[-∞, +∞] | Kleinere getallen geven meer vergelijkbare vectoren aan |
Retourwaarde
De functie retourneert een scalaire float-waarde die de afstand tussen de twee vectoren aangeeft met behulp van de opgegeven afstandsmetrische waarde.
Er wordt een fout geretourneerd als distance_metric geen geldig metrisch gegeven is en als de opgegeven vectoren niet van het gegevenstype vector zijn.
Examples
Details van de database die in het voorbeeld wordt gebruikt, vindt u op GitHub: Download en importeer het Wikipedia-artikel met Vector Embeddings.
In voorbeelden wordt ervan uitgegaan dat er een tabel bestaat met wikipedia_articles een kolom title_vector van het type vector waarin de insluitingen van Wikipedia-artikelen van de titel worden opgeslagen.
title_vector wordt verondersteld een insluiting te zijn die wordt gegenereerd met een insluitmodel, zoals text-embedding-ada-002 of text-embedding-3-small, dat vectoren retourneert met 1536 dimensies.
Voor meer voorbeelden, waaronder end-to-end-oplossingen, gaat u naar de GitHub-opslagplaats Met voorbeelden van Azure SQL Database Vector Search.
Eén. Een vector maken op basis van een JSON-matrix
In het volgende voorbeeld wordt een vector gemaakt met drie dimensies van een tekenreeks met een JSON-matrix.
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. Top 10 vergelijkbare artikelen retourneren op basis van titels
In het volgende voorbeeld worden de tien populairste artikelen geretourneerd die het meest lijken op een bepaald artikel, op basis van de cosinusafstand tussen de titelvectoren.
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. Vergelijkbare artikelen retourneren op basis van specifieke vectorafstand
In het volgende voorbeeld worden alle vergelijkbare artikelen geretourneerd die vergelijkbaar zijn met een bepaald artikel, op basis van de cosinusafstand tussen de titelvectoren, waarbij alleen titels met een afstand kleiner dan 0,3 worden geselecteerd.
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;