qdrant-client

Official Python SDK for the Qdrant vector search engine

SDK
PyPI
v1.20.0
1,373 stars
Apache License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
92 /100 Excellent
Development Activity 100
Maintenance 96
Community 72
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
77 /100 Good
Architecture 78
Code Quality 80
Innovation 76
Learning Curve 75

qdrant-client is the official Python client for Qdrant, a vector similarity search engine used for semantic search, RAG pipelines, and recommendation systems. It provides fully typed sync and async clients covering every Qdrant REST/gRPC API method, plus a unique local mode that runs the same API in-memory or against an on-disk file with no server required — useful for prototyping, notebooks, and CI tests.

Beyond raw API coverage, the client bundles higher-level conveniences such as batched collection uploads, optional FastEmbed integration for generating embeddings client-side, and helper utilities for common workflows like hybrid (dense+sparse) search, making it the standard entry point for Python applications that talk to Qdrant.

What You Get

  • A fully typed QdrantClient/AsyncQdrantClient covering the whole Qdrant API surface
  • Local mode — run the same client API in-memory or against a local file with no server
  • Both REST and gRPC transport support, selectable per client
  • Optional FastEmbed integration for generating dense/sparse embeddings client-side
  • Helper methods for batched collection uploads and hybrid dense+sparse search

Common Use Cases

  • Building a RAG (retrieval-augmented generation) pipeline backed by Qdrant vector search
  • Prototyping semantic search in a notebook using local mode before deploying a real server
  • Running vector-search integration tests in CI using local/in-memory mode instead of a live server
  • Powering a recommendation or similarity-search feature in a production Python service

Under The Hood

Architecture — The package splits into a client_base/async_client_base abstract interface, a qdrant_remote/async_qdrant_remote implementation that talks to a real Qdrant server over REST (http/) or gRPC (grpc/, generated from Qdrant’s protobuf definitions), and a local/ implementation that reimplements the same query semantics in pure Python/NumPy for the no-server local mode; conversions/ handles translating between the REST, gRPC, and local in-memory representations so callers see one consistent API regardless of backend. Tech Stack — Python 3.10+, built on httpx (HTTP/2-capable) for REST, grpcio/protobuf for gRPC, pydantic for request/response models, and numpy for local-mode vector math, with optional fastembed/fastembed-gpu extras for client-side embedding generation; managed via Poetry. Code Quality — The tests/ directory includes congruence tests that verify REST, gRPC, and local-mode implementations all return identical results for the same operations, plus dedicated embed tests, conversion tests, and shell-scripted integration/consistency checks (async-client-consistency-check.sh, inspection-cache-consistency-check.sh), indicating a strong emphasis on cross-backend correctness. API Design — Because the client mirrors Qdrant’s OpenAPI/protobuf schema directly, method names and payload types stay in lock-step with the server API, while QdrantClient(":memory:") as the simplest possible constructor call gives new users a working vector database in one line before they ever touch a server or Docker container.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers