Qdrant

A high-performance vector database and similarity search engine written in Rust — built for AI applications, semantic search, and recommendation systems.

Screenshot of Qdrant

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 memmap to 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 /dashboard for 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 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 apt or dnf packages 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/qdrant

Qdrant 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-client
from 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: false

Use 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