ChromaDB 컬렉션
ChromaDB 컬렉션 (Collections)
컬렉션은 ChromaDB에서 데이터를 저장하고 검색하는 가장 기본적인 단위예요. 벡터 DB 안의 "테이블"이라고 생각하면 돼요. 이 페이지에서는 컬렉션을 만들고, 조회하고, 이름이나 메타데이터를 수정하는 방법을 다뤄요.
컬렉션 만들기
create_collection을 호출하면 이름만으로도 컬렉션을 만들 수 있어요. 컬렉션 이름은 같은 데이터베이스 안에서 유일해야 하고, 이미 존재하는 이름으로 만들면 예외가 발생해요.
collection = client.create_collection(name="my_collection")
문서를 컬렉션에 추가하면 ChromaDB가 컬렉션에 연결된 임베딩 함수(embedding function) 를 이용해 자동으로 벡터를 만들고 저장해요. 임베딩 함수를 지정하지 않으면 기본값으로 sentence transformer 기반 임베딩이 사용돼요.
from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction
collection = client.create_collection(
name="my_collection",
embedding_function=OpenAIEmbeddingFunction(
api_key=os.getenv("OPENAI_API_KEY"),
model_name="text-embedding-3-small"
)
)
반대로 ChromaDB가 임베딩하도록 하지 않고, 데이터를 추가할 때 벡터를 직접 넘길 수도 있어요. 이 경우 컬렉션에 임베딩 함수가 없으므로 데이터를 추가하거나 검색할 때 직접 벡터를 제공해야 해요.
컬렉션 메타데이터
컬렉션에는 설명 같은 메타데이터를 붙일 수 있어요. 임베딩 함수와 함께 metadata 인자로 전달하면 돼요.
from datetime import datetime
collection = client.create_collection(
name="my_collection",
embedding_function=emb_fn,
metadata={
"description": "my first Chroma collection",
"created": str(datetime.now())
}
)
컬렉션 조회
get_collection은 이름으로 컬렉션을 찾아 Collection 객체를 돌려줘요. 여기에는 name, metadata, configuration, embedding_function 같은 정보가 담겨 있어요.
collection = client.get_collection(name="my-collection")
list_collections는 데이터베이스에 있는 모든 컬렉션을 만든 순서(오래된 것부터) 로 돌려줘요.
collections = client.list_collections()
컬렉션을 만들 때 사용했던 임베딩 함수는 최신 ChromaDB 버전(1.1.13 이상)에서는 서버에 저장돼서, 이후 get에서 자동으로 다시 찾아줘요. 더 오래된 버전이라면 조회할 때 같은 임베딩 함수를 직접 제공해야 해요.
컬렉션 수정
컬렉션을 만든 뒤에는 modify 메서드로 이름, 메타데이터, 그리고 인덱스 설정(configuration) 중 수정 가능한 값들을 바꿀 수 있어요.
collection.modify(
name="new-name",
metadata={"description": "new description"}
)
더 알아보기 (Learn more)
- 인덱스 설정과 임베딩 함수 구성은 컬렉션 구성 (Configure Collections)에서 다뤄요.
- 데이터 추가·조회 방식은 데이터 추가 (Add Data) 문서를 참고해요.