"Do we need a dedicated vector database, or can we just use Postgres?" comes up in nearly every project that involves semantic search or retrieval. The honest answer is that for a real share of production workloads, a dedicated vector database is unnecessary complexity, and for another real share, it's the right call from day one. The question is which situation you're actually in.

What a vector database actually does

Both a dedicated vector database and Postgres with the pgvector extension do the same core job: store embeddings and retrieve the nearest matches to a query embedding quickly. The difference is in how much scale, filtering complexity, and operational specialization that retrieval needs before it starts to matter.

When pgvector is genuinely the right call

When a dedicated vector database earns its keep

The actual decision framework

Start with pgvector if you already run Postgres and don't yet have concrete evidence that retrieval performance or feature needs have outgrown it. Migrate to a dedicated vector database when you have a specific, measured reason (a real latency problem at real scale, or a filtering need pgvector can't express well), not because it sounds more sophisticated or a blog post called it best practice.

A pattern worth avoiding
Standing up a dedicated vector database before you have production traffic to justify it adds operational overhead and cost for a scale problem you don't have yet. It's much easier to migrate from pgvector to a dedicated vector database once you have real evidence you need it than to have over-built for a scale that never materializes.

How we approach this

We default to pgvector when a project already runs Postgres and current scale doesn't demand more, and move to a dedicated vector database when there's a specific, measured reason. It's an engineering decision grounded in your actual workload, not a default setting.