Qdrant는 Rust로 개발된 고성능 벡터 유사도 검색 데이터베이스다. 고급 필터링, 페이로드 인덱싱, 스파스-밀집 하이브리드 검색, 분산 클러스터를 지원하며 프로덕션 배포에 적합하다.
주요 특징
| 항목 | 설명 |
|---|
| 핵심 언어 | Rust (고성능·안전성) |
| 인덱스 | HNSW (계층적 NSW) |
| 필터링 | 페이로드 기반 인덱싱된 필터 |
| 양자화 | Scalar, Product, Binary 양자화 |
| 하이브리드 검색 | 스파스+밀집 벡터 결합 |
| 배포 | Docker, Kubernetes, Qdrant Cloud |
기본 사용법
python
from qdrant_client import QdrantClient
from qdrant_client.models import (
VectorParams, Distance,
PointStruct, Filter, FieldCondition, MatchValue
)
import numpy as np
client = QdrantClient("localhost", port=6333)
client.create_collection(
collection_name="articles",
vectors_config=VectorParams(size=1536, distance=Distance.COSINE),
)
points = [
PointStruct(
id=i,
vector=np.random.random(1536).tolist(),
payload={"title": f"문서 {i}", "category": "tech", "year": 2024}
)
for i in range(100)
]
client.upsert(collection_name="articles", points=points)
results = client.search(
collection_name="articles",
query_vector=np.random.random(1536).tolist(),
query_filter=Filter(
must=[FieldCondition(key="category", match=MatchValue(value="tech"))]
),
limit=5,
with_payload=True,
)
Qdrant vs Chroma 비교
| 항목 | Qdrant | Chroma |
|---|
| 핵심 언어 | Rust | Python |
| 성능 | 매우 높음 | 중간 |
| 필터 인덱스 | 지원 | 기본 |
| 하이브리드 검색 | 지원 | 미지원 |
| 프로덕션 준비도 | 높음 | 중간 |
관련 문서