Qdrant
Qdrant is a standalone vector database (Rust). It serves HTTP 6333 (REST / dashboard) and 6334 (gRPC). Use it when you need payload filters, many clients, or hybrid search later. Docs: qdrant.tech/documentation.
Keep Chroma for laptop spikes and pgvector when Postgres is already the system of record.
Start with Docker
You need Docker locally. The official quickstart maps both ports and mounts a volume.
Open http://localhost:6333/dashboard. Health:
If you only publish 6333, Python clients that prefer gRPC cannot reach 6334. Mapping both ports is the boring, reliable choice. Docker basics: Docker tutorial.
Python client: collection, upsert, search
upsert inserts or overwrites the same id. Older samples call client.search(...); new code should follow the official quickstart and use query_points. size must match the embedding (OpenAI small = 1536, bge-m3 ≈ 1024).
Payload filters
This is the first layer of “hybrid”: semantic neighbors and department / language / time constraints. A full FAQ + filter walkthrough is Practical Examples example 3.
Hybrid teaser (dense + sparse)
Qdrant can store dense and sparse (BM25-style) vectors in one collection, then fuse ranks (RRF). Get dense + filter solid first:
Clause numbers and proper nouns often prefer sparse; paraphrases prefer dense. Before combining them, compare “dense only” vs “dense + filter” with hit@k in Evaluation.
Next steps
- Retrieval
- Practical Examples
- Official quickstart: https://qdrant.tech/documentation/quickstart/