Start with pgvector if your app already runs on Postgres: vectors sit next to your data and permissions. Move to Qdrant when vector search becomes its own workload that you want to tune, compress or self-host. Choose Pinecone when nobody on the team should operate a database. At one million vectors, Pinecone is cheapest at low query volume, pgvector's cost is flat, and Qdrant needs the least memory once quantized.
On pgvector vs Qdrant vs Pinecone, the short answer is: start with pgvector if your app already runs on Postgres, move to Qdrant when vector search becomes a workload of its own that you want to tune or self-host, and choose Pinecone when nobody on your team should be operating a database at all. All three store embeddings and return nearest neighbours well enough for RAG; they differ in who runs them, how they filter and what makes the bill grow.
Based on the vendors' documentation and pricing pages, checked October 2026: the pgvector README, Supabase pricing and compute sizing guide, Qdrant pricing, capacity planning and filtering docs, and Pinecone pricing, cost and limits docs. We did not benchmark the three ourselves: cost figures are arithmetic on list prices, and any speed figure is credited to the vendor that published it.
That is a deliberate limit. A latency chart from someone else's dataset tells you little about yours, and this page would rather give you the sums and the questions than a number you cannot reproduce. For what the model side of a RAG system costs, see our LLM API pricing comparison, the hub for this topic.
pgvector vs Qdrant vs Pinecone at a glance
| pgvector | Qdrant | Pinecone | |
|---|---|---|---|
| What it is | A Postgres extension (v0.8.7) | An open-source vector search engine (Apache 2.0, v1.19) with a managed cloud | A fully managed, serverless vector database |
| Can you run it yourself? | Yes, anywhere Postgres runs | Yes, or use Qdrant Cloud or Hybrid Cloud | No. Bring Your Own Cloud exists on Enterprise, still operated by Pinecone |
| Indexes | HNSW, IVFFlat, or an exact scan with no index | HNSW per vector, with optional quantization and float16 or uint8 storage | Dense, sparse and full-text index types, managed by the service |
| Filtering | SQL WHERE. Applied after the approximate index scan; iterative scans since 0.8.0 | Applied during the search through a filterable HNSW index; needs a payload index per filtered field | Metadata filters on queries; up to 40 KB of filterable metadata per record |
| Keyword plus vector | Postgres full-text search alongside; Supabase documents a hybrid pattern | Sparse vectors alongside dense ones | Sparse and full-text indexes; hybrid search |
| Many tenants | Row Level Security; partition by tenant for hard isolation | One collection with the tenant field indexed as is_tenant | Namespaces: 100 per index on Starter, 100,000 on Standard |
| Relation to your app data | Same database and transactions as your tables | A separate system you keep in sync | A separate system, eventually consistent after upserts |
| Free tier | Supabase Free: 500 MB database, pauses after a week idle | Free-forever cluster: 0.5 vCPU, 1 GB RAM, 4 GB disk | Starter: 2 GB storage, 2M write units and 1M read units a month, AWS us-east-1 |
| Paid entry point | Supabase Pro from $25 a month | Standard: billed hourly for vCPU, memory and storage | Builder $20 a month flat; Standard $50 a month minimum |
| Who operates it | You, or your Postgres host | You, or Qdrant | Pinecone |
Two axes explain most of that table: whether the thing is a general database or built only for vectors, and whether you run it or somebody else does.
pgvector: the vector store you already have
pgvector is the right first choice when your application data is already in Postgres. It adds a vector column type, distance operators and two approximate indexes, HNSW and IVFFlat, so retrieval is a SQL query that can join, filter and respect the same permissions as the rest of your tables.
- Strengths. One database, one backup, one set of access rules. A chunk and its embedding are written in the same transaction, so there is nothing to keep in sync. With Row Level Security, a user's search can only return rows they may read.
- Limits. HNSW and IVFFlat index up to 2,000 dimensions (4,000 with the
halfvectype). Filters are applied after the approximate index scan, so a selective filter can return fewer rows than asked; version 0.8.0 added iterative scans to compensate. And the index wants to live in RAM, which is what sets the price. - Price, checked October 2026. The extension is free. On Supabase you pay for the instance: Pro is $25 a month with $10 of compute credit, and compute runs from $10 (Micro, 1 GB) through $110 (Large, 8 GB) to $410 (2XL, 32 GB) a month.
Our pgvector on Supabase guide has the schema, the match function and the index choices in runnable SQL.
Qdrant: an engine built for vector search
Qdrant is the pick when vector search is the product, or a large enough part of it to deserve its own tuning. It is open source, runs in a container on your own servers or as a managed cluster, and exposes the knobs that pgvector hides or lacks.
- Strengths. Filtering happens during the graph search rather than after it: Qdrant builds extra links between points that share an indexed value, so a filtered query still returns a full result set. Quantization and per-structure memory tiers let you keep a compressed copy in RAM and the originals on disk. Its docs put a single node's ceiling at around 100 million vectors, with sharding and replication beyond that.
- Limits. It is a second system. Your app database remains the source of truth, and you write the code that keeps the two in step. Filters only work well on fields you indexed, ideally before loading data. For high availability the docs recommend at least three nodes with a replication factor of two or more.
- Price, checked October 2026. Self-hosting is free. Qdrant Cloud has a free-forever cluster (0.5 vCPU, 1 GB RAM, 4 GB disk) and a Standard tier billed hourly for vCPU, memory and storage. The pricing page points to a calculator instead of a rate card, so there is no list price to quote here.
pgvector vs Pinecone: what you trade
Pinecone is the opposite bet from pgvector: nothing to size, nothing to tune, and a bill that follows usage instead of hardware. You create an index, pick a cloud region and send vectors.
- Strengths. No instance to size and no index build settings to manage. Namespaces split one index per tenant, which also cuts query cost because a query is billed on the size of the namespace it searches. Hosted embedding and reranking models are available from the same API.
- Limits. It cannot be self-hosted. It is eventually consistent, so a record you just upserted may not be searchable for a moment. The free Starter plan is limited to one AWS region. And cost scales with every query, which is pleasant at low volume and needs watching at high volume.
- Price, checked October 2026. Starter is free. Builder is $20 a month flat with caps (10 GB storage, 5M write units, 2M read units). Standard has a $50 monthly minimum, then $0.33 per GB of storage, $4 to $4.50 per million write units and $16 to $18 per million read units depending on region. Enterprise has a $500 monthly minimum.
- Your data and users are already in Postgres
- Searches must respect per-user permissions
- Query volume is high and steady
- You want one system to back up and monitor
- You may need to self-host later
- Nobody on the team wants to run or size a database
- Query volume is low or spiky
- Vector count is growing faster than you can plan for
- Tenants map cleanly onto namespaces
- Your app is not on Postgres anyway
Monthly cost at one million vectors
Here is the same illustrative workload priced three ways: one million chunks, 1,536-dimension float vectors, about 1 KB of text and metadata per chunk, 100,000 queries a month, one region and no replicas.
| pgvector on Supabase | Qdrant | Pinecone | |
|---|---|---|---|
| Sizing basis | Supabase's published sizing table | Qdrant's capacity planning formulas | Pinecone's storage and read-unit formulas |
| What one million vectors need | 2XL compute with 32 GB RAM. At 384 dimensions, a Large with 8 GB | About 7.1 GB RAM unquantized; about 1.1 GB with 4-bit quantization and originals on disk | 7.15 GB of storage, and about 7 read units per query |
| Monthly bill | $425 at 1,536 dimensions; $125 at 384 | No public rate card: priced in its calculator. Self-hosted, the price of the server | $50 minimum on Standard (usage is about $15); $20 flat on Builder |
| One-off load | Included | Included | About 7.1M write units: $29 to $32 on Standard |
| What grows the bill | Vector count and dimensions, through RAM | Vector count, dimensions and replicas, through RAM | Query volume times namespace size, then storage |
| What the free tier holds | A small table: 500 MB database on shared 500 MB RAM | About 140,000 vectors by the same formula | About 280,000 records in 2 GB |
Arithmetic on list prices with illustrative inputs. Qdrant is left out because it publishes a calculator, not a rate card. Source: Pinecone pricing; Supabase pricing and compute sizing guide, checked October 2026
How the numbers are built, so you can redo them:
- pgvector. Supabase's sizing table lists one million 1,536-dimension vectors with HNSW on a 2XL instance: $25 plan plus $410 compute, less the $10 credit. At 384 dimensions the same count is listed on a Large ($110), which is why shortening vectors is the first thing to try.
- Qdrant. Its formula is vectors times dimensions times 4 bytes, plus the HNSW graph and an ID tracker, plus 20% headroom: about 7.1 GB of RAM here. With 4-bit quantization kept in RAM and the originals on disk, about 1.1 GB.
- Pinecone. Each record is roughly 7.15 KB, so the index is 7.15 GB: $2.36 a month of storage. A query costs one read unit per GB of namespace, so about 7 read units, and 100,000 queries cost $11 to $13. That is under the $50 minimum, so you pay $50.
The interesting part is where the lines cross. Pinecone's bill grows with every query; the Supabase instance costs the same whether you run one query or millions. On these inputs Pinecone's read units alone reach $425 at roughly 3.3 to 3.7 million queries a month. Below that, Pinecone is cheaper on paper. Above it, or if that Postgres instance is also serving the rest of your app, pgvector is. Two notes on the Builder plan: its usage beyond the caps is blocked rather than billed, and the initial load of about 7.1 million write units exceeds its 5 million monthly allowance, so loading takes two months or a spell on Standard.
Qdrant vs pgvector performance: what the published numbers show
There is no neutral benchmark of these three on one dataset, and we have not run one. What exists is each vendor measuring itself.
- pgvector. Supabase reports one million OpenAI embeddings with HNSW on its 2XL instance at 560 queries per second, 0.036 seconds mean latency and 0.99 accuracy, and 950 queries per second on a 4XL.
- Qdrant. Qdrant maintains an open-source benchmark suite comparing several engines on identical machines. The page was last updated in 2024 and does not include pgvector or Pinecone.
- Pinecone. Serverless has no instance to size, so there is no figure to compare. For steady high read volume it offers Dedicated Read Nodes on the Standard plan.
- Recall against an exact search, on at least a few hundred of your real queries
- Latency at the 95th percentile, not the mean, at your real concurrency
- The same test again with your real filters switched on
- Queries while data is being written, not only on a quiet index
- Memory and disk in use after the index has finished building
- Monthly cost at today's volume and at ten times it
- Hours spent on setup, upgrades and backups
Which one to pick: a decision tree by scale
Work down the list and stop at the first line that describes you. The thresholds come from the vendors' own sizing documents.
- 1The documents fit in the prompt
You need no vector database. Send them with prompt caching and skip retrieval.
- 2Your app is on Postgres, up to tens of thousands of vectors
pgvector. Supabase lists 15,000 vectors of 1,536 dimensions on its smallest paid instance.
- 3Hundreds of thousands of vectors
Still pgvector, with an HNSW index and more RAM, or shorter vectors: 500,000 at 384 dimensions is listed on a 4 GB instance.
- 4Around a million
Price all three with the table above. Low query volume favours Pinecone; steady volume favours pgvector; tight memory favours Qdrant.
- 5Heavy filtering or thousands of tenants
Qdrant filters during the search and Pinecone isolates tenants in namespaces. Test pgvector's recall with your real filters first.
- 6Tens of millions and beyond
A dedicated engine. Qdrant puts one node's ceiling near 100 million vectors and scales out with shards; Pinecone has no nodes to size.
- 7Nobody to run a database
Pinecone, or a managed Qdrant cluster. Self-hosting is only cheapest if somebody's time is free.
Whichever you pick, keep the chunk text and document IDs in your own database and treat the vector store as an index you could rebuild. That makes the choice reversible, and it is the reason starting on pgvector costs you so little: when you outgrow it, the data is already where a migration script can read it.
Two alternatives sit outside this comparison. If your queries are mostly exact terms, product codes or names, Postgres full-text search may serve better than embeddings, and Supabase documents a hybrid of the two. And if the whole corpus fits in a model's context window, none of this is needed; our RAG vs fine-tuning guide covers that decision. For agents rather than documents, see AI agent memory options compared. The AI SaaS Builder program takes the pgvector route on Supabase and builds retrieval into a working product.
pgvector vs Qdrant vs Pinecone: FAQ
Is pgvector good enough for production RAG?
Yes, for a large share of products. pgvector gives Postgres a vector type, HNSW and IVFFlat indexes and SQL filtering, and Supabase publishes benchmarks of one million 1,536-dimension vectors on a single instance at 0.99 accuracy. Its limit is memory: the index wants to sit in RAM, so cost climbs with vector count and dimensions. Past the point where that instance is uncomfortable, a dedicated engine is worth pricing.
Is Qdrant faster than pgvector?
There is no neutral number to quote. Qdrant publishes an open-source benchmark of several engines, last updated in 2024, that does not include pgvector or Pinecone, and Supabase publishes pgvector figures on its own hardware. Results depend on whether the index fits in RAM, vector size, filters and the recall you accept. Test both on your own data at the same recall before believing any chart, including a vendor's.
Is Pinecone more expensive than pgvector?
It depends on query volume. On October 2026 list prices, one million 1,536-dimension vectors cost about $2.36 a month to store on Pinecone and roughly 7 read units per query, which stays under the $50 Standard minimum at 100,000 queries a month. The same vectors on Supabase need a 32 GB instance at $425 a month, flat. Pinecone's read units reach that figure at about 3.3 to 3.7 million queries a month.
Can I self-host Pinecone?
No. Pinecone is a managed service. Its Enterprise plan offers Bring Your Own Cloud, which runs Pinecone inside your own cloud account, but Pinecone still operates it. Qdrant and pgvector are both open source and can run on your own servers: Qdrant as a standalone engine, pgvector as an extension inside any Postgres you control. Qdrant also sells a managed cloud and a hybrid option on your infrastructure.
When should I move from pgvector to a dedicated vector database?
When vector search starts dictating the size of your database server. Signs include an instance sized for the index rather than for your app, recall dropping under selective filters, slow index builds blocking other work, or tens of millions of vectors on the roadmap. Before moving, try smaller vectors and iterative scans, which are cheaper than a migration. Keep source text and IDs in Postgres either way.
Which vector database has the best free tier?
They differ in shape, checked October 2026. Pinecone Starter includes 2 GB of storage, 2 million write units and 1 million read units a month in one AWS region. Qdrant Cloud has a free-forever cluster with 0.5 vCPU, 1 GB of RAM and 4 GB of disk. Supabase Free gives a 500 MB Postgres database that pauses after a week of inactivity. For vectors alone, Pinecone's holds the most.
Can I switch vector databases later?
Yes, and it is easier than switching embedding models. Vectors are just arrays of numbers, so moving them means exporting IDs, vectors and metadata and loading them elsewhere, with no re-embedding as long as the model stays the same. Make it painless by keeping the chunk text and document IDs in your own database, treating the vector store as an index you can rebuild, and hiding it behind one search function.
Picked your vector store? Build the product on top of it.
AI SaaS Builder, included in All Access, builds RAG on Supabase with pgvector and the Claude API, then covers auth, deployment and billing for the app around it, alongside the other three programs, live coaching and the private community.
Still torn between two of them?
Share your vector count, query volume and stack in the free Discord and get a second opinion before you commit.