Megosztás a következőn keresztül:


VECTOR_DISTANCE (Transact-SQL)

A következőkre vonatkozik: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Database a Microsoft Fabricben

A VECTOR_DISTANCE függvény kiszámítja a két vektor közötti távolságot egy megadott távolságmetrika használatával. A vektor távolsága mindig pontos, és nem használ vektorindexet, még akkor sem, ha elérhető. Ahhoz, hogy vektorindexet használjon, és így hozzávetőleges vektorkeresést hajtson végre, a VECTOR_SEARCH függvényt kell használnia. Ha többet szeretne megtudni a vektorindexelés és a vektorkeresés működéséről, valamint a pontos és közelítő keresés közötti különbségekről, tekintse meg a vektorkeresést és a vektorindexeket az SQL Database Engine-ben.

Note

VECTOR_DISTANCE a felügyelt Azure SQL-példányban az SQL Server 2025 vagy az Always-up-todátumfrissítésiszabályzattal érhető el.

Syntax

Transact-SQL szintaxis konvenciók

VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )

Arguments

distance_metric

A két vektor közötti távolság kiszámításához használandó távolságmetrika nevével rendelkező sztring. A következő távolságmetrikák támogatottak:

  • cosine - Koszinusz távolság
  • euclidean - Euklideszi távolság
  • dot - (Negatív) Pont termék

vektor1

Vektor adattípusra kiértékelt kifejezés.

vektor2

Vektor adattípusra kiértékelt kifejezés.

Távolsági metrikák

Metric Description Range Examples
cosine Koszinusz (szögletes) távolság [0, 2] 0: azonos vektorok
2: ellentétes vektorok
euclidean Euklideszi távolság [0, +∞] 0: azonos vektorok
dot Pontalapú távolság jelzése,
a negatív pont szorzat kiszámításával nyerhető
[-∞, +∞] A kisebb számok több hasonló vektort jeleznek

Visszaadott érték

A függvény egy skaláris lebegőpontos értéket ad vissza, amely a két vektor közötti távolságot jelöli a megadott távolságmetrika használatával.

Hiba jelenik meg, ha distance_metric nem érvényes metrika, és ha a megadott vektorok nem vektor adattípusúak.

Examples

A mintában használt adatbázis részletei a GitHubon találhatók: Töltse le és importálja a Wikipédiából származó cikket vektoros beágyazásokkal.

A példák feltételezik, hogy létezik olyan tábla wikipedia_articles , amelynek neve egy olyan oszlop title_vector , vector amely a Wikipédia-cikkek címbe ágyazását tárolja. title_vector a függvény egy beágyazási modellel létrehozott beágyazást feltételez, amely text-embedding-ada-002text-embedding-3-small1536 dimenziójú vektorokat ad vissza.

További példákat, például a végpontok közötti megoldásokat az Azure SQL Database Vektorkeresési minták GitHub-adattárában találja.

A. Vektor létrehozása JSON-tömbből

Az alábbi példa egy JSON-tömböt tartalmazó sztringből három dimenzióval rendelkező vektort hoz létre.

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. Az első 10 hasonló cikk visszaadása címek alapján

Az alábbi példa a címvektorok közötti koszinusz távolság alapján adja vissza az első 10 legtöbb hasonló cikket egy adott cikkhez.

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. Hasonló cikkeket ad vissza adott vektortávolság alapján

Az alábbi példa az összes hasonló cikket visszaadja egy adott cikkhez a címvektorok közötti koszinusz távolság alapján, és csak a 0,3-nál kisebb távolságú címeket választja ki.

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;