오라클 데이터베이스 23ai의 새로운 데이터 타입인 VECTOR
는 벡터 데이터를 효율적으로 저장하고 처리하기 위한 데이터 타입입니다. VECTOR
타입은 다양한 차원과 데이터 형식(INT8
, FLOAT32
, FLOAT64
)을 지원하며, 데이터 분석과 머신 러닝 등 여러 분야에서 유용하게 활용될 수 있습니다. 이 글에서는 예제를 통해 VECTOR
타입의 활용 방법을 자세히 알아보겠습니다.
VECTOR 데이터 타입 기본 구조
VECTOR
타입은 숫자 시퀀스를 나타내는 벡터를 저장합니다. 벡터의 데이터 형식은 INT8
, FLOAT32
, FLOAT64
중 하나로 지정할 수 있고, 차원의 개수는 필요에 따라 자유롭게 설정 가능합니다. 단, 차원 개수는 0보다 커야 하며, NULL 값을 가질 수 없습니다. (즉, [1.1, NULL, 2.2]
와 같은 벡터는 허용되지 않습니다.)
VECTOR 데이터 타입 예제
다음은 VECTOR
타입을 사용하는 다양한 테이블 생성 예제입니다. 각 예제는 VECTOR
타입의 다양한 선언 형식을 보여줍니다.
예제 1: 차원과 형식 미지정
가장 기본적인 형태로, 차원과 데이터 형식을 지정하지 않으면 임의의 차원과 형식을 가진 벡터를 저장할 수 있습니다.
CREATE TABLE my_vectors1 (
id NUMBER,
embedding VECTOR
);
이 테이블에서는 embedding
컬럼에 차원 수와 데이터 형식이 제한 없이 다양한 벡터를 저장할 수 있습니다.
예제 2: 차원 수 지정
차원 수를 지정하면 모든 벡터는 지정된 차원 수를 가져야 합니다. 마찬가지로 형식을 지정하지 않으면 임의 형식을 가진 벡터를 저장할 수 있습니다.
CREATE TABLE my_vectors2 (
id NUMBER,
embedding VECTOR(768)
);
이 경우 embedding
컬럼에는 항상 768차원의 벡터만 저장할 수 있습니다.
예제 3: 차원 수와 형식 지정
차원 수와 데이터 형식을 모두 지정할 수 있습니다. 데이터 형식이 일치하지 않을 경우 자동 형변환이 발생합니다.
CREATE TABLE my_vectors3 (
id NUMBER,
embedding VECTOR(768, FLOAT32)
);
이 예제에서는 768차원의 벡터만 저장되며, 모든 차원은 FLOAT32
형식으로 저장됩니다. 만약 다른 형식의 데이터를 입력하면 FLOAT32
로 자동 변환됩니다.
예제 4: 형식만 지정
차원 수는 지정하지 않고 데이터 형식만 지정할 수 있습니다. 이 경우 임의의 차원 수를 가진 벡터를 저장할 수 있지만 데이터 형식은 지정된 형식으로 변환됩니다.
CREATE TABLE my_vectors4 (
id NUMBER,
embedding VECTOR(*, INT8)
);
이 테이블에서는 차원 수는 제한이 없지만, 모든 차원은 INT8
형식으로 저장됩니다.
예제 5: 여러 개 VECTOR 컬럼
다양한 차원과 형식을 가진 여러 개의 VECTOR
컬럼을 동시에 선언할 수 있습니다.
CREATE TABLE my_vectors5 (
id NUMBER,
v1 VECTOR(3, FLOAT32),
v2 VECTOR(2, FLOAT64),
v3 VECTOR(*, INT8),
v4 VECTOR
);
이 테이블은 서로 다른 차원과 형식의 벡터를 저장하는 컬럼을 여러 개 가지고 있습니다.
제약 사항
오라클 데이터베이스 VECTOR
타입은 다음과 같은 제약 사항이 있습니다.
- 외부 테이블, IOT, 클러스터 테이블, 글로벌 임시 테이블, MSSM 테이블스페이스(SYS 사용자 제외)에서는 사용할 수 없습니다.
- 파티셔닝 키, 서브파티셔닝 키, 기본 키, 외래 키, 유니크 제약 조건, 체크 제약 조건으로 사용할 수 없습니다.
- 기본값을 설정하거나 컬럼을 수정할 수 없습니다.
DISTINCT
,COUNT DISTINCT
,ORDER BY
,GROUP BY
, 조인 조건, 비교 연산자(>, <, =) 등과 함께 사용할 수 없습니다.
이 글에서는 오라클 데이터베이스의 VECTOR
타입에 대한 기본적인 내용과 생성 방법을 소개했습니다. 오라클 데이터베이스 VECTOR
타입은 대용량 벡터 데이터를 효율적으로 처리하여, 앞으로 머신 러닝과 데이터 분석 분야에서 더욱 중요한 역할을 할 것으로 예상됩니다. 추가적인 기능과 활용 방법은 오라클 공식 문서를 참조하시기 바랍니다.