Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2025 (17.x)
Azure SQL-Datenbank
AzureSQL Managed Instance
SQL SQL-Datenbank in Microsoft Fabric
Die VECTOR_DISTANCE Funktion berechnet den Abstand zwischen zwei Vektoren mithilfe einer angegebenen Entfernungsmetrik. Der Vektorabstand ist immer genau und verwendet keinen Vektorindex, auch wenn verfügbar. Um einen Vektorindex zu verwenden und damit eine ungefähre Vektorsuche durchzuführen, müssen Sie die VECTOR_SEARCH-Funktion verwenden. Weitere Informationen zur Funktionsweise der Vektorindizierung und Vektorsuche sowie der Unterschiede zwischen exakter und ungefährer Suche finden Sie unter Vektorsuche und Vektorindizes im SQL-Datenbankmodul.
Note
VECTOR_DISTANCEist in azure SQL Managed Instance mit der SQL Server 2025- oder Always-up-to-Updaterichtlinie verfügbar.
Syntax
Transact-SQL-Syntaxkonventionen
VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )
Arguments
distance_metric
Eine Zeichenfolge mit dem Namen der Entfernungsmetrik, die zum Berechnen des Abstands zwischen den beiden angegebenen Vektoren verwendet werden soll. Die folgenden Entfernungsmetriken werden unterstützt:
-
cosine- Kosinusabstand -
euclidean- Euklidischer Abstand -
dot- (Negativ) Punktprodukt
Vector1
Ein Ausdruck, der den Vektordatentyp auswertet.
Vector2
Ein Ausdruck, der den Vektordatentyp auswertet.
Entfernungsmetriken
| Metric | Description | Range | Examples |
|---|---|---|---|
cosine |
Kosinusabstand (Winkel) | [0, 2] |
0: identische Vektoren2: Entgegengesetzte Vektoren |
euclidean |
Euklidischer Abstand | [0, +∞] |
0: identische Vektoren |
dot |
Punkt produktbasierte Angabe des Abstands, erhalten durch Berechnung des negativen Punktprodukts |
[-∞, +∞] | Kleinere Zahlen deuten auf ähnliche Vektoren hin. |
Rückgabewert
Die Funktion gibt einen skalaren Float-Wert zurück, der den Abstand zwischen den beiden Vektoren mithilfe der angegebenen Entfernungsmetrik darstellt.
Wenn distance_metric keine gültige Metrik ist und die bereitgestellten Vektoren nicht vom Vektordatentyp stammen, wird ein Fehler zurückgegeben.
Examples
Details zur im Beispiel verwendeten Datenbank finden Sie auf GitHub: Laden Sie den Wikipedia-Artikel mit Vector Embeddings herunter und importieren Sie sie.
Beispiele gehen davon aus, dass eine Mit einer Spalte wikipedia_articles vom Typ title_vector benannte vector Tabelle vorhanden ist, in der die Einbettungen von Wikipedia-Artikeln des Titels gespeichert werden.
title_vector wird angenommen, dass es sich um eine einbettung handelt, die mit einem Einbettungsmodell generiert wird, z text-embedding-ada-002 . B. oder text-embedding-3-small, das Vektoren mit 1.536 Dimensionen zurückgibt.
Weitere Beispiele, einschließlich End-to-End-Lösungen, finden Sie im GitHub-Repository für Azure SQL-Datenbankvektorsuchbeispiele.
A. Erstellen eines Vektors aus einem JSON-Array
Im folgenden Beispiel wird ein Vektor mit drei Dimensionen aus einer Zeichenfolge mit einem JSON-Array erstellt.
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. Zurückgeben von 10 ähnlichen Artikeln basierend auf Titeln
Im folgenden Beispiel werden die 10 am häufigsten ähnlichen Artikel zu einem bestimmten Artikel zurückgegeben, basierend auf dem Kosinusabstand zwischen ihren Titelvektoren.
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. Zurückgeben ähnlicher Artikel basierend auf einem bestimmten Vektorabstand
Im folgenden Beispiel werden alle ähnlichen Artikel zu einem bestimmten Artikel zurückgegeben, basierend auf dem Kosinusabstand zwischen den Titelvektoren, wobei nur Titel mit einem Abstand kleiner als 0,3 ausgewählt werden.
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;