다음을 통해 공유


VECTOR_DISTANCE(Transact-SQL)(미리 보기)

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

참고 항목

이 데이터 형식은 미리 보기 상태이며 변경될 수 있습니다. 온라인 서비스에 대한 SLA(서비스 수준 계약)에서 미리 보기 사용 약관을 읽어야 합니다.

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

구문

Transact-SQL 구문 표기 규칙

VECTOR_DISTANCE ( distance_metric, vector1, vector2 )

인수

distance_metric

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

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

vector1

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

vector2

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

거리 메트릭

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

반환 값

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

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

예제

샘플에 사용된 데이터베이스의 세부 정보는 다음에서 찾을 수 있습니다. 벡터 포함을 사용하여 Wikipedia 문서 다운로드 및 가져오기

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

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

예 1

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

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;

예제 2

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

예제 3

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