The vector backend follows the retrieval profile you chose at setup. The default local profile uses sqlite-vec: dense vectors live in a local file beside the SQLite index, and embeddings come from the vendored potion-base-8M model. That path requires no API key, daemon, model download, or network access.
Default sqlite-vec backend
vector_store:
provider: sqlite-vec
collection: docmancer_docs
options:
db_path: ~/.docmancer/sqlite-vec.db
embeddings:
provider: model2vec
model: minishlab/potion-base-8M
dimensions: 256
Memory uses its own sqlite-vec file co-located with memory.db; docs use the configured docs vector path. Separate projects can therefore keep isolated vector state without a shared service.
Lexical-only operation
DOCMANCER_AUTO_VECTORS=0 docmancer docs add ./docs
docmancer docs add ./docs --no-vectors
FTS5 remains available for exact names, flags, error messages, and other lexical queries.
The scale profile
Switch to Qdrant when you need FastEmbed dense embeddings, sparse SPLADE retrieval, filtered vector search, or sustained concurrent ingestion, roughly in the 50,000 to 100,000 document range:
pipx install 'docmancer[embeddings-heavy]'
docmancer qdrant up
docmancer setup --profile scale
Setup writes the matching configuration for you:
retrieval:
profile: scale
vector_store:
provider: qdrant
collection: docmancer
embeddings:
provider: fastembed
sparse_model: prithivida/Splade_PP_en_v1
The scale profile also stops writing one extracted file per source and keeps that content in SQLite instead.
The docmancer qdrant up|down|status|upgrade|logs command group manages a Docmancer-owned local Qdrant. Ownership sentinels prevent Docmancer from claiming or deleting foreign collections and refuse to stop foreign PIDs, and telemetry is disabled for managed processes.
Both profiles implement the same memory semantics. Switching changes storage, embeddings, sparse retrieval, and operational capacity, not authority, lifecycle, provenance, or conflict handling. Qdrant does not fix poor source coverage or weak evaluation. If the backend is unavailable, docmancer status reports the failure and you can return to --profile local.
Combination
Vector sync tracks content hashes, skips unchanged sections, prunes points whose SQLite sections no longer exist, and rebuilds changed embeddings. docmancer docs list and docmancer status report section and vector counts so drift remains visible.