다음을 통해 공유


VECTOR_DISTANCE(Transact-SQL)

적용 대상:Microsoft Fabric Preview에서 SQL Server 2025(17.x) 미리 보기 Azure SQL DatabaseAzure SQL Managed Instance SQL 데이터베이스

이 함수는 VECTOR_DISTANCE 지정된 거리 메트릭을 사용하여 두 벡터 사이의 거리를 계산합니다. 벡터 거리는 항상 정확하며 사용 가능한 경우에도 벡터 인덱스는 사용하지 않습니다. 벡터 인덱스가 사용되어 대략적인 벡터 검색을 수행하려면 VECTOR_SEARCH 함수를 사용해야 합니다. 벡터 인덱싱 및 벡터 검색의 작동 방식과 정확한 검색과 근사 검색 간의 차이점에 대한 자세한 내용은 SQL Database 엔진의 벡터를 참조하세요.

Note

VECTOR_DISTANCESQL Server 2025 또는 Always-up-to-date업데이트 정책을 사용하여 Azure SQL Managed Instance에서 사용할 수 있습니다.

Syntax

Transact-SQL 구문 표기 규칙

VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )

Arguments

distance_metric

지정된 두 벡터 간의 거리를 계산하는 데 사용할 거리 메트릭의 이름을 가진 문자열입니다. 지원되는 거리 메트릭은 다음과 같습니다.

  • cosine - 코사인 거리
  • euclidean - 유클리드 거리
  • dot - (음수) 점 제품

vector1

벡터 데이터 형식으로 계산되는 식입니다.

vector2

벡터 데이터 형식으로 계산되는 식입니다.

거리 메트릭

Metric Description Range Examples
cosine 코사인(각도) 거리 [0, 2] 0: 동일한 벡터
2: 반대 벡터
euclidean 유클리드 거리 [0, +∞] 0: 동일한 벡터
dot 점 제품 기반 거리 표시,
의 점 곱을 계산하여 얻은
[-∞, +∞] 숫자가 작을수록 더 유사한 벡터가 표시됩니다.

반환 값

이 함수는 지정된 거리 메트릭을 사용하여 두 벡터 사이의 거리를 나타내는 스칼라 부동 소수 점 값을 반환합니다.

distance_metric 유효한 메트릭이 아니고 제공된 벡터가 벡터 데이터 형식이 아닌 경우 오류가 반환됩니다.

Examples

샘플에 사용된 데이터베이스의 세부 정보는 GitHub: 벡터 포함을 사용하여 Wikipedia 문서를 다운로드하고 가져옵니다.

위키백과 문서의 제목 포함을 저장하는 형식 wikipedia_articles 의 열 title_vector 이 있는 테이블 vector 이 있다고 가정합니다. title_vector 는 1,536차원의 벡터를 반환하는 포함 모델(예: text-embedding-ada-002 또는 text-embedding-3-small)을 사용하여 생성된 포함으로 간주됩니다.

엔드투엔드 솔루션을 비롯한 더 많은 예제를 보려면 Azure SQL Database 벡터 검색 샘플 GitHub 리포지토리로 이동합니다.

A. JSON 배열에서 벡터 만들기

다음 예제에서는 JSON 배열이 있는 문자열에서 3차원으로 벡터를 만듭니다.

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. 제목에 따라 상위 10개의 유사한 문서 반환

다음 예제에서는 타이틀 벡터 간의 코사인 거리를 기반으로 지정된 아티클에 가장 유사한 상위 10개의 아티클을 반환합니다.

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. 특정 벡터 거리를 기준으로 유사한 아티클 반환

다음 예제에서는 타이틀 벡터 간의 코사인 거리를 기반으로 지정된 아티클에 유사한 모든 아티클을 반환하고 거리가 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;