벡터 데이터 타입¶
이 항목에서는 벡터 데이터 타입에 대해 설명합니다.
데이터 타입¶
Snowflake는 단일 벡터 데이터 타입 VECTOR를 지원합니다.
참고
VECTOR 데이터 타입은 SQL, Python 커넥터 및 Snowpark Python 라이브러리에서만 지원됩니다. 다른 언어는 지원되지 않습니다.
VECTOR¶
VECTOR 데이터 타입을 사용하면 Snowflake는 벡터를 효율적으로 인코딩하고 처리합니다. 이 데이터 타입은 RAG 기반 애플리케이션과 같은 의미 체계 벡터 검색 및 검색 애플리케이션과 벡터 처리 애플리케이션의 벡터에 대한 일반적인 연산을 지원합니다.
VECTOR 타입을 지정하려면 다음 구문을 사용합니다.
VECTOR( <type>, <dimension> )
여기서
type
은 32비트 정수 또는 32비트 부동소수점 숫자일 있는 요소의 Snowflake 데이터 타입입니다.다음 값 중 하나를 지정할 수 있습니다.
INT
FLOAT
dimension
은 벡터의 차원(길이)입니다. 이는 최대값이 4096인 양의 정수 값이어야 합니다.
참고
직접 벡터 비교(예: v1 < v2)는 바이트 단위의 사전식 비교이며 결정론적이지만 숫자 비교에서 기대할 수 있는 결과를 생성하지 않습니다. 따라서 ORDER BY 절에서 VECTOR 열을 사용할 수 있지만 벡터 비교의 경우 제공되는 벡터 유사성 함수 를 사용하십시오.
벡터의 올바른 정의의 예는 다음과 같습니다.
256개의 32비트 부동 소수점 값 벡터를 정의합니다.
VECTOR(FLOAT, 256)
16개의 32비트 정수 값의 벡터를 정의합니다.
VECTOR(INT, 16)
다음은 벡터의 잘못된 정의의 예입니다.
잘못된 값 유형을 사용하는 벡터 정의:
VECTOR(STRING, 256)
잘못된 벡터 크기를 사용하는 벡터 정의:
VECTOR(INT, -1)
벡터 변환¶
이 섹션에서는 VECTOR 값으로 변환하는 방법과 VECTOR 값에서 변환하는 방법을 설명합니다. 형변환에 대한 자세한 내용은 데이터 타입 변환 섹션을 참조하십시오.
값을 VECTOR 값으로 형변환하기¶
VECTOR 값은 다음 타입에서 명시적으로 캐스팅할 수 있습니다.
VECTOR 값에서 값 변환하기¶
VECTOR 값은 다음 타입으로 명시적으로 캐스팅할 수 있습니다.
벡터 데이터 로딩 및 언로딩¶
VECTOR 열을 직접 로드 및 언로드하는 것은 지원되지 않습니다. VECTOR 열의 경우 데이터를 ARRAY로 로드 및 언로드한 다음 사용할 때 VECTOR로 형변환해야 합니다. ARRAY 데이터 타입을 로드하고 언로드하는 방법을 알아보려면 반정형 데이터 로딩 소개 섹션을 참조하십시오. 벡터의 일반적인 사용 사례는 벡터 임베딩 을 생성하는 것입니다.
다음 예제는 VECTOR 열이 있는 테이블을 이름이 mystage
인 내부 스테이지로 언로드하는 방법을 보여줍니다.
CREATE TABLE mytable (a VECTOR(float, 3), b VECTOR(float, 3));
INSERT INTO mytable SELECT [1.1,2.2,3]::VECTOR(FLOAT,3), [1,1,1]::VECTOR(FLOAT,3);
INSERT INTO mytable SELECT [1,2.2,3]::VECTOR(FLOAT,3), [4,6,8]::VECTOR(FLOAT,3);
COPY INTO @mystage/unload/
FROM (SELECT TO_ARRAY(a), TO_ARRAY(b) FROM mytable);
다음 예제는 스테이지에서 테이블을 로드한 다음 ARRAY 열을 VECTOR 열로 형변환하는 방법을 보여줍니다.
CREATE OR REPLACE TABLE arraytable (a ARRAY, b ARRAY);
COPY INTO arraytable
FROM @mystage/unload/mydata.csv.gz;
SELECT a::VECTOR(FLOAT, 3), b::VECTOR(FLOAT, 3)
FROM arraytable;
예¶
상수 ARRAY를 형변환하여 VECTOR를 구성합니다.
SELECT [1, 2, 3]::VECTOR(FLOAT, 3) as vec;
VECTOR 데이터 타입의 열을 추가합니다.
ALTER TABLE issues ADD COLUMN issue_vec VECTOR(FLOAT, 768);
UPDATE TABLE issues
SET issue_vec = SNOWFLAKE.CORTEX.EMBED_TEXT_768('e5-base-v2', issue_text);
제한 사항¶
VECTOR 데이터 타입에 대한 언어 지원은 제한적입니다. 이 테이블에 표현되지 않은 언어는 지원되지 않습니다.
Snowflake 기능
Python
SQL
UDFs
✔
✔
UDTFs
✔
✔
드라이버/커넥터
✔
✔
Snowpark API
✔
벡터는 VARIANT 열에서 지원되지 않습니다.
벡터는 클러스터링 키 로 지원되지 않습니다.
서버 측 바인딩은 지원되지 않습니다. 즉, Snowflake 드라이버를 통해 VECTOR 열에 쓸 때는 쿼리를 실행하기 전에 쿼리에서 VECTOR 값을 형변환해야 합니다.
벡터는 하이브리드 테이블 에서 허용되지만 기본 키나 보조 인덱스 키로는 허용되지 않습니다.
VECTOR 데이터 타입은 다음 Snowflake 기능과 함께 사용할 수 없습니다.