I've used 6 different vector databases in production. Here's my honest, no-sponsor comparison.
Pinecone: Managed, zero-ops, works immediately. Best for teams that don't want to manage infrastructure. Expensive at scale. Great for getting started and staying in production.
Weaviate: Feature-rich open source. Hybrid search built in. Good for teams that want control without building everything from scratch. Steeper learning curve than Pinecone.
Qdrant: Fast. Written in Rust. Good filtering capabilities. My pick for performance-critical applications. Excellent documentation.
Chroma: Lightweight, easy to embed in applications, great for prototyping and local development. I wouldn't recommend it for heavy production loads, but perfect for getting started.
pgvector: If you're already using PostgreSQL, this avoids adding another database to your stack. Good enough for many use cases. Not as feature-rich or fast as dedicated vector DBs.
Milvus: Designed for massive scale. If you're dealing with billions of vectors, this is the option. Overkill for most applications.
My decision framework: prototyping → Chroma. Small to medium production with managed preference → Pinecone. Performance-critical or cost-sensitive production → Qdrant or Weaviate. Already using Postgres → pgvector. Massive scale → Milvus.
There's no universally best choice. But there's usually a clearly best choice for YOUR specific situation.