CLI tools for Qdrant vector database operations - export, import, sync, and management.
composer global require conduit-ui/qdrant-toolsOr clone and install locally:
git clone https://github.com/conduit-ui/qdrant-tools.git
cd qdrant-tools
composer installCopy .env.example to .env and configure your Qdrant connections:
cp .env.example .envEnvironment variables:
| Variable | Default | Description |
|---|---|---|
QDRANT_HOST |
localhost |
Default Qdrant host |
QDRANT_PORT |
6333 |
Default Qdrant port |
QDRANT_API_KEY |
API key for authentication | |
QDRANT_SECURE |
false |
Use HTTPS |
QDRANT_REMOTE_HOST |
Remote instance for sync | |
QDRANT_REMOTE_PORT |
6333 |
Remote port |
QDRANT_REMOTE_API_KEY |
Remote API key | |
QDRANT_REMOTE_SECURE |
false |
Remote uses HTTPS |
QDRANT_BATCH_SIZE |
100 |
Default batch size |
QDRANT_TIMEOUT |
30 |
HTTP timeout in seconds |
./qdrant qdrant:collections
./qdrant qdrant:collections --host=remote.example.com --port=6333
./qdrant qdrant:collections --json./qdrant qdrant:stats knowledge
./qdrant qdrant:stats knowledge --jsonExport all points from a collection to a JSON file:
./qdrant qdrant:export knowledge
./qdrant qdrant:export knowledge --output=backup.json
./qdrant qdrant:export knowledge --with-vectors
./qdrant qdrant:export knowledge --batch-size=200
./qdrant qdrant:export knowledge --filter='{"must":[{"key":"status","match":{"value":"active"}}]}'Import points from a JSON file:
./qdrant qdrant:import backup.json
./qdrant qdrant:import backup.json --collection=new_collection
./qdrant qdrant:import backup.json --create --vector-size=384
./qdrant qdrant:import backup.json --batch-size=200Note: Import requires the export to include vectors (--with-vectors during export).
Sync a collection between two Qdrant instances:
# Using config (local -> remote)
./qdrant qdrant:sync knowledge --create
# Explicit hosts
./qdrant qdrant:sync knowledge \
--source-host=localhost --source-port=6333 \
--dest-host=odin.example.com --dest-port=6333 \
--dest-api-key=your-api-key --dest-secure \
--create
# Dry run to preview
./qdrant qdrant:sync knowledge --dry-run
# Selective sync with filter
./qdrant qdrant:sync knowledge --filter='{"must":[{"key":"category","match":{"value":"important"}}]}'Delete points by IDs or filter:
# By IDs
./qdrant qdrant:delete knowledge --ids=id1,id2,id3
# By filter
./qdrant qdrant:delete knowledge --filter='{"must":[{"key":"status","match":{"value":"archived"}}]}'
# Force delete (skip confirmation)
./qdrant qdrant:delete knowledge --ids=id1 --force# Export from local with vectors
./qdrant qdrant:export knowledge --with-vectors --output=knowledge-backup.json
# Import to production
./qdrant qdrant:import knowledge-backup.json \
--host=production.qdrant.cloud \
--port=6333 \
--api-key=$QDRANT_CLOUD_API_KEY \
--secure \
--create./qdrant qdrant:sync knowledge \
--source-host=localhost \
--dest-host=odin.partridge.rocks \
--dest-port=6333 \
--create# Backup
./qdrant qdrant:export mydata --with-vectors --output=mydata-$(date +%Y%m%d).json
# Restore to new collection
./qdrant qdrant:import mydata-20250110.json --collection=mydata_restored --create# Install dependencies
composer install
# Run tests
composer test
# Format code
composer formatMIT License - see LICENSE for details.