Sdílet prostřednictvím


VECTOR_DISTANCE (Transact-SQL)

Platí pro: SQL Server 2025 (17.x) Azure SQL Database Azure SQLManaged InstanceSQL Database v Microsoft Fabric

Funkce VECTOR_DISTANCE vypočítá vzdálenost mezi dvěma vektory pomocí zadané metriky vzdálenosti. Vektorová vzdálenost je vždy přesná a nepoužívá žádný vektorový index, i když je k dispozici. Pokud chcete použít vektorový index a provést přibližné vektorové vyhledávání, musíte použít funkci VECTOR_SEARCH . Další informace o tom, jak funguje vektorové indexování a vektorové vyhledávání, a rozdíly mezi přesným a přibližným vyhledáváním najdete v tématu Vektorové vyhledávání a vektorové indexy v databázovém stroji SQL.

Note

VECTOR_DISTANCEje k dispozici ve službě Azure SQL Managed Instance se zásadami aktualizaceSQL Serveru 2025 nebo Always-up-to-date.

Syntax

Transact-SQL konvence syntaxe

VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )

Arguments

distance_metric

Řetězec s názvem metriky vzdálenosti, který se má použít k výpočtu vzdálenosti mezi těmito dvěma vektory. Podporují se následující metriky vzdálenosti:

  • cosine - Kosinus vzdálenost
  • euclidean - Euklidská vzdálenost
  • dot - (záporná) tečka

vector1

Výraz, který se vyhodnotí jako vektorový datový typ.

vector2

Výraz, který se vyhodnotí jako vektorový datový typ.

Metriky vzdálenosti

Metric Description Range Examples
cosine Kosinus (úhlový) vzdálenost [0, 2] 0: Identické vektory
2: protichůdné vektory
euclidean Euklidská vzdálenost [0, +∞] 0: Identické vektory
dot Indikace vzdálenosti na základě tečky,
získané výpočtem záporného tečkového výrobku
[-∞, +∞] Menší čísla označují více podobných vektorů.

Návratová hodnota

Funkce vrátí skalární hodnotu float , která představuje vzdálenost mezi dvěma vektory pomocí zadané metriky vzdálenosti.

Pokud distance_metric není platná metrika a zadané vektory nejsou datovým typem vektoru, vrátí se chyba.

Examples

Podrobnosti o databázi použité v ukázce najdete na GitHubu: Stáhněte a importujte článek Wikipedie s funkcemi Vector Embeddings.

Příklady předpokládají existenci tabulky s wikipedia_articles názvem sloupcem title_vector typu vector , který ukládá vkládání nadpisů článků na Wikipedii. title_vector předpokládá se, že se jedná o vložený vygenerovaný modelem vkládání, například text-embedding-ada-002 nebo text-embedding-3-small, který vrací vektory s 1 536 dimenzemi.

Další příklady, včetně kompletních řešení, najdete v úložišti Azure SQL Database Vector Search na GitHubu.

A. Vytvoření vektoru z pole JSON

Následující příklad vytvoří vektor se třemi dimenzemi z řetězce s polem JSON.

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. Vrácení prvních 10 podobných článků na základě názvů

Následující příklad vrátí prvních 10 nejvíce podobných článků k danému článku na základě kosinus vzdálenosti mezi jejich titulní vektory.

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. Vrácení podobných článků na základě specifické vektorové vzdálenosti

Následující příklad vrátí všechny podobné články k danému článku na základě kosinus vzdálenosti mezi jejich titulní vektory a výběr pouze názvů s vzdáleností menší než 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;