다음을 통해 공유


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

적용 대상: Azure SQL Database Azure SQL Managed Instance

참고 항목

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

지정된 거리 메트릭을 사용하여 두 벡터 사이의 거리를 계산합니다.

구문

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 유효한 메트릭이 아니고 제공된 이진 값이 유효한 벡터를 나타내지 않는 경우 오류가 반환됩니다.

예제

Azure SQL Database 벡터 검색 샘플 GitHub 리포지토리를 검토하여 엔드투엔드 작업 샘플을 가져옵니다.

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

예 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개의 아티클을 반환합니다. 샘플에 사용된 데이터베이스의 세부 정보는 다음에서 찾을 수 있습니다. 벡터 포함을 사용하여 Wikipedia 문서 다운로드 및 가져오기

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