적용 대상: SQL Server 2025(17.x)
Microsoft Fabric에서Azure SQL Database
Azure SQL Managed Instance
SQL 데이터베이스 미리 보기
참고 항목
이 데이터 형식은 미리 보기 상태이며 변경될 수 있습니다. 온라인 서비스에 대한 SLA(서비스 수준 계약)에서 미리 보기 사용 약관을 읽어야 합니다.
지정된 거리 메트릭을 사용하여 두 벡터 사이의 거리를 계산합니다. 벡터 거리는 항상 정확하며 사용 가능한 경우에도 벡터 인덱스는 사용하지 않습니다. 벡터 인덱스가 사용되어 대략적인 벡터 검색을 수행하려면 VECTOR_SEARCH 함수를 사용해야 합니다. 벡터 인덱싱 및 벡터 검색의 작동 방식과 정확한 검색과 근사 검색 간의 차이점에 대한 자세한 내용은 SQL Database 엔진의 벡터를 참조하세요.
구문
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