컬렉션 정의

컬렉션 정의 (Collection definition)

Weaviate에서 데이터 묶음을 저장하고 인덱싱하는 방식을 정하는 게 바로 컬렉션 정의예요. 한마디로 "어떤 컬렉션인가"를 설명하는 설정 덩어리라고 보면 되는데, 이 페이지에서는 컬렉션을 구성할 때 쓸 수 있는 파라미터들을 하나씩 살펴볼게요.

출처: Weaviate 공식 문서 — Collection definition

컬렉션 정의 파라미터

컬렉션을 정의할 때 지정할 수 있는 주요 파라미터는 이렇게 정리할 수 있어요.

파라미터 타입 설명 기본값 변경 가능
class String 컬렉션의 이름 (필수) 아니요
invertedIndexConfig Object 역인덱스 설정 — 필터링과 키워드 검색에 영향 역인덱스 레퍼런스 참고
replicationConfig Object 내결함성을 위한 데이터 복제 설정 복제 섹션 참고 일부

프로퍼티 (Properties)

각 프로퍼티는 이름, 데이터 타입, 그리고 인덱싱 방식 같은 설정을 갖고 있어요. 예를 들어 dataType은 배열 문법으로 여러 타입을 허용할 수 있는데, 크로스 레퍼런스를 만들 때는 프로퍼티가 여러 데이터 타입을 가질 수 있어서 배열 형태를 써요. tokenization은 역인덱스로 인덱싱할 때 필드 내용을 어떻게 토큰으로 쪼갤지 정해요.

from weaviate.classes.config import Property, DataType

# v3 클라이언트 스타일 JSON 객체에서 create_from_dict()로 만들 수도 있어요
client.collections.create(
    "Article",
    ...
)

프로퍼티별 moduleConfig를 두면 벡터라이저 모듈이 이 프로퍼티를 어떻게 다룰지도 세밀하게 조정할 수 있어요.

역인덱스 (Inverted index)

Weaviate는 역인덱스로 빠르고 효율적인 필터링과 검색을 지원해요. 역인덱스는 값(단어나 숫자 등)을 그 값을 담은 객체에 매핑해서, 모든 속성 기반 필터링(where 필터)과 키워드 검색(bm25, hybrid)을 빠르게 만들어줘요.

역인덱스 설정을 다루는 방법은 전용 역인덱스 레퍼런스 페이지에서 더 자세히 확인할 수 있어요.

벡터 구성 (Vector configuration)

Weaviate 4.x는 named vectors를 지원해서, 한 컬렉션에 서로 다른 벡터라이저로 만든 벡터 여럿을 둘 수 있어요.

  • 단일 벡터 컬렉션: 하나의 벡터라이저로 하나의 벡터만 쓰는 가장 단순한 구성이에요.
  • 멀티 벡터 컬렉션: 서로 다른 벡터라이저나 서로 다른 source_properties로 여러 벡터를 정의해요.

아래는 단일 벡터 컬렉션의 예시예요.

from weaviate.classes.config import (
    Configure,
    DataType,
    Property,
    VectorDistances,
    VectorFilterStrategy,
)

client.collections.create(
    "Article",
    vector_config=Configure.Vectors.text2vec_openai(
        ...
    ),
)

벡터 인덱스 (Vector index)

벡터 인덱스는 벡터 데이터를 정리해서 유사도 검색이 빠르게 일어나도록 해줘요. 쿼리마다 모든 벡터를 하나씩 비교하는 대신, 인덱스가 구조를 만들어 검색 범위를 가장 유망한 후보들로 빠르게 좁혀주는 구조예요.

컬렉션 별칭 (Collection aliases)

별칭(alias)이 있으면 컬렉션을 다른 이름으로도 부를 수 있어요.

  • 객체 관리: 별칭을 통해 객체 생성, 배치 import, 읽기, 수정, 삭제를 할 수 있어요.
  • 객체 조회: 별칭으로 객체를 가져오고 벡터·키워드·하이브리드·이미지·생성형(RAG) 검색과 집계까지 수행할 수 있어요.

더 알아보기