Freigeben über


VECTOR_DISTANCE (Transact-SQL) (Vorschau)

Gilt für: Azure SQL Database Azure SQL Managed Instance

Hinweis

Dieser Datentyp befindet sich in der Vorschau und kann geändert werden. Lesen Sie die Nutzungsbedingungen für die Vorschau im Dokument Vereinbarungen zum Servicelevel (Service Level Agreements, SLAs) für Onlinedienste.

Berechnet den Abstand zwischen zwei Vektoren mithilfe einer angegebenen Entfernungsmetrik.

Syntax

Transact-SQL-Syntaxkonventionen

VECTOR_DISTANCE ( distance_metric, vector1, vector2 )

Argumente

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 zu einem Vektor im Binärformat ausgewertet wird.

Vector2

Ein Ausdruck, der zu einem Vektor im Binärformat ausgewertet wird.

Entfernungsmetriken

Metrik Beschreibung Range Beispiele
cosine Kosinusabstand (Winkel) [0, 2] 0: identische Vektoren
2: Entgegengesetzte Vektoren
euclidean Euklidischer Abstand [-∞, +∞] 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 Binärwerte keine gültigen Vektoren darstellen, wird ein Fehler zurückgegeben.

Beispiele

Überprüfen Sie die Azure SQL-Datenbank GitHub-Repository für Vektorsuchbeispiele, um End-to-End-Arbeitsbeispiele abzurufen.

Beispiele gehen davon aus, dass eine Mit einer Spalte title_vector vom Typ vector benannte wikipedia_articles 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 wie text-embedding-ada-002 oder text-embedding-3-small generiert wird, das Vektoren mit 1.536 Dimensionen zurückgibt.

Beispiel 1

Im folgenden Beispiel wird ein Vektor mit drei Dimensionen aus einer Zeichenfolge mit einem JSON-Array erstellt.

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;

Beispiel 2

Im folgenden Beispiel werden die 10 am häufigsten ähnlichen Artikel zu einem bestimmten Artikel zurückgegeben, basierend auf dem Kosinusabstand zwischen ihren Titelvektoren. Details zur im Beispiel verwendeten Datenbank finden Sie hier: Herunterladen und Importieren des Wikipedia-Artikels mit Vector Embeddings

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

Beispiel 3

Im folgenden Beispiel werden alle ähnlichen Artikel zu einem bestimmten Artikel zurückgegeben, basierend auf dem Kosinusabstand zwischen den Titelvektoren, wobei nur diejenigen 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