Prompt
I'm building a self-hosted vector search stack, what are the best options?
Latest observation
If you want a self-hosted vector search stack, the “best” option depends mostly on whether you want:
- a purpose-built vector database,
- vector search inside an existing database, or
- a search engine with vector support.
Here are the strongest choices by category.
Best self-hosted vector DB options
1) Qdrant
Best for: most production teams wanting a clean, easy-to-run vector database
Why it’s great
- Simple architecture and API
- Strong filtering + payload support
- Good performance for ANN search
- Easy to self-host with Docker/Kubernetes
- Good balance of features and operational simplicity
Tradeoffs
- Smaller ecosystem than Postgres/OpenSearch
- Less “general search engine” functionality than OpenSearch/Elastic
Choose Qdrant if: you want a dedicated vector DB that is straightforward and production-friendly.
2) Milvus
Best for: large-scale vector search and heavy throughput
Why it’s great
- Very popular at scale
- Designed specifically for vector workloads
- Rich indexing options and distributed architecture
- Good fit for very large datasets
Tradeoffs
- More complex to operate
- Heavier stack than Qdrant
- Often overkill unless you need scale
Choose Milvus if: you expect big data, distributed deployment, or high QPS and are willing to manage more complexity.
3) PostgreSQL + pgvector
Best for: teams already using Postgres, smaller-to-medium scale, or mixed relational + vector workloads
Why it’s great
- One database for metadata + vectors
- Easy operationally if you already run Postgres
- Great for hybrid app logic, filters, transactions
- Strong developer familiarity
Tradeoffs
- Not as fast or specialized as dedicated vector DBs at large scale
- Can become limiting for very large collections or very high query rates
Choose pgvector if: you want the simplest path and your scale is moderate.
Best search-engine style options
4) OpenSearch / Elasticsearch
Best for: hybrid search, keyword + vector search, enterprise search use cases
Why it’s great
- Excellent full-text search
- Hybrid retrieval with BM25 + vectors
- Filtering, scoring, aggregations, observability
- Mature ecosystem
Tradeoffs
- More operational overhead
- Vector search is not always as specialized as dedicated vector DBs
- Can be expensive in resources
Choose OpenSearch/Elasticsearch if: you need classic search capabilities along with vectors.
Other notable options
5) Weaviate
Best for: developer-friendly semantic search with rich features
Why it’s great
- Good vector search experience
- Hybrid search support
- Easy schema and API patterns
- Useful modules/ecosystem
Tradeoffs
- Operational complexity varies by setup
- Some teams prefer the simplicity of Qdrant
Choose Weaviate if: you like its feature set and API style.
6) Vespa
Best for: advanced ranking, large-scale search, custom retrieval pipelines
Why it’s great
- Powerful ranking and retrieval capabilities
- Combines vectors, text, and structured data well
- Highly customizable
Tradeoffs
- Steeper learning curve
- More complex to deploy and tune
Choose Vespa if: you need sophisticated ranking/search and can handle complexity.
Quick recommendations by use case
If you want the simplest good production choice:
- Qdrant
If you already use Postgres and want to keep it simple:
- Postgres + pgvector
If you need best hybrid text + vector search:
- OpenSearch or Elasticsearch
If you need large-scale distributed vector search:
- Milvus
If you want advanced retrieval/ranking pipelines:
- Vespa
A practical stack recommendation
For many self-hosted applications, a strong modern setup is:
- Embeddings model: local or hosted model
- Vector store: Qdrant
- Metadata store: PostgreSQL if needed
- App cache/queue: Redis
- Ingestion pipeline: your ETL / workers
- Optional reranker: cross-encoder or LLM reranker
If you need keyword search too:
- Qdrant + OpenSearch or just OpenSearch for a unified search layer
How to choose in 30 seconds
Ask:
-
Do I need full-text search too?
→ OpenSearch/Elasticsearch -
Do I want simplest dedicated vector DB?
→ Qdrant -
Do I already run Postgres and my scale is moderate?
→ pgvector -
Do I need massive scale / distributed architecture?
→ Milvus -
Do I need advanced ranking and retrieval logic?
→ Vespa
My default pick
If you haven’t decided yet: Qdrant is usually the best starting point for a self-hosted vector search stack because it gives you a strong combination of:
- performance
- simplicity
- filtering
- production readiness
- easy self-hosting
If you want, I can also give you:
- a feature-by-feature comparison table,
- a recommended architecture for your scale,
- or a Docker Compose stack for one of these options.