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 Vectors1ポイントに複数のベクトルを格納

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一部)。

この記事について
カテゴリーAI・機械学習
難易度中級
作成日2026/6/7