Qdrant explained: uses, how it works, client, best practices, vs pgvector and Chroma

What Qdrant is used for, how it works, the Qdrant client, best practices, Qdrant vs pgvector and Chroma, Chroma vs pgvector, examples, and outage checks.

In a packed college auditorium
In a packed college auditorium

Key takeaways

  • Qdrant is an open-source Rust vector database for semantic search, RAG and recommendations with fast filtering.
  • It stores points with vectors and payloads, searches an HNSW index, and filters during traversal.
  • Index filtered payload fields, use quantization, partition tenants by payload and snapshot regularly.
  • Choose pgvector inside existing PostgreSQL apps, Chroma for prototypes, and Qdrant for vector-heavy scale.
  • When Qdrant seems down, check the status page or the server's health endpoints, logs, memory and disk.

Qdrant is an open-source vector database, written in Rust, for storing embeddings with metadata and searching them by similarity with fast filtering, which makes it a common choice for RAG, semantic search and recommendations. I build RAG systems, including RAG.NextUpgrad with hybrid dense and BM25 retrieval, so this page covers what Qdrant is used for, how it works, its client, best practices, comparisons with pgvector and Chroma, examples, where the company is based and what to do if it seems down.

What is Qdrant used for?

Qdrant is used for semantic search, retrieval-augmented generation, recommendations, image and audio similarity search, anomaly detection and deduplication: any task where you find items whose embeddings are close to a query embedding, often with metadata filters.

Also asked as: how qdrant works

In RAG, Qdrant stores chunk embeddings with payloads such as document ID, page and access permissions, and returns the most relevant chunks for each question, filtered to what the user may see. Its support for sparse vectors and hybrid queries lets one collection serve both keyword-like and semantic retrieval. It runs locally in Docker, in your own cluster, or as the managed Qdrant Cloud, so the same code moves from prototype to production.

How does Qdrant work?

Qdrant stores points in collections. Each point has an ID, one or more vectors and a JSON payload. It builds an HNSW graph index over vectors for fast approximate nearest neighbour search and payload indexes for filtering, combining both during queries.

When you search, Qdrant traverses the HNSW graph to find vectors closest to the query by cosine, dot product, Euclidean or Manhattan distance, while applying filters during traversal rather than after, which keeps filtered results accurate. Data is stored in segments that are optimised in the background. Quantization, scalar, product or binary, compresses vectors to save memory. Distributed mode shards and replicates collections across nodes, and snapshots support backups and migration.

What is the Qdrant client?

The Qdrant client is the official library for talking to a Qdrant server from your code. The Python package qdrant-client is the most used, with official clients also for JavaScript and TypeScript, Rust, Go, Java and .NET.

Also asked as: what is qdrant client

With the Python client, you create a QdrantClient pointing at a URL or local path, create a collection with a vector size and distance, upsert points with vectors and payloads, and call query methods with optional filters. It supports both REST and gRPC, async usage, and a local mode that runs in memory or on disk without a server, useful for tests. It also integrates with FastEmbed to generate embeddings directly, and with LangChain and LlamaIndex.

What are Qdrant best practices?

Match the distance metric to your embedding model, create payload indexes on fields you filter by, batch uploads, use quantization to reduce memory for large collections, and tune HNSW parameters only after measuring recall and latency on real queries.

More practices: use named vectors when storing several embeddings per item, such as dense and sparse; for multitenant apps, partition by a tenant ID payload with a tenant index rather than creating thousands of collections; keep original vectors on disk with quantized copies in memory, then rescore for accuracy; schedule snapshots; set API keys and TLS in production; pin server and client versions together; and monitor memory, latency and indexing status through metrics.

Qdrant vs pgvector: which should you use?

Use pgvector when you already run PostgreSQL, have up to a few million vectors, and want transactions, joins and one database to operate. Use Qdrant when vector search is central, collections are large, or you need advanced filtering, quantization and hybrid queries at scale.

pgvector keeps vectors next to relational data, which simplifies permissions and consistency; with HNSW indexes it performs well for many applications, and PostgreSQL full-text search enables hybrid retrieval with SQL. Qdrant is purpose-built, with filtering integrated into graph search, rich quantization, sparse vectors and horizontal scaling. Benchmarks vary by version and configuration, so measure recall, latency and memory on your own data. Many teams start with pgvector and move to Qdrant when scale demands.

What is the difference between Qdrant and Chroma?

Chroma is a lightweight, developer-friendly vector store, popular for prototypes and notebooks, that can run embedded in a Python process. Qdrant is a production-oriented vector database with stronger filtering, quantization, distributed deployment and performance tooling.

Also asked as: difference between qdrant and chromadb

Chroma's strength is simplicity: a few lines create a collection and query it, with built-in embedding functions. It also offers a client-server mode and a hosted cloud. Qdrant offers more control over indexing, memory, payload indexes, multitenancy and replication, which matters as data and traffic grow. For a hackathon or a small internal tool, Chroma is quick; for a multi-user production RAG system with permissions and millions of chunks, Qdrant is usually the safer choice.

What is the difference between Chroma and pgvector?

Chroma is a dedicated vector store focused on easy embedding storage and retrieval, often embedded in Python apps. pgvector is an extension that adds vector types and similarity indexes to PostgreSQL, so vectors live alongside your relational tables.

Also asked as: difference between chromadb and pgvector

Choose Chroma for quick prototypes and local experiments where you want minimal setup. Choose pgvector when your application already uses PostgreSQL, since you get SQL filters, joins, transactions, backups and access control without another system to run. pgvector suits production apps with moderate vector counts; Chroma suits learning and small projects. Both integrate with LangChain and LlamaIndex, so switching later is manageable if you keep retrieval behind a small interface in your code.

What are some Qdrant examples?

Qdrant's documentation and GitHub include examples for semantic search, RAG with LangChain and LlamaIndex, hybrid search with sparse vectors, recommendation systems, image similarity search and multitenant setups, many with runnable notebooks.

A minimal Python example: start Qdrant with Docker, create a collection with a vector size of 384 and cosine distance, embed a few sentences with FastEmbed or Sentence Transformers, upsert them with payloads such as category, then query with a sentence and a filter on category. From there, extend to RAG by chunking documents, storing page metadata, and passing the top results to a language model with citations. The qdrant/examples repository collects many such projects.

Where is Qdrant based?

Qdrant, the company, was founded in 2021 and is headquartered in Germany, with a distributed team working across countries. It develops the open-source Qdrant engine under the Apache 2.0 licence and offers Qdrant Cloud and enterprise deployment options.

For developers, location matters mostly for data residency: Qdrant Cloud lets you choose cloud providers and regions, so data can stay in specific geographies, and the hybrid and private cloud options run Qdrant inside your own infrastructure. The open-source engine itself runs anywhere you can run a container or binary. Check the company's website for current details on offices, compliance certifications and support plans, which change as it grows.

Is Qdrant down?

For Qdrant Cloud, check the official status page for incidents first. For a self-hosted server, check whether the container or process is running, read its logs, and call a health endpoint, such as /healthz or /readyz, on port 6333.

Common self-hosted problems: the container restarted after running out of memory, a full disk stopped writes, a port is not exposed, TLS or API key settings mismatch the client, or the client and server versions are incompatible. Check docker ps and docker logs, memory and disk usage, and collection status, which shows whether indexing is still running. For production, add monitoring and alerts on these metrics so you hear about issues before users do.

Sources

  1. Qdrant, Documentationqdrant.tech
  2. Qdrant, repositorygithub.com
  3. Qdrant, Python clientgithub.com
  4. Qdrant, examples repositorygithub.com
  5. pgvector, repositorygithub.com
  6. Chroma, documentationdocs.trychroma.com
Pranjul Rathour
Pranjul Rathour
GenAI Engineer · India

GenAI engineer and AI product builder with 2+ years shipping production-grade AI systems: RAG pipelines, fine-tuned LLMs, hybrid retrieval and multi-modal apps across vision, speech and OCR, architected end to end from ingestion to deployment. Leads engineering for SCULT INDIA's 14-member team, founded the 500+ member TechVerse Enclave community and has mentored 200+ students. Three hackathon first prizes: Changethon 2025 (IIT Roorkee), Product Genesis at Vividhotsava 2025 (CSJMU) and BYTEBATTLE (MeetKats).

Open to GenAI roles, hackathon judging, mentorship sessions and guest talks at colleges. For campus sessions the inviting institution covers the visit end to end: travel (a First AC train ticket for journeys up to five hours, a flight for anything longer), accommodation, meals, and pickup and drop; the honorarium and workshop fees are negotiable on WhatsApp or on the call, and requests are welcome from institutions that can cover the visit this way. Email pranjulrathour41@gmail.com.

Keep reading

More on RAG & retrieval

All RAG & retrieval guides →
Campus talks · hackathon judging · mentoring

Want this as a live session at your college?

Open to GenAI roles, hackathon judging, mentorship sessions and guest talks at colleges. For campus sessions the inviting institution covers the visit end to end: travel (a First AC train ticket for journeys up to five hours, a flight for anything longer), accommodation, meals, and pickup and drop; the honorarium and workshop fees are negotiable on WhatsApp or on the call, and requests are welcome from institutions that can cover the visit this way.

Pranjul Rathour, GenAI engineer in India