프로퍼티 데이터 타입

프로퍼티 데이터 타입 (Property data types)

Weaviate 컬렉션에서 프로퍼티를 정의할 때는 반드시 데이터 타입을 지정해야 해요. 이 타입이 어떤 값이 들어오는지, 그리고 그 값이 어떻게 인덱싱되고 검색되는지를 결정하죠. 어떤 타입들이 있고 각각이 뭘 뜻하는지 한눈에 정리해볼게요.

출처: Weaviate 공식 문서 — Property data types

사용할 수 있는 데이터 타입

배열 타입은 타입 이름에 []를 붙여서 지정해요 (예: texttext[]). 다만 모든 타입이 배열을 지원하는 건 아니에요.

이름 정확한 타입 포맷 배열([]) 지원 비고
text string string ["string one", "string two"]
boolean boolean true/false [true, false]
int int64 (주석 참고) 123 [123, -456]
number float64 0.0 [0.0, 1.1]
date string 자세히
uuid string "c8f8176c-6f9b-5461-8ab3-f3c7ce8c2f5c"
geoCoordinates string 자세히
phoneNumber string 자세히
blob base64 인코딩 문자열 자세히
blobHash base64 인코딩 문자열(SHA-256 해시로 저장) 자세히 v1.37부터
object object {"child": "I'm nested!"} v1.22부터
cross reference string 자세히

각 타입의 자세한 내용은 아래에서 하나씩 살펴볼게요.

text

텍스트 데이터를 다룰 때 쓰는 타입이에요. 프로퍼티 설정에서 달리 지정하지 않으면 text 타입 프로퍼티는 벡터화(vectorization)와 키워드 검색에 함께 쓰여요.

  • named vectors를 쓰고 있다면 프로퍼티 벡터화는 named vector 정의에서 결정돼요.
  • text 프로퍼티는 키워드/BM25 검색을 위해 인덱싱되기 전에 토큰화(tokenize)돼요. 토큰화 옵션은 컬렉션 정의에서 설정할 수 있어요.

참고로 string 타입은 이제 deprecated(권장 안 함) 상태예요.

예를 들어 titleLOWERCASE로, movie_id는 정확히 일치해야 하니 FIELD로, genres는 단어 단위로 WORD 토큰화해서 만들면 이렇게 정의할 수 있어요.

from weaviate.classes.config import Property, DataType, Configure, Tokenization

my_collection = client.collections.create(
    name="Movie",
    properties=[
        Property(
            name="title", data_type=DataType.TEXT, tokenization=Tokenization.LOWERCASE
        ),
        Property(
            name="movie_id", data_type=DataType.TEXT, tokenization=Tokenization.FIELD
        ),
        Property(
            name="genres", data_type=DataType.TEXT_ARRAY, tokenization=Tokenization.WORD
        ),
    ],
)

blobHash

blobHash는 v1.37에 추가된 타입이에요. blob처럼 base64 인코딩 데이터를 받지만, 디스크에는 SHA-256 해시 값만 저장해요. 저장 공간을 크게 줄이면서도, multi2vec-google 같은 모듈이 import 중에 원본 미디어 콘텐츠를 벡터화할 수 있게 해줘요.

동작 방식은 이렇게 흘러가요.

  1. 검증 단계에서 base64 입력이 검증된 뒤 그대로 유지돼요.
  2. 원본 데이터가 벡터화 파이프라인을 통과해서, 모듈이 실제 미디어 콘텐츠를 벡터화할 수 있어요.
  3. 벡터화가 끝난 뒤 base64 데이터가 SHA-256 hex 해시로 변환되어 영속화돼요.

cross reference (크로스 레퍼런스)

데이터 스키마에서 크로스 레퍼런스를 쓸 수 있는 상황이라면, 먼저 정말 크로스 레퍼런스 없이 해결할 수 없는지 한 번 고민해 보길 권해요. Weaviate는 확장성이 좋은 AI 데이터베이스로 설계돼서, 필터가 섞인 벡터·키워드·하이브리드 검색 같은 복잡한 조회를 크로스 레퍼런스 없이도 잘 처리해요.

더 알아보기