다음을 통해 공유


SQL 데이터베이스 엔진 벡터 개요

적용 대상: Azure SQL Database

벡터는 일부 데이터에 대한 정보를 나타낼 수 있는 정렬된 숫자 배열(일반적으로 부동 소수)입니다. 예를 들어 이미지를 픽셀 값의 벡터로 표시하거나 텍스트 문자열을 벡터 또는 ASCII 값으로 나타낼 수 있습니다. 데이터를 벡터로 변환하는 프로세스를 벡터화라고 합니다.

포함

포함은 데이터의 중요한 기능을 나타내는 벡터입니다. 포함은 딥 러닝 모델을 사용하여 학습되는 경우가 많으며, 기계 학습 및 AI 모델은 이를 기능으로 활용했습니다. 포함은 유사한 개념 간의 의미 체계 유사성을 캡처할 수도 있습니다. 예를 들어 단어 personhuman에 대한 포함을 생성할 때 단어가 의미상 유사하므로 해당 포함(벡터 표현)이 값에서 유사할 것으로 예상합니다.

Azure OpenAI는 텍스트 데이터에서 포함을 만들기 위한 모델을 제공합니다. 서비스는 텍스트를 토큰으로 나누고 OpenAI에서 미리 학습한 모델을 사용하여 포함을 생성합니다. 자세한 내용은 Azure OpenAI를 사용하여 임베드 만들기를 참조하세요.

포함이 생성되면 SQL Server 데이터베이스에 저장할 수 있습니다. 이를 통해 임베딩을 나타내는 데이터와 함께 저장하고 벡터 검색 쿼리를 수행하여 유사한 데이터 요소를 찾을 수 있습니다.

벡터 검색은 특정 쿼리 벡터와 유사한 데이터 세트의 모든 벡터를 찾는 프로세스를 나타냅니다. 따라서 단어 human 에 대한 쿼리 벡터는 전체 데이터 세트에서 유사한 벡터를 검색하므로 유사한 단어를 검색합니다. 이 예제에서는 단어를 person 가까운 일치 항목으로 찾아야 합니다. 이 근접성 또는 거리는 코사인 거리와 같은 거리 메트릭을 사용하여 측정됩니다. 벡터가 가까울수록 더 유사합니다.

SQL Server는 벡터 데이터 형식을 통해 벡터대한 기본 제공 지원을 제공합니다. 벡터는 최적화된 이진 형식으로 저장되지만 편의를 위해 JSON 배열로 노출됩니다. 벡터의 각 요소는 단정밀도(4바이트) 부동 소수점 값을 사용하여 저장됩니다. 데이터 형식과 함께 벡터에서 작동하는 전용 함수가 있습니다. 예를 들어 함수를 사용하여 VECTOR_DISTANCE 두 벡터 사이의 거리를 찾을 수 있습니다. 이 함수는 지정한 거리 메트릭에 따라 두 벡터 사이의 거리가 있는 스칼라 값을 반환합니다.

벡터는 일반적으로 부동 소수 자릿수 배열로 관리되므로 벡터 만들기는 단순히 JSON 배열을 벡터 데이터 형식으로 캐스팅하기만 하면 됩니다. 예를 들어 다음 코드는 JSON 배열에서 벡터를 만듭니다.

SELECT CAST('[1.0, -0.2, 30]' AS VECTOR(3)) AS vector;

또는 암시적 캐스팅 사용

DECLARE @v VECTOR(3) = '[1.0, -0.2, 30]';
SELECT @v;

벡터를 JSON 배열로 변환하는 경우도 마찬가지입니다.

DECLARE @v VECTOR(3) = '[1.0, -0.2, 30]';
SELECT CAST(@v AS NVARCHAR(MAX)) AS vector;

제한 사항

현재 미리 보기에서 JSON 데이터 형식으로의 캐스팅은 아직 지원되지 않습니다. 해결 방법은 먼저 NVARCHAR(MAX)에서 JSON으로/에서 변환하는 것입니다. 예를 들어 벡터를 JSON 형식으로 변환하려면 다음을 수행합니다.

DECLARE @v VECTOR(3) = '[1.0, -0.2, 30]';
SELECT CAST(CAST(@v AS NVARCHAR(MAX)) AS JSON) AS j;

JSON 형식에서 벡터로 변환하려면 다음을 수행합니다.

DECLARE @j JSON = JSON_ARRAY(1.0, -0.2, 30)
SELECT CAST(CAST(@j AS NVARCHAR(MAX)) AS VECTOR(3)) AS v;

SQL Server에서 벡터를 사용하는 방법에 대한 자세한 내용은 다음 문서에서 확인할 수 있습니다.