프로퍼티 데이터 타입
프로퍼티 데이터 타입 (Property data types)
Weaviate 컬렉션에서 프로퍼티를 정의할 때는 반드시 데이터 타입을 지정해야 해요. 이 타입이 어떤 값이 들어오는지, 그리고 그 값이 어떻게 인덱싱되고 검색되는지를 결정하죠. 어떤 타입들이 있고 각각이 뭘 뜻하는지 한눈에 정리해볼게요.
사용할 수 있는 데이터 타입
배열 타입은 타입 이름에 []를 붙여서 지정해요 (예: text → text[]). 다만 모든 타입이 배열을 지원하는 건 아니에요.
| 이름 | 정확한 타입 | 포맷 | 배열([]) 지원 |
비고 |
|---|---|---|---|---|
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(권장 안 함) 상태예요.
예를 들어 title은 LOWERCASE로, 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 중에 원본 미디어 콘텐츠를 벡터화할 수 있게 해줘요.
동작 방식은 이렇게 흘러가요.
- 검증 단계에서 base64 입력이 검증된 뒤 그대로 유지돼요.
- 원본 데이터가 벡터화 파이프라인을 통과해서, 모듈이 실제 미디어 콘텐츠를 벡터화할 수 있어요.
- 벡터화가 끝난 뒤 base64 데이터가 SHA-256 hex 해시로 변환되어 영속화돼요.
cross reference (크로스 레퍼런스)
데이터 스키마에서 크로스 레퍼런스를 쓸 수 있는 상황이라면, 먼저 정말 크로스 레퍼런스 없이 해결할 수 없는지 한 번 고민해 보길 권해요. Weaviate는 확장성이 좋은 AI 데이터베이스로 설계돼서, 필터가 섞인 벡터·키워드·하이브리드 검색 같은 복잡한 조회를 크로스 레퍼런스 없이도 잘 처리해요.