Qdrant vs pgvector
A dedicated vector engine, or vectors next to the rest of your data.
Choose pgvector when you already run Postgres and want vectors beside your records, joined and filtered with SQL in one database. Choose Qdrant when vector search is a core workload, with large collections, heavy filtering, hybrid search, or memory pressure that a dedicated engine handles better. We use Qdrant in NoteTube and pgvector in Acasa Sentinel.
Updated · Acasa Labs
At a glance
Qdrant and pgvector, side by side.
| Dimension | Qdrant | pgvector |
|---|---|---|
| What it is | QdrantA dedicated vector database, written in Rust | pgvectorAn extension that adds vector types and indexes to Postgres |
| Where it runs | QdrantSelf-hosted, or Qdrant Cloud | pgvectorAny Postgres that allows it: Supabase, Cloud SQL, RDS, or your own |
| Indexes | QdrantHNSW, with payload indexes for filtering | pgvectorHNSW and IVFFlat |
| Filtering | QdrantFilters on payload fields, applied during the search | pgvectorSQL WHERE clauses; filtered queries need index and query care |
| Hybrid search | QdrantDense and sparse vectors in one collection | pgvectorCombine with Postgres full-text search in SQL |
| Memory and scale | QdrantQuantization and on-disk storage options built in | pgvectorhalfvec and bit types; scale follows your Postgres server |
| Joins with your data | QdrantNo; keep IDs and join in the application | pgvectorYes: vectors, records, and PostGIS in one query |
| Operations | QdrantOne more service to run, back up, and monitor | pgvectorNothing new; it is your existing database |
| Licence | QdrantApache 2.0 | pgvectorPostgreSQL licence |
01
The decision is mostly about your database
Both store embeddings and find the nearest ones to a query, and both use HNSW indexes to do it fast. For a few hundred thousand vectors with simple filters, either will answer in milliseconds, and users will not tell them apart.
The real choice is architectural. pgvector keeps vectors inside Postgres, so they live next to your users, documents, and permissions, and one transaction can update all of them. Qdrant is a separate service built only for vector search, so you get more search features and tuning, and one more system to run and keep in sync.
02
When pgvector is the better choice
Pick pgvector when you already run Postgres. There is no new service, no second backup plan, and no sync job between your records and your vectors. If a document is deleted, its embeddings can be deleted in the same transaction.
Pick it when the search needs your relational data. Filtering by tenant, date, or status, or joining to other tables and extensions such as PostGIS, is plain SQL.
And pick it when the collection is moderate and the team is small. Managed Postgres providers such as Supabase and Cloud SQL offer pgvector, so the vector store comes with the database you already pay for.
03
When Qdrant is the better choice
Pick Qdrant when vector search is the product's core workload. Large collections, many queries per second, and frequent re-indexing are what a dedicated engine is built for, and keeping that load off your main database protects everything else.
Pick it when filtering is heavy. Qdrant applies payload filters during the search rather than before or after it, which keeps results accurate when a filter, such as one user's documents, matches only a small slice of the collection.
And pick it when you need search features beyond nearest neighbours: sparse and dense vectors together for hybrid search, quantization to cut memory, and multitenancy patterns built into the engine.
04
Filtering, the part that bites
Most RAG systems never search everything. They search one user's notes, one customer's documents, or one project's files. How the store combines the filter with the vector index decides whether results are both fast and complete.
In Qdrant, you index the payload fields you filter on and the engine plans around them. In pgvector, an approximate index can return fewer rows than you asked for when a selective WHERE clause discards most of the candidates, so you test filtered queries on realistic data and tune the index and query settings, or use partitions or partial indexes per tenant.
05
Changing your mind later
Embeddings are portable. If you keep the source text and the embedding model's name with each chunk, you can move from pgvector to Qdrant, or back, with a re-index job rather than a rewrite. Hide the vector store behind one module in your code and the switch touches one file.
That is why we rarely agonise over this choice on a first version. Start where your data already lives, measure retrieval quality and latency with real queries, and move when the numbers say so.
From production
One of each, in real systems.
Qdrant for per-user retrieval
NoteTubeNoteTube stores chunks from every source a student uploads in Qdrant, with per-user, per-session scoping, and streams grounded answers from a FastAPI service. Relational data sits separately in Supabase Postgres.
pgvector beside location and time
Acasa SentinelAcasa Sentinel stores a 768-dimension DINOv2 embedding for every vehicle sighting in Postgres with pgvector, alongside PostGIS, so appearance search can work with where and when a vehicle was seen even when its plate is unreadable.
Retrieval that is not only vectors
SigmaCPMSigmaCPM retrieves candidate pages from a tender package before extraction, so the model reads the right pages instead of the whole package. Good retrieval is about the right pages, whatever the store.
How we choose
The five questions we ask before choosing
An existing Postgres, moderate scale, and joins point to pgvector. Vector search as the core workload, heavy filtering, or hybrid search at scale point to Qdrant.
- 01Do you already run Postgres, and is it managed for you?
- 02How many vectors, and how many queries a second, in a year?
- 03How selective are the filters, such as per-user or per-tenant?
- 04Does search need to join with records or locations?
- 05Who will run and monitor one more service?
Questions
Qdrant vs pgvector, asked often.
Is pgvector good enough for production RAG?
For many products, yes. Acasa Sentinel runs appearance search on pgvector. Test filtered queries on realistic data before you rely on it.
Is Qdrant faster than pgvector?
It depends on the collection, filters, and hardware. Benchmarks vary widely. Measure with your own data and queries before deciding on speed.
Can we start on pgvector and move to Qdrant later?
Yes. Keep the source text and model name with each chunk, wrap the store in one module, and the move is a re-index job.
Do we need a vector database at all?
Not always. For small collections or exact-match needs, Postgres full-text search or a well-designed filter may be enough. We test that first.
Should we self-host Qdrant or use Qdrant Cloud?
Self-host if you already run containers and want data in your account. Use the cloud service if nobody on your team wants to operate it.
Qdrant vs pgvector
Picking a vector store? Bring your queries.
Tell us what you search, how much, and who can see what. We will tell you where the vectors should live, and how we would test it.