Short answer: pgvector is the best vector database for most developers in 2026, because it is free, it runs inside the Postgres you probably already pay for (Supabase, Neon, Amazon RDS, Cloud SQL), and since version 0.8.0 it handles filtered queries properly. Qdrant is the better pick above roughly 10 million vectors or when every search carries heavy metadata filters. Pinecone is for teams that want zero database operations and can accept a $50/month minimum; Weaviate earns its place if you want keyword and vector search fused in one query.

Most RAG projects start the same way. Someone follows a tutorial, signs up for a hosted vector database, pipes in a few thousand chunks of documentation, and six months later has two databases that have to agree about which documents exist. We think that second database is usually a mistake, and this page explains when it is not. Prices below are list prices from each vendor's pricing page, checked on November 2, 2026; pgvector details come from the project's README at version 0.8.x.

pgvector vs Pinecone vs Qdrant vs Weaviate: comparison table

DatabaseBest forModelFree optionPaid entry pointKey trade-off
pgvectorApps already on Postgres, under ~10M vectorsPostgres extension, open source (PostgreSQL license)Free; included on Supabase, Neon, RDS, Cloud SQL, AzureWhatever your Postgres costsHNSW builds want a lot of memory; index cap of 2,000 dims for vector
QdrantFilter-heavy search, large collections, self-hostingDedicated engine in Rust, Apache 2.0; managed cloud billed by resourcesCloud Free Tier: 0.5 vCPU, 1 GB RAM, 4 GB disk, free foreverStandard tier, hourly for vCPU, RAM, and disk (no list price published)A second datastore to keep in step with your primary one
PineconeTeams with no one to run infrastructureProprietary, serverless onlyStarter: 2 GB, 1M read units and 2M write units/month, 5 indexes, us-east-1 onlyBuilder $20/month flat; Standard $50/month minimumUsage pricing in read units is hard to forecast; no self-hosting
WeaviateHybrid keyword plus vector search, multi-tenant SaaSDedicated engine in Go, BSD-3; managed cloud billed per vector dimensionFree plan: 1 cluster, 100,000 objects, 1 GB memory, 10 GB diskFlex from $45/month; Premium from $400/monthThe most configuration to learn of the four

Pinecone pricing in practice

Pinecone publishes clear unit prices. Standard: storage at $0.33 per GB-month, read units from $16 per million, write units from $4 per million (both vary a little by cloud and region). Enterprise lifts the minimum to $500/month and read units to $24 to $27 per million.

The catch is the read unit. A read unit is not one query, and a query against a bigger namespace consumes more of them, so the number you need to forecast is the one you know least about before launch. A million 1,536-dimension embeddings take about 6 GB, which is roughly $2 a month of storage. The rest of the $50 minimum buys about 3 million read units. For an internal docs bot that is plenty. For a customer-facing search box it might be a week.

The memory math nobody puts in the tutorial

One float32 is 4 bytes. One million OpenAI text-embedding-3-small vectors (1,536 dimensions) is 1,000,000 x 1,536 x 4 = about 6.1 GB of raw vector data, before the HNSW graph links and before Postgres keeps its own copy in the table heap. Every engine on this page wants the hot part of that in RAM to hit single-digit-millisecond queries.

That number decides more than the vendor does.

In pgvector, store the column as halfvec and the same million vectors drop to roughly 3 GB, usually with a recall change you will not notice in a RAG answer. Qdrant gets similar savings from scalar quantization (float32 to int8, a 4x reduction) and goes further with binary quantization if your embedding model tolerates it. Pinecone and Weaviate Cloud bill you for the footprint, so the saving shows up on the invoice instead of in your instance size.

The trap we see most often: text-embedding-3-large returns 3,072 dimensions, and pgvector will not build an HNSW or IVFFlat index on a vector column wider than 2,000. You get an error at CREATE INDEX, not at insert, which means the table fills up fine and then fails on the step that makes it usable. Use halfvec (indexable to 4,000 dimensions) or ask the API for fewer dimensions with its dimensions parameter.

Where each option fits (and where it does not)

pgvector

Our default. The killer feature is boring: an embedding is a column, so when a document is deleted its vector goes with it in the same transaction, and row-level security and point-in-time recovery cover it without a sync job. If you are choosing the Postgres host first, our Neon vs Supabase Postgres comparison covers how each one handles extensions and branching, and the Supabase vs Neon vs PlanetScale guide for production Next.js prices the whole database bill.

Check your version before anything else: SELECT extversion FROM pg_extension WHERE extname = 'vector';. Below 0.8.0, a query like "nearest 10 chunks WHERE tenant_id = 42" can return 3 rows, because the HNSW scan finds 40 candidates and the filter throws most of them away. Version 0.8.0 added iterative index scans; set hnsw.iterative_scan = relaxed_order and pgvector keeps scanning until it has enough rows or hits hnsw.max_scan_tuples (20,000 by default).

Where it does not fit: index builds. With the default maintenance_work_mem, Postgres prints NOTICE: hnsw graph no longer fits into maintenance_work_mem partway through and the build slows to a crawl, which on a managed 4 GB instance can mean an evening. Past 10 to 20 million vectors on one node, or when vector queries start fighting your OLTP traffic for the buffer cache, move on.

Qdrant

The dedicated engine we would pick. Payload filters are applied inside the HNSW search rather than after it, which is exactly the problem pgvector had to patch in 0.8.0, and quantization is a collection setting rather than a schema migration. It is a single Rust binary that runs happily in Docker on a laptop, and the free cloud cluster (1 GB RAM) is enough to test a real dataset at reduced size.

The cost is operational. You now have two sources of truth, and the code that keeps Qdrant in step with Postgres on updates and deletes is code you will debug at some point. Qdrant does not publish a starting price for paid clusters; you size a cluster in their calculator and see the hourly rate there.

Pinecone

Pinecone is the easiest of the four to start and the hardest to leave. There is nothing to size, nothing to patch, and the free Starter plan is real (2 GB, 5 indexes). It is also proprietary, serverless only, and the free tier lives in AWS us-east-1, which matters if your users or your compliance team are in Frankfurt.

Pick it when the team is two people and neither wants a pager. Skip it if your traffic is spiky and public, because read units are where the bill grows.

Weaviate

Weaviate does hybrid search (BM25 keyword ranking fused with vector similarity) in one query, and its multi-tenancy model suits a SaaS where each customer gets an isolated slice. The free plan holds 100,000 objects, Flex starts at $45/month, and Premium has a $400/month minimum. We rate it last here because for most teams pgvector plus Postgres full-text search gets most of what hybrid search offers with no new system, and Weaviate's module system is more to learn than the other two engines.

What about running embeddings locally?

The database stores vectors; something else has to make them. If you would rather not send every document to an embedding API, our Ollama vs LM Studio vs LocalAI comparison covers serving an embedding model on your own hardware. Smaller local models (768 or 1,024 dimensions) also halve the memory math above.

How to choose

  1. You already run Postgres and have fewer than 10 million vectors: pgvector 0.8.0 or later, with halfvec for anything over 2,000 dimensions.
  2. Every query filters by tenant, date, or permissions, at large scale: Qdrant.
  3. No one on the team will operate a database, and traffic is predictable: Pinecone.
  4. You need keyword and semantic ranking fused in one call: Weaviate.

Our pick for a new RAG feature in a Postgres app is pgvector, full stop, and we would revisit it the day index builds start taking longer than the deploy window. If you are on AWS and choosing the Postgres host itself, see the Amazon RDS vs Cloud SQL vs Azure Database comparison. Other database head-to-heads are on the reviews index.

Frequently asked questions

What is the best vector database in 2026?

For most teams that already run Postgres, pgvector is the best vector database in 2026: it is free, runs on Supabase, Neon, Amazon RDS, and Google Cloud SQL, and keeps embeddings in the same transaction as the rows they describe. Qdrant is the better choice past roughly 10 million vectors or when every query carries heavy metadata filters. Pinecone fits teams with no one to run infrastructure, from a $50/month minimum on its Standard plan.

Is pgvector good enough for production?

Yes, for most RAG and semantic search workloads up to several million vectors. Use version 0.8.0 or later, which added iterative index scans (hnsw.iterative_scan) so filtered queries stop returning too few rows. The main limits are memory for HNSW index builds and the 2,000-dimension cap for indexing the vector type; halfvec raises that to 4,000.

How much does Pinecone cost in 2026?

Pinecone's Starter plan is free with 2 GB of storage, 1 million read units and 2 million write units a month, up to 5 indexes, in AWS us-east-1 only. Builder is $20/month flat. Standard has a $50/month minimum, with storage at $0.33 per GB-month, read units from $16 per million, and write units from $4 per million. Enterprise starts at a $500/month minimum.

Can pgvector index OpenAI text-embedding-3-large vectors?

Not as the plain vector type. text-embedding-3-large returns 3,072 dimensions and pgvector's HNSW and IVFFlat indexes support up to 2,000 dimensions for vector. Store or cast the column as halfvec, which indexes up to 4,000 dimensions at half the memory, or request shorter embeddings with the API's dimensions parameter.

Does Qdrant have a free tier?

Yes. Qdrant Cloud's Free Tier is a single-node cluster with 0.5 vCPU, 1 GB of RAM, and 4 GB of disk, listed as free forever. Paid Standard clusters are billed hourly for vCPU, memory, and storage. Qdrant is also open source under Apache 2.0, so you can self-host it at no license cost.