SQL Server 벡터 인덱스 및 검색 기능 개선
적용 대상: Azure SQL Database, SQL Database in Microsoft Fabric
SQL Server (온프레미스)에는 아직 초기 기능이 적용되어 있습니다.
올해 2026년 초에 진행한 SQL Server 2025 New Features 세미나에서 SQL Server와 AI 통합이라는 주제로 새로 도입된 벡터 데이터베이스 기능을 소개했었습니다.
초기 릴리스에서 가장 아쉬웠던 부분은 테이블에 벡터 인덱스를 생성하면 이후 DML(Insert/Update/Delete)과 같은 데이터 변경 작업을 할 수가 없다는 것입니다 즉 읽기 전용 테이블이 되는 것이죠 이를 포함해서 우선 Azure SQL Database에 적용된 개선 사항들을 테스트해 봤습니다 그 내용들을 대략적으로 정리하고 공유합니다.
벡터 인덱스 개선
우선 벡터 인덱스 관련 개선 또는 변경 사항들은 다음과 같습니다.
- 구조 변경
따라서 기존 생성된 인덱스는 삭제 후 재 생성하는 방식으로 Migration 해야 합니다.
- 성능 개선
인덱스 처리, 검색, 실행 계획 최적화 측면에서 개선되었습니다. 벡터 인덱스와 기존 B-Tree 인덱스를 함께 사용할 수 있습니다. - DML 지원
이제 벡터 인덱스 생성된 상태에서 테이블 데이터 변경이 지원됩니다. - 최소 100건 이상 필수
“메시지 42266, 수준 16, 상태 1, 줄 147
Cannot create a vector index. The table contains only 3 rows with non-null vectors, but at least 100 are required for vector index creation.”
벡터 검색 개선
VECTOR_SEARCH() 함수를 통한 벡터 데이터 검색 기능의 개선은 다음과 같습니다.
구문.
SELECT TOP (N) WITH APPROXIMATE
column_list
FROM VECTOR_SEARCH(
TABLE = object [ AS source_table_alias ]
, COLUMN = vector_column
, SIMILAR_TO = query_vector
, METRIC = { 'cosine' | 'dot' | 'euclidean' }
) [ AS result_table_alias ]
[ WHERE predicate ]
ORDER BY distance;- TOP은 SELECT 절로 이동
구문에서 보듯이 이전에 VECTOR_SEARCH() 함수 내부에 있던 TOP 문이 SELECT 절에 지정합니다. 더불어 ANN(근사 최근접 이웃) 검색시에는 WITH APPROX[IMATE] 옵션을 지정합니다 그렇치 않으면 kNN 검색이 사용될 수 있습니다. - WITH (FORCE_ANN_ONLY) 테이블 힌트 추가
쿼리가 ANN 검색을 사용하도록 강제하는 힌트입니다 - ORDER BY 절 필수
바뀌었습니다, 설명이 따로 필요 없죠? - Iterative Filtering(일명 Filter Pushdown) 지원
이전에는 벡터 검색을 통한 결과로 TOP=N을 처리하고 이후 WHERE 절 검색 조건이 적용되었습니다 따라서 결과 건 수나 데이터 일관성에 차이가 발생합니다. 이제는 벡터 검색 시 WHERE 절 검색 조건을 고려한 결과를 출력합니다. (첨언. 테스트 결과 실행 계획과 벡터 검색 결과 수에서 이전과 차이가 보이지만 명확히 새로운 동작을 설명할만한 항목은 보이지 않았습니다) - 쿼리 최적화
검색 방법 결정에 따라 벡터 인덱스와 기존의 B-Tree 인덱스를 어떻게 사용할 것인지 쿼리 최적화가 판단합니다.
마치면서
SQL Server에서 벡터 데이터와 검색을 구현하고 싶은 사용자 입장에서는 벡터 인덱스로 데이터 변경을 할 수 없다면 적지 않은 걸림돌이 될 것으로 예상되었습니다. 이를 포함해서 사용자의 요구 사항과 기능들이 개선되는 것이 매우 반가운 소식입니다. 도움이 되시길 바랍니다.


