feat(qdrant): provision the chunks collection as an explicit deployment step
Why: - The chunks collection needs four named vectors (dense_nomic, dense_openai, sparse, late_interaction) and payload indexes defined at creation time per ADR-0001; sparse/multivector fields cannot be added to an existing collection without recreating it, so schema drift here is expensive. - Creating it at FastAPI startup would mirror the DDL-at-boot anti-pattern ADR-0009 already rejects for Postgres and ADR-0012 rejects for LangGraph's setup(), so it is a deployment step instead. Changes: - src/infrastructure/qdrant/collection.py: ensure_chunks_collection(), idempotent and schema-verifying (raises on dimension/modifier mismatch rather than silently accepting a misconfigured collection). - src/cli/qdrant_bootstrap.py: the operator entry point (python -m src.cli.qdrant_bootstrap). - QdrantSettings gains collection/upsert_batch_size/upsert_concurrency. Impact: - Deployments must run the new bootstrap command before the first upload; see ADR-0001's new "Collection provisioning" section.
This commit is contained in:
@@ -44,6 +44,9 @@ INGESTION_EMBED_CONCURRENCY=4
|
||||
# Qdrant
|
||||
QDRANT_URL=http://127.0.0.1:6343
|
||||
QDRANT_API_KEY=
|
||||
QDRANT_COLLECTION=chunks
|
||||
QDRANT_UPSERT_BATCH_SIZE=128
|
||||
QDRANT_UPSERT_CONCURRENCY=4
|
||||
|
||||
# Dense embedders (ADR-0001). Both speak an OpenAI-compatible /embeddings
|
||||
# endpoint, so one adapter serves both. Models and endpoints are the ones the
|
||||
|
||||
Reference in New Issue
Block a user