Qdrant
A high-performance vector database and similarity search engine written in Rust — built for AI applications, semantic search, and recommendation systems.
Qdrant (read: quadrant) is a vector similarity search engine and vector database written in Rust. It provides a production-ready HTTP and gRPC API for storing, searching, and managing vectors with additional payloads — making it the backbone for AI applications that need fast nearest-neighbour search at scale, such as semantic search, recommendation engines, image similarity, and RAG (retrieval-augmented generation) pipelines.
Features
- High performance — written in Rust with a focus on raw throughput; benchmarks consistently place it among the fastest vector databases available
- Rich filtering — combine vector similarity search with structured payload filters (range, match, geo, nested conditions) in a single query, without a post-filtering penalty
- Multiple vector types — store dense vectors, sparse vectors, and multi-vectors in the same collection; mix them in hybrid search queries
- Quantization — scalar, product, and binary quantization reduce memory usage by up to 32× with configurable accuracy trade-offs
- On-disk storage — optionally map vectors to disk via
memmapto handle datasets larger than RAM - Distributed — horizontal sharding and replication built in; add nodes to scale out reads and writes
- Snapshots — point-in-time collection snapshots for backup and migration
- Payload indexing — create indexes on payload fields for fast filtered searches
- Web UI — a built-in dashboard at
/dashboardfor exploring collections and running test queries - Multiple APIs — REST, gRPC, and official clients for Python, JavaScript/TypeScript, Rust, Go, Java, C#, and more
Installation
Docker (recommended)
docker pull qdrant/qdrant
docker run -p 6333:6333 -p 6334:6334 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
qdrant/qdrant
The REST API is now available at http://localhost:6333 and the gRPC endpoint
at localhost:6334. The web dashboard is at http://localhost:6333/dashboard.
Linux (Debian, Ubuntu, Fedora, and others): Docker is the recommended install method and works on all Linux distributions. There are no official
aptordnfpackages for Qdrant itself.
Binary
Download a pre-built binary from the releases page:
./qdrant
Or build from source:
git clone https://github.com/qdrant/qdrant
cd qdrant
cargo build --release
./target/release/qdrantQdrant Cloud
A fully managed cloud service is available at cloud.qdrant.io with a generous free tier.
Quick Start
Create a collection
curl -X PUT http://localhost:6333/collections/my_collection \
-H 'Content-Type: application/json' \
-d '{
"vectors": {
"size": 1536,
"distance": "Cosine"
}
}'Upsert vectors with payloads
curl -X PUT http://localhost:6333/collections/my_collection/points \
-H 'Content-Type: application/json' \
-d '{
"points": [
{
"id": 1,
"vector": [0.1, 0.2, ...],
"payload": {
"title": "Introduction to Rust",
"category": "programming",
"year": 2024
}
}
]
}'Search with a filter
curl -X POST http://localhost:6333/collections/my_collection/points/search \
-H 'Content-Type: application/json' \
-d '{
"vector": [0.1, 0.2, ...],
"limit": 10,
"filter": {
"must": [
{ "key": "category", "match": { "value": "programming" } },
{ "key": "year", "range": { "gte": 2023 } }
]
},
"with_payload": true
}'Python client example
pip install qdrant-clientfrom qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct
client = QdrantClient(url="http://localhost:6333")
# Create a collection
client.create_collection(
collection_name="my_docs",
vectors_config=VectorParams(size=1536, distance=Distance.COSINE),
)
# Insert points
client.upsert(
collection_name="my_docs",
points=[
PointStruct(
id=1,
vector=[0.1] * 1536, # replace with real embeddings
payload={"text": "Rust is fast", "source": "blog"},
),
],
)
# Search
results = client.search(
collection_name="my_docs",
query_vector=[0.1] * 1536,
limit=5,
)Configuration
Qdrant is configured via config/config.yaml:
storage:
storage_path: ./storage
snapshots_path: ./snapshots
on_disk_payload: false
service:
host: 0.0.0.0
http_port: 6333
grpc_port: 6334
max_request_size_mb: 32
cluster:
enabled: false
telemetry_disabled: falseUse cases
- RAG pipelines — store document embeddings and retrieve the most relevant chunks for LLM context windows
- Semantic search — find documents by meaning rather than keyword matching
- Recommendation systems — find items similar to ones a user has interacted with
- Duplicate detection — identify near-duplicate images, documents, or records
- Anomaly detection — find vectors that are far from all known clusters
- Face recognition / visual search — store image embeddings and search by visual similarity