CtxVault v0.7.1
CtxVault v0.7.1 lets you choose which sentence-transformers embedding model each semantic vault uses, configured once at init time and pinned for all indexing and querying on that vault.
Added
Per-vault embedding model selection — ctxvault init now accepts --embedding-model <model> for semantic vaults. The chosen model is stored in the vault's config.json and used consistently by both index and query, ensuring vectors always stay comparable. A process touching multiple vaults loads each model exactly once via a per-name cache. Omitting the flag preserves the existing default (all-MiniLM-L6-v2), so all existing vaults continue to work without any migration.
ctxvault init my-vault --embedding-model all-mpnet-base-v2Passing --embedding-model on a skill vault is rejected immediately with a clear error, as skill vaults do not use embeddings.
Tests
Full coverage for #18 — new tests in test_core.py and test_cli.py assert that the model is stored in config when overridden and absent when using the default, that --embedding-model on a skill vault is rejected, that both index and query thread the vault's configured model to embed_list, and that get_model caches one instance per model name and falls back to the default correctly.
What's unchanged
All existing CLI commands, API endpoints, MCP tools, and vault operations work exactly as before.