Vector Search Engine / Vector Database

Qdrant

A Rust-built vector database delivering high-performance similarity search with advanced filtering, quantization, and distributed scaling -- purpose-built as the retrieval layer for modern AI applications.

License Apache 2.0
Language Rust
Latest Version 1.17.1
GitHub Stars 29k+
Downloads 250M+
💡 Core Concepts Beginner Collections, points, vectors, payloads, HNSW index, and segments -- the building blocks of Qdrant. 🏗 Architecture Intermediate API layer, shard routing, segment management, optimizer, and distributed consensus. How It Works Intermediate HNSW graph construction, filterable search, quantization, and storage engine internals. 💻 Implementation Advanced Getting started, code patterns, configuration, and annotated Rust source code walkthrough. 🚀 Use Cases Beginner-Intermediate RAG, semantic search, recommendations, anomaly detection, and real-world production deployments. 🌍 Ecosystem Intermediate Client libraries, LangChain, LlamaIndex, deployment options, and integration patterns. Common Q&A All Levels RAM sizing, distance metrics, quantization choices, multi-tenancy, and performance tuning. Trade-offs Intermediate Strengths, limitations, and honest comparison with Pinecone, Weaviate, Milvus, and pgvector.

Quick Start

Get Qdrant running locally in under a minute with Docker, then insert and search vectors with the Python client.

# Start Qdrant with Docker
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant

# Install the Python client
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="demo",
    vectors_config=VectorParams(size=384, distance=Distance.COSINE),
)

# Insert points
client.upsert(collection_name="demo", points=[
    PointStruct(id=1, vector=[0.05, 0.61, 0.76, ...], payload={"city": "Berlin"}),
    PointStruct(id=2, vector=[0.19, 0.81, 0.12, ...], payload={"city": "London"}),
])

# Search for similar vectors
results = client.query_points(
    collection_name="demo",
    query=[0.2, 0.1, 0.9, ...],
    limit=5,
)

Explore the Core Concepts page to understand vectors, collections, and HNSW indexing, or jump to Implementation Details for production configuration patterns.