VECTOR_DISTANCE(Transact-SQL)(미리 보기)
적용 대상: Azure SQL Database Azure SQL Managed Instance
참고 항목
이 데이터 형식은 미리 보기 상태이며 변경될 수 있습니다. 온라인 서비스용 SLA(서비스 수준 계약) 문서에서 미리 보기 사용 약관 을 읽어야 합니다 .
지정된 거리 메트릭을 사용하여 두 벡터 사이의 거리를 계산합니다.
구문
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