Commit 58a3b88
committed
feat(vectordb): add Qdrant backend support
Add Qdrant as an alternative open-source vector database backend
alongside existing VikingDB/Volcengine backends.
Key changes:
- QdrantCollection: full VectorDBCollection implementation with support
for dense/sparse hybrid search, scalar search with native order_by,
full-text keyword search via payload indexes, multimodal search,
aggregate data with pagination, and proper filter translation
- QdrantProject: VectorDBProject implementation for collection lifecycle
management with configurable distance metrics and vector dimensions
- QdrantConfig: configuration model with URL, API key, gRPC, and
timeout settings
- Backend factory: register 'qdrant' backend type in
viking_vector_index_backend.py
- Auto-create TextIndex for text fields in create_index
- Use FilterSelector for delete_all_data instead of drop/recreate
- Paginate aggregate_data scroll to handle large collections
- Track created indexes properly in has_index
Dependencies:
- qdrant-client >= 1.9.0 (optional extra: `pip install openviking[qdrant]`)
Tests:
- Comprehensive unit tests for QdrantCollection (752 lines)
- Unit tests for QdrantProject (266 lines)1 parent dc7bc95 commit 58a3b88
10 files changed
Lines changed: 4608 additions & 821 deletions
File tree
- openviking_cli/utils/config
- openviking/storage
- vectordb
- collection
- project
- tests/vectordb
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
0 commit comments