AI・機械学習
中級
Qdrant(クアドラント)
Rustで実装されたオープンソースベクトルデータベース。高次元ベクトルの高速類似検索・フィルタリング・ペイロード付き検索をサポートし、RAGシステムの中核として使われる。
0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
vector-database
qdrant
rag
hnsw
similarity-search
rust
Qdrant
概要
Qdrant(クアドラント)は、Rust言語で実装されたオープンソースのベクトルデータベースです。高次元ベクトルの高速ANN(近似最近傍探索)検索を主目的とし、LLMを活用したRAGシステム・セマンティック検索・推薦システムで広く採用されています。Docker環境でのセルフホスティングとSaaS版(Qdrant Cloud)の両方を提供しており、jisaku.comでも用語集・記事の埋め込み検索に使用しています。
主な機能
| 機能 | 説明 |
|---|---|
| インデックス | HNSW(Hierarchical Navigable Small World) |
| 距離メトリクス | Cosine、Dot Product、Euclidean |
| ペイロード | 任意のJSONメタデータをベクトルと一緒に保存 |
| フィルタリング | ペイロードフィールドで事前フィルタリングしてから検索 |
| スカラー量子化 | INT8量子化でメモリ使用量を4分の1に削減 |
| スパースベクトル | Sparse Vector対応でハイブリッド検索が可能 |
| Named Vectors | 1ポイントに複数のベクトルを格納 |
Docker での起動
# 単体起動
docker run -p 6333:6333 -p 6334:6334 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
qdrant/qdrant
# docker-compose.yml
services:
qdrant:
image: qdrant/qdrant:latest
ports:
- "6333:6333" # HTTP API
- "6334:6334" # gRPC API
volumes:
- ./qdrant_storage:/qdrant/storage
environment:
- QDRANT__SERVICE__API_KEY=your-api-key
Python SDK での操作
from qdrant_client import QdrantClient
from qdrant_client.models import (
Distance, VectorParams, PointStruct, Filter, FieldCondition, MatchValue
)
client = QdrantClient(host="localhost", port=6333)
# コレクション作成
client.create_collection(
collection_name="glossary",
vectors_config=VectorParams(size=1536, distance=Distance.COSINE)
)
# ベクトルとペイロードを挿入
client.upsert(
collection_name="glossary",
points=[
PointStruct(
id=1,
vector=[0.1, 0.2], # 実際は1536次元
payload={"term": "DDR5", "category": "memory", "id": "ddr5-memory"}
)
]
)
# 類似検索(フィルタ付き)
results = client.query_points(
collection_name="glossary",
query=[0.15, 0.25], # 実際は1536次元
query_filter=Filter(
must=[FieldCondition(key="category", match=MatchValue(value="memory"))]
),
limit=5,
with_payload=True
)
for r in results.points:
print(f"{r.payload['term']}: score={r.score:.3f}")
REST API での操作
# コレクション一覧
curl http://localhost:6333/collections
# ベクトル検索(HTTP直接)
curl -X POST http://localhost:6333/collections/glossary/points/query \
-H 'Content-Type: application/json' \
-d '{"query": [0.1, 0.2], "limit": 5, "with_payload": true}'
HNSWパラメータのチューニング
from qdrant_client.models import HnswConfigDiff
client.update_collection(
collection_name="glossary",
hnsw_config=HnswConfigDiff(
m=16, # 接続数(高いほど精度UP・メモリ増)
ef_construct=100 # 構築時の探索幅(高いほど精度UP・時間増)
)
)
pgvectorとの使い分け
- Qdrant: 純粋なベクトル検索特化・大規模データ・専用ダッシュボード・スカラー量子化
- pgvector: 既存PostgreSQLに統合・SQLとのJOIN・運用コスト最小化
jisaku.comでは両方を用途分けして運用(Qdrant: 類似検索用・pgvector: 本番API一部)。