Prompt
I'm unhappy with pgvector because I need better filtering and scale
Latest observation
Oct 7, 2026
OpenAI APIWeb search: off
If you’re unhappy with pgvector because of filtering + scale, that usually means you’ve hit the point where “vectors inside Postgres” is no longer the best fit.
Common reasons pgvector starts hurting
- Complex metadata filtering becomes slow or awkward at high cardinality
- Index performance degrades as the collection grows
- Hybrid search (vector + keyword + facets + recency) gets cumbersome
- Operational load competes with your primary OLTP database
- Relevance tuning becomes limited compared with dedicated vector/search systems
Better alternatives, depending on what you need
1) Dedicated vector database
Best if your main pain is ANN search at scale.
- Pinecone – managed, easy scaling, strong filtering
- Weaviate – flexible schema, hybrid search, decent filtering
- Qdrant – strong filtering, good performance, open source + managed options
- Milvus – good for very large scale, more operational overhead
Good choice if: vector retrieval is a first-class workload and filtering must be fast.
2) Search engine with vectors
Best if filtering + keyword + vector hybrid search matters.
- Elasticsearch / OpenSearch
- Good at:
- structured filters
- text search
- ranking
- faceting/aggregations
- vector search “good enough” for many apps
Good choice if: you need filters and search UX more than pure vector DB features.
3) Separate systems
A common architecture:
- Postgres for transactional metadata
- OpenSearch/Elastic or a vector DB for retrieval
- sync via CDC / queue / background jobs
This often gives the best balance of correctness and scale.
What to look for in the replacement
If filtering is the blocker, prioritize:
- Pre-filtering support at index/query time
- High-cardinality filter performance
- Hybrid retrieval
- Sharding / horizontal scaling
- Metadata + vector in the same query
- Latency under filtered ANN queries
Practical recommendation
- If you want best filtering + search UX: try OpenSearch/Elasticsearch
- If you want best vector-first filtering: try Qdrant or Pinecone
- If you expect very large scale and can manage ops: Milvus
Migration pattern
- Keep Postgres as source of truth
- Export embeddings + metadata to new engine
- Dual-write for a while
- Compare recall/latency/filter correctness
- Cut over reads once stable
If you want, I can help you choose among Qdrant vs Pinecone vs OpenSearch vs Weaviate based on:
- your data size
- filter complexity
- update rate
- latency target
- budget
- cloud/on-prem preference