v0.6.0 — Vector Backend Abstraction + Qdrant
What's new
Vector Backend Abstraction
VectorBackend and Embedder protocols decouple storage from business logic. MemoryStore becomes a thin layer that delegates to whichever backend is configured.
Qdrant Backend
Native Qdrant support with server-side tag filtering via MatchAny, deterministic UUID point mapping, and concurrent read/write support. No more SQLite contention from ChromaDB under multi-agent workloads.
Hybrid BM25 + Vector Search
When using Qdrant, search combines dense vector similarity with BM25 keyword matching via reciprocal rank fusion. Enabled by default — transparent to the MCP tool interface.
Migration CLI
annal migrate --from chromadb --to qdrant --project <name> moves data between backends with batched inserts and progress reporting.
Config-driven Backend Selection
storage:
backend: qdrant
backends:
qdrant:
url: http://localhost:6333
hybrid: trueDefaults to ChromaDB for backwards compatibility. Install Qdrant support with pip install annal[qdrant].
Stats
- 10 commits, 12 files changed
- 185 tests passing (16 Qdrant backend + 10 Qdrant integration)
- New files:
backend.py,backends/chromadb.py,backends/qdrant.py,migrate.py