2.5 KiB
2.5 KiB
ADR 0006: Qdrant Deployment
Status
Accepted
Context
The system is migrating from ChromaDB to Qdrant. Deployment must work fully on-premises with no external dependencies, given the risk of prolonged internet blackouts (up to 90 days).
Decision
Deploy Qdrant as a Docker container on-premises.
Configuration
# docker-compose.yml
services:
qdrant:
image: qdrant/qdrant:latest
ports:
- "6333:6333" # REST API
- "6334:6334" # gRPC API
volumes:
- ./qdrant_storage:/qdrant/storage
environment:
- QDRANT__LOG_LEVEL=INFO
restart: unless-stopped
Why Docker
- Isolation — consistent environment, no dependency conflicts
- Portability — easy to move between servers
- Simplicity — single container, no orchestration complexity
- Persistence — volume mount ensures data survives container restarts
- No external dependencies — fully on-prem
Collection Configuration
Single collection with named vectors:
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams
client = QdrantClient(host="localhost", port=6333)
client.create_collection(
collection_name="insurance_docs",
vectors_config={
"openai": VectorParams(size=3072, distance=Distance.COSINE),
"nomic": VectorParams(size=768, distance=Distance.COSINE),
}
)
Consequences
Positive
- Fully on-prem — works during internet blackouts
- Simple operations — single container to manage
- Fast access — no network latency to external services
- Data sovereignty — all data stays in your infrastructure
Negative
- Manual backups — must implement backup strategy
- Single point of failure — no built-in replication (consider Qdrant cluster if HA needed)
- Hardware dependent — performance tied to host resources
Neutral
- Storage requirements depend on corpus size and vector dimensions
- May need to tune Qdrant's HNSW parameters for optimal recall/speed trade-off
- Consider resource limits in Docker for predictable performance
Backup Strategy
- Regular snapshots:
qdrant-cli snapshot create - Volume backup: backup
./qdrant_storagedirectory - Test restore procedure before production deployment
Alternatives Considered
- Qdrant Cloud — requires internet, not viable
- Kubernetes deployment — adds complexity, not needed for single-node setup
- Standalone binary — Docker provides better isolation and process management