Qdrant is a vector database for similarity search with payload filtering. The useful question is whether its retrieval behaviour, storage layout and operating costs fit your application. This assessment replaces the previous unsupported capacity and competitor-cost claims with linked documentation, an explicit memory calculation and a small reproducible local check.
Evidence updated 14 October 2026. Vendor statements are attributed to the linked primary sources. Suggested evaluation steps are not completed tests.
What it offers
Qdrant’s documented workflow is to create a collection with a specified vector size and distance function, insert points, then query them with optional payload filters. Its deployment choices include a managed service and self-hosting. The official quickstart is the starting point for a server-backed installation. For a support-search application, the vector can represent the meaning of a question while payload fields restrict results to a language, account or document type. A filter is useful only if the application supplies and checks that metadata correctly.
Capacity: the arithmetic the previous review got wrong
Ten million vectors with 1,536 float32 dimensions contain 10,000,000 × 1,536 × 4 = 61,440,000,000 bytes of vector values alone: 61.44 GB in decimal units, or about 57.22 GiB. They cannot all fit uncompressed in 16 GB of RAM. Indexes, identifiers, payloads, replicas and runtime memory add costs. Disk-backed storage and quantization change the design, but do not turn this arithmetic into a demonstrated capacity claim. The previous “10–20 million raw vectors in a $96/16 GB node” statement has been removed. Size a representative collection and measure both retrieval quality and resources before selecting a production machine.
A check we actually ran
On 14 October 2026 London time, we ran qdrant-client 1.16.1 with Python 3.9.6 on macOS in local in-memory mode. We inserted three synthetic three-dimensional vectors with language labels. The exact-match query returned point 1 with cosine score 1.0; filtering to French returned only point 3; the collection count was three. All three assertions passed. This checks these basic client operations. It does not test Cloud, a separate Qdrant server, real embeddings, security, persistence, quantization, recall at scale or latency. No numeric overall rating or production benchmark follows from this check.
Reproduce the local check
Install qdrant-client==1.16.1 in an isolated Python environment, then run:
import json,sys,platform
from importlib.metadata import version
from qdrant_client import QdrantClient, models
client=QdrantClient(location=':memory:')
client.create_collection('review_check',vectors_config=models.VectorParams(size=3,distance=models.Distance.COSINE))
client.upsert('review_check',points=[models.PointStruct(id=1,vector=[1.0,0.0,0.0],payload={'topic':'billing','lang':'en'}),models.PointStruct(id=2,vector=[0.0,1.0,0.0],payload={'topic':'support','lang':'en'}),models.PointStruct(id=3,vector=[0.0,0.0,1.0],payload={'topic':'billing','lang':'fr'})])
hits=client.query_points('review_check',query=[1.0,0.0,0.0],limit=3).points
filtered=client.query_points('review_check',query=[1.0,0.0,0.0],query_filter=models.Filter(must=[models.FieldCondition(key='lang',match=models.MatchValue(value='fr'))]),limit=3).points
assert hits[0].id==1 and abs(hits[0].score-1)<1e-6
assert [x.id for x in filtered]==[3]
assert client.count('review_check',exact=True).count==3
print(json.dumps({'qdrant_client':version('qdrant-client'),'python':sys.version.split()[0],'platform':platform.system(),'local_only':True,'vectors':3,'dimensions':3,'top_hit':hits[0].id,'top_cosine_score':hits[0].score,'french_filter_ids':[x.id for x in filtered],'assertions_passed':3,'limits':'Synthetic in-memory client check; no Cloud/server, embeddings, quantization, persistence, security, recall or performance benchmark.'},indent=2))
client.close()
Pricing and the decision
The current pricing page separates a free Cloud cluster from paid capacity and deployment offerings. It lists the free cluster with 1 GB RAM and 4 GB disk. Paid infrastructure and optional services must be priced for the configuration you actually need; self-hosted software still requires infrastructure and operations. We have removed the universal $96/month production estimate, zero-total-cost implication, rival price comparison and claimed annual saving because no reproducible matching workload supported them. Compare total cost at the same vector count, dimensions, payloads, replication, queries and quality target. Choose Qdrant when that experiment supports your requirements; choose a simpler existing database when operating a separate retrieval service adds more work than value.
Primary sources and related reading
Compare the decision with Weaviate, Pinecone, Jina AI and see how we review AI tools or our practical tutorials.