다음을 통해 공유


벡터 및 임베딩: FAQ(자주 묻는 질문)

적용 대상: Microsoft Fabric의 SQL Server 2025(17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL 데이터베이스

이 문서에는 SQL Database 엔진의 벡터 및 포함에 대한 질문과 대답이 포함되어 있습니다.

비고

벡터 기능은 Always-up-to-date 정책으로 구성된 Azure SQL Managed Instance에서 사용할 수 있습니다.

임베딩을 최신 상태로 유지하려면 어떻게 해야 하나요?

기본 데이터를 나타내는 인베딩(embedding)은 데이터에 변경이 있을 때마다 업데이트합니다. 이는 사용자가 생성한 콘텐츠 또는 자주 업데이트되는 데이터베이스와 같이 데이터가 동적인 시나리오에서 특히 중요합니다. 임베딩을 최신 상태로 유지하기 위한 여러 전략에 대해 자세히 알아보려면 데이터베이스 및 AI: 임베딩을 최신으로 유지하기 위한 솔루션을 참조하세요.

벡터 검색에 대한 오버헤드에는 주로 벡터 데이터 형식의 스토리지와 인덱싱 및 검색에 필요한 계산 리소스가 포함됩니다. 벡터 데이터 형식은 스토리지 측면에서 효율적이지만 정확한 오버헤드는 저장된 벡터의 크기(차원 수)에 따라 달라질 수 있습니다.

올바른 벡터 크기를 선택하는 방법에 대한 자세한 내용은 모델 및 차원 포함: 성능-리소스 사용률 최적화를 검토하세요.

SQL Server 데이터 페이지는 최대 8,060바이트를 보유할 수 있으므로 벡터의 크기는 단일 페이지에 저장할 수 있는 벡터 수에 영향을 줍니다. 예를 들어, 1,024차원의 벡터가 있을 때, 각 차원이 단일 정밀도 부동 소수점(4바이트)인 경우, 벡터의 총 크기는 4,104바이트(4096바이트 데이터 + 8바이트 헤더)입니다. 이렇게 하면 단일 페이지에 들어갈 수 있는 벡터 수가 1개로 제한됩니다.

어떤 포함 모델을 사용해야 하며 언제 사용해야 하나요?

사용할 수 있는 많은 포함 모델이 있으며 사용할 모델은 특정 사용 사례 및 처리 중인 데이터 형식에 따라 달라집니다. 일부 모델은 여러 언어를 지원하는 반면, 다른 모델은 다중 모드 데이터(텍스트, 이미지 등)를 지원합니다. 일부는 온라인에서만 사용할 수 있고, 다른 일부는 로컬로 실행할 수 있습니다.

모델 자체 외에도 모델의 크기와 모델에서 생성하는 차원 수를 고려합니다. 더 큰 모델은 더 나은 정확도를 제공할 수 있지만 더 많은 계산 리소스와 스토리지 공간이 필요하지만, 많은 경우 차원이 더 많기 때문에 일반적인 사용 사례의 경우 품질이 크게 변하지는 않습니다.

올바른 포함 모델을 선택하는 방법에 대한 자세한 내용은 모델 및 차원 포함: 성능-리소스 사용률 최적화를 참조하세요.

벡터에 단정밀도(4-바이트) 및 반정밀도(2 바이트) 부동 소수점 값을 사용할 시기를 결정하는 방법은 무엇입니까?

데이터베이스에 포함 벡터를 저장할 때 단정밀도()와 반정밀도(float32float16) 부동 소수점 중에서 선택하는 것은 종종 스토리지 효율성과 수치 충실도의 균형을 맞추기 위한 것입니다.

다행히 임베딩은 일반적으로 정밀도의 작은 변경에 매우 민감하지 않습니다.

포함은 의미 체계 검색, 권장 시스템 및 자연어 처리와 같은 작업에 사용되는 조밀한 벡터 표현입니다. 이러한 벡터는 작은 숫자 변형에 본질적으로 관대한 신경망의 출력인 경우가 많습니다. 결과적으로 float32에서 float16로 정밀도를 줄이는 것은 유사성 비교나 다운스트림 작업의 품질에 미치는 영향이 최소화되며, 이는 특히 추론 중에 두드러집니다.

사용하면 float16 스토리지 및 메모리 사용량을 크게 줄일 수 있으며, 이는 대규모 포함 데이터 세트를 사용할 때 특히 유용합니다.

스파스 벡터는 어떻습니까?

현재 SQL Database 엔진의 벡터 데이터 형식은 대부분의 요소가 0이 아닌 부동 소수점 숫자의 배열인 조밀한 벡터를 위해 설계되었습니다. 0이 다수 포함된 스파스 벡터는 네이티브로 지원되지 않습니다.

성능은 특정 사용 사례, 데이터 세트의 크기 및 쿼리의 복잡성에 따라 크게 달라질 수 있습니다. 그러나 SQL Server의 벡터 검색 기능은 검색 성능을 최적화하기 위해 인덱싱 기술을 활용하여 효율적이고 확장 가능하도록 설계되었습니다.

두 개 이상의 열이 있는 경우 임베딩을 생성하는 데 어떻게 해야 하나요?

포함을 생성하는 데 사용할 열이 여러 개 있는 경우 다음 두 가지 주요 옵션이 있습니다.

  • 각 열에 대해 하나의 임베딩을 만들거나
  • 여러 열의 값을 단일 문자열에 연결한 다음 연결된 문자열에 대한 단일 포함을 생성합니다.

두 가지 옵션 및 관련 데이터베이스 디자인 고려 사항에 대한 자세한 내용은 효율적이고 우아하게 모델링 포함을 참조하세요.

순위를 다시 지정하는 것은 어떨까요?

순위 다시 지정은 추가 조건 또는 모델에 따라 초기 결과를 다시 평가하여 검색 결과의 관련성을 향상시키는 데 사용되는 기술입니다. SQL Database 엔진에서 벡터 검색과 전체 텍스트(BM25 순위 제공) 또는 추가 SQL 쿼리 또는 기계 학습 모델을 결합하여 특정 비즈니스 논리 또는 사용자 기본 설정에 따라 결과를 구체화하여 순위를 다시 지정할 수 있습니다.

자세한 내용은 하이브리드 검색 및 RRF 다시 순위를 사용하여 검색 기능 향상을 검토하세요.

벡터 검색 시나리오에 대해 AI Search(현재 AI Foundry)와 SQL을 사용하는 경우는 언제인가요?

AI Search(현재 AI Foundry)는 벡터 검색, 자연어 처리 및 AI 기반 인사이트를 비롯한 고급 검색 시나리오를 위해 설계된 특수 서비스입니다. 다양한 AI 모델에 대한 기본 제공 지원, 고급 순위 알고리즘 및 다른 AI 서비스와의 통합과 같은 지능형 검색 애플리케이션을 빌드하기 위한 포괄적인 기능 집합을 제공합니다.

SQL Database 엔진은 모든 종류의 데이터를 저장하고 구조화 및 비정형 쿼리를 실행하고 해당 데이터에 대해 벡터 검색을 수행하는 기능을 제공합니다. 이러한 모든 데이터를 함께 검색해야 하는 시나리오에 적합하며, 아키텍처를 복잡하게 만드는 별도의 검색 서비스를 사용하지 않으려는 경우 적합합니다. SQL Database 엔진은 RLS(행 수준 보안), DDM(동적 데이터 마스킹), Always Encrypted, 변경할 수 없는 원장 테이블 및 TDE(투명한 데이터 암호화)와 같이 데이터가 항상 보호되도록 하는 중요한 엔터프라이즈 보안 기능을 제공합니다.

다음은 벡터, 지리 공간적, 구조적 데이터 및 구조화되지 않은 데이터를 한 번에 결합하는 Azure SQL 또는 SQL Server에서 실행할 수 있는 단일 쿼리의 예입니다. 샘플 쿼리는 레스토랑의 설명, 레스토랑 위치 및 사용자의 기본 설정에 따라 상위 50개의 가장 관련성이 높은 레스토랑을 검색하고, 벡터 검색을 사용하여 위치에 대한 설명 및 지리 공간적 검색을 사용하고, 별 번호, 리뷰 수, 범주 등을 기준으로 필터링합니다.

DECLARE @p AS GEOGRAPHY = GEOGRAPHY::Point(47.6694141, -122.1238767, 4326);
DECLARE @e AS VECTOR(1536) = AI_GENERATE_EMBEDDINGS('I want to eat a good focaccia' USE MODEL Text3Embedding);

SELECT TOP (50) b.id AS business_id,
                b.name AS business_name,
                r.id AS review_id,
                r.stars,
                r.review,
                VECTOR_DISTANCE('cosine', re.embedding, @e) AS semantic_distance,
                @p.STDistance(geo_location) AS geo_distance
FROM dbo.reviews AS r
     INNER JOIN dbo.reviews_embeddings AS re
         ON r.id = re.review_id
     INNER JOIN dbo.business AS b
         ON r.business_id = b.id
WHERE b.city = 'Redmond'
      AND @p.STDistance(b.geo_location) < 5000 -- 5 km
      AND r.stars >= 4
      AND b.reviews >= 30
      AND JSON_VALUE(b.custom_attributes, '$.local_recommended') = 'true'
      AND VECTOR_DISTANCE('cosine', re.embedding, @e) < 0.2
ORDER BY semantic_distance DESC;

이전 샘플에서, Exact Nearest Neighbor (ENN) 검색은 임베딩의 의미적 거리를 기반으로 하여 가장 관련성이 높은 리뷰를 찾는 데 사용되며, 또한 지리공간적 거리와 기타 비즈니스 속성으로 필터링합니다. 이 쿼리는 벡터 검색과 기존 SQL 기능을 결합하여 풍부하고 효율적인 검색 환경을 만드는 기능을 보여 줍니다.

ANN(근사 최근접 이웃) 검색을 사용하려면 reviews_embeddings 테이블에 벡터 인덱스를 생성하고 VECTOR_SEARCH 함수를 사용하여 검색을 수행할 수 있습니다.

자율 학습 Azure SQL Cryptozoology AI Embeddings 랩을 검토하세요.