벡터라이저 전환하기
벡터라이저 전환하기 (Switching Vectorizers)
프로덕션에서 임베딩 모델을 바꿔야 하는 일이 생겨요. 검색 정확도 같은 성능 개선을 위해 최신 모델을 채택하거나, 기존 모델이 폐기(deprecation) 되어 다른 모델로 전환해야 하는 경우죠. 이 가이드에서는 Weaviate에서 벡터라이저를 전환하는 아래 두 방법을 다룹니다.
- Method A: 컬렉션 별칭(aliases) 마이그레이션 — 기존 컬렉션을 유지한 채 새 컬렉션으로 갈아타기
- Method B: 새 벡터 추가 — 같은 컬렉션에 새 벡터 표현을 추가해 전환
출처: 공식문서
사전 준비
- Weaviate Cloud 인스턴스 (
v1.32이상) - Python 3.8+
- 필요한 패키지 설치
pip install weaviate-client datasets
- Weaviate Cloud 자격 증명 환경 변수 설정
export WEAVIATE_URL="your-weaviate-cloud-url"
export WEAVIATE_API_KEY="your-api-key"
- Weaviate 컬렉션과 벡터 검색에 대한 기본적인 이해
소개
전환을 시작하기 전에 기준 성능 분석(baseline) 을 하는 걸 권장합니다. 데이터의 대표적인 부분집합을 골라 기존 임베딩 모델로 쿼리/검색 정확도의 기준치를 계산하고, 이를 새 모델과 비교하는 벤치마크로 삼는 식이에요.
Method A: 컬렉션 별칭 마이그레이션
새 컬렉션 만들기
Weaviate Embeddings로 새 컬렉션을 만들고, 기존 컬렉션의 별칭을 새 컬렉션으로 옮기는 방식입니다. 객체 데이터와 함께 커스텀 벡터를 직접 추가하고 싶다면 "Bring Your Own Vectors" 스타터 가이드를 참고하세요.
Method B: 새 벡터 추가
Weaviate는 같은 컬렉션에 여러 벡터 표현을 가질 수 있어요. 새 벡터를 만들고 데이터베이스의 모든 객체가 벡터화되면, 원래 벡터 대신 새 벡터를 사용할 수 있습니다.
1단계: Weaviate Embeddings로 새 벡터 추가
client.collections.create(
"ECommerceProducts",
vector_config=[
Configure.Vectors.text2vec_weaviate( # Add new Weaviate Embeddings vector
name="new_vector",
source_properties=["name", "description"], # Properties to vectorize
),
],
)
2단계: 벡터화 트리거
객체를 다시 (재)벡터화해서 새 벡터를 채웁니다.
# for the new vector "new_vector"
with products.batch.fixed_size(batch_size=200) as batch:
for item in ecommerce_data:
batch.add_object(
properties=item["properties"],
vector={"original_vector": item["vector"]},
)
3단계: 새 벡터로 쿼리
새 Weaviate Embeddings 벡터로 텍스트 검색을 수행할 수 있어요.
# Query using the new Weaviate Embeddings vector
products = client.collections.use("ECommerceProducts")
# Now we can use text search with the new vector
results = products.query.near_text(
query="comfortable athletic wear",
target_vector="new_vector", # Specify which vector to search
limit=3,
return_properties=["name", "description", "price", "category"],
)