Choosing a Vector Database: pgvector vs Dedicated Stores Teams already running Postgres with corpora in the millions of vectors should start with the pgvector extension, which keeps embeddings in the same row and transaction as source data and provides HNSW and IVFFlat approximate indexes, according to a comparison of pgvector against dedicated vector stores. The comparison advises migrating to a dedicated store only when a measurable problem appears — the index no longer fits in memory, filtered queries miss acceptable recall, vector load degrades transactional latency, or the corpus approaches hundreds of millions of vectors. It also notes Amazon S3 Vectors reached general availability in December 2025 with support for up to 2 billion vectors per index and roughly 100 ms latency for frequent queries. The real question isn't which vector database is best. It's where your vectors should live: next to the rest of your data in Postgres, or in a system built only for similarity search. Many teams already run Postgres, so the decision often comes down to this: is pgvector enough, or have you hit a specific wall that a dedicated store would fix? This post compares the two on the things that actually decide it: scale, filtering, hybrid search, operations, and cost. It ends with a decision flow and a short benchmark plan so you can settle the question with your own data instead of a vendor chart. The short version - If you already run Postgres and your corpus is in the millions of vectors, start with pgvector. You get one system, SQL filtering, and transactional consistency with your source data. - Move to a dedicated store when you can measure a problem: the index no longer fits in memory, filtered queries can't reach acceptable recall, vector load hurts your transactional latency, or the corpus is heading into the hundreds of millions. - "Everyone else uses a vector database" is not a reason. Each extra system is another thing to sync, secure, monitor, and pay for. What you're choosing between pgvector is a Postgres extension. It adds the vector , halfvec , and sparsevec column types, distance operators which also work on Postgres's built-in bit type for binary vectors , and two approximate indexes: HNSW and IVFFlat. With no index, it does exact nearest-neighbor search, which gives perfect recall but scans every row. Postgres-side extensions stretch pgvector further. pgvectorscale adds a StreamingDiskANN index aimed at workloads where the HNSW index no longer fits in RAM. VectorChord takes an IVF-based approach with quantization, aimed at very large datasets. Some managed services add their own indexes too, such as AlloyDB's ScaNN-based option. Treat vendor benchmarks for all of these with caution and run your own. Dedicated vector databases are built around search. Pinecone is a managed service. Its bring-your-own-cloud option, in public preview for Enterprise plans at the time of writing, keeps the data plane in your own cloud account, but Pinecone still operates it for you. Qdrant is open source written in Rust and can be self-hosted or rented. Weaviate is open source written in Go with a focus on hybrid search. Milvus is open source and designed for very large scale, with Zilliz Cloud as its managed version. Object-storage vector search is a newer category. Amazon S3 Vectors reached general availability in December 2025, supports up to 2 billion vectors per index, and AWS cites roughly 100 ms for frequent queries and sub-second for infrequent ones. It is built to minimize storage cost rather than deliver the lowest possible latency, and it is AWS-only. The architectural difference is where the vectors live and what keeps them in sync: flowchart LR subgraph SA "Option A: pgvector" App1 "Application" -- PG1 "Postgres