Vector DB setup: (1) Выбор — Qdrant (Rust open-source, fast), pgvector (extension Postgres, simple), Weaviate (hybrid search), (2) Docker deploy или managed cloud, (3) Create collection с vector size (1536 для OpenAI, 768 для bge-small), (4) Configure HNSW parameters (m=16, ef_construct=100), (5) Upsert + search, (6) Monitor via Grafana + Enterno Ping для health.
Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.
docker run -d -p 6333:6333 -v qdrant_data:/qdrant/storage qdrant/qdrant:latest| Сценарий | Конфиг |
|---|---|
| Qdrant create collection | curl -X PUT http://localhost:6333/collections/docs \
-H 'Content-Type: application/json' \
-d '{
"vectors": {"size": 1536, "distance": "Cosine"},
"hnsw_config": {"m": 16, "ef_construct": 100}
}' |
| pgvector in Postgres | CREATE EXTENSION vector;
CREATE TABLE docs (id bigint, embedding vector(1536), payload jsonb);
CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops);
-- Query
SELECT id FROM docs ORDER BY embedding <=> '[0.1,...]' LIMIT 5; |
| Weaviate hybrid search | client.query.get('Doc', ['content'])
.with_hybrid(query='TLS cert', alpha=0.5)
.with_limit(10).do() |
| Qdrant batch upsert | curl -X PUT http://localhost:6333/collections/docs/points/batch \
-d '{"batch": {"ids": [1,2,3], "vectors": [[...],[...],[...]], "payloads": [{...},{...},{...}]}}' |
| Prometheus monitoring | # Qdrant exposes /metrics с prom format
scrape_configs:
- job_name: qdrant
static_configs:
- targets: ['qdrant:6333'] |
До 1M vectors — да. Embedded в Postgres = single DB, transactional. Больше 10M — dedicated vector DB.
Qdrant: focus на vectors, fast Rust. Weaviate: hybrid search built-in, modular. Для pure vector — Qdrant. Для hybrid — Weaviate.
Qdrant: snapshot API, multi-region replication (Enterprise). pgvector: стандартный Postgres backup (pg_dump, WAL).
<a href="/ping">Enterno Ping</a> для порта 6333/5432. <a href="/monitors">Monitors</a> для /health endpoint + alerts.