Weaviate는 GraphQL API를 제공하는 오픈소스 벡터 데이터베이스다. 모듈화된 아키텍처로 임베딩 생성부터 검색까지 내장 처리하며, 멀티모달 데이터와 하이브리드 검색을 지원한다.
핵심 특징
| 항목 | 설명 |
|---|
| API | GraphQL + REST + gRPC |
| 임베딩 모듈 | text2vec-openai, text2vec-cohere 등 내장 |
| 벡터화 | 객체 저장 시 자동 임베딩 생성 |
| 하이브리드 | BM25 + 벡터 혼합 검색 |
| 멀티텐넌시 | 단일 클러스터 다중 테넌트 |
python
import weaviate
from weaviate.classes.config import Configure, VectorDistances
from weaviate.classes.query import MetadataQuery
client = weaviate.connect_to_local()
articles = client.collections.create(
name="Article",
vectorizer_config=Configure.Vectorizer.text2vec_openai(
model="text-embedding-3-small"
),
vector_index_config=Configure.VectorIndex.hnsw(
distance_metric=VectorDistances.COSINE
),
)
articles.data.insert({
"title": "벡터 데이터베이스 개요",
"content": "벡터 DB는 고차원 벡터를 효율적으로 저장하고 검색합니다.",
"category": "database",
})
response = articles.query.near_text(
query="유사도 검색 방법",
limit=5,
return_metadata=MetadataQuery(distance=True),
)
for obj in response.objects:
print(obj.properties["title"], obj.metadata.distance)
client.close()
하이브리드 검색
python
response = articles.query.hybrid(
query="벡터 검색",
alpha=0.5, # 0=BM25 전용, 1=벡터 전용
limit=5,
)
관련 문서