오라클 데이터베이스에서 VECTOR 데이터 타입 활용하기 #1

오라클 데이터베이스 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 타입은 대용량 벡터 데이터를 효율적으로 처리하여, 앞으로 머신 러닝과 데이터 분석 분야에서 더욱 중요한 역할을 할 것으로 예상됩니다. 추가적인 기능과 활용 방법은 오라클 공식 문서를 참조하시기 바랍니다.

위로 스크롤