CyborgDB Migrate requires a running CyborgDB Service instance. See the Python Quickstart or Docker Quickstart to get one running first.
Supported Sources
| Source | Install Extra |
|---|---|
| Pinecone | pip install "cyborgdb-migrate[pinecone]" |
| Qdrant | pip install "cyborgdb-migrate[qdrant]" |
| Weaviate | pip install "cyborgdb-migrate[weaviate]" |
| ChromaDB | pip install "cyborgdb-migrate[chromadb]" |
| Milvus | pip install "cyborgdb-migrate[milvus]" |
Two Modes of Operation
Interactive TUI
Step-by-step guided wizardLaunch the interactive terminal UI — select your source, enter credentials, configure your destination, and watch the migration in real time.
Headless CLI
Scriptable & CI/CD friendlyRun non-interactively using a TOML config file. Supports resuming interrupted migrations.
Quickstart: Interactive TUI
Launch the wizard
- Selecting your source database type
- Entering source credentials
- Configuring your CyborgDB destination (host, API key, index name)
- Live progress display with per-batch stats
Quickstart: Headless CLI
Create a config file
Create a See example-config.toml for all available options.
migration.toml file. Environment variable interpolation (${VAR}) is supported:CLI Reference
| Flag | Default | Description |
|---|---|---|
--config FILE | — | TOML config file; activates non-interactive mode |
--resume | false | Resume from a saved checkpoint (requires --config) |
--batch-size INT | 100 | Vectors per batch |
--log-file FILE | ./cyborgdb-migrate.log | Log file path |
--quiet | false | Minimal output |
--version | — | Print version and exit |
How It Works
- Double-buffered pipeline: one thread extracts the next batch while the previous batch’s upsert is in flight, maximising throughput.
- Checkpointing: progress is saved to disk every N batches so interrupted migrations can be resumed with
--resume. - Retry with backoff: upserts retry with exponential backoff (1s → 2s → 4s) before failing a batch.
- Spot-check verification: after migration, a random sample of vectors is fetched back from CyborgDB and compared to the source (within
atol=1e-6) to confirm data integrity. Exit code2indicates migration completed but spot-check failed.
Source-Specific Notes
Pinecone
Pinecone
Set
namespace in [source] to migrate a specific Pinecone namespace. Omit to migrate the default namespace.Milvus
Milvus
Set
namespace in [source] to migrate a specific partition.Weaviate
Weaviate
Ensure your Weaviate instance has the
text2vec module disabled or that raw vectors are accessible, as cyborgdb-migrate reads pre-computed vectors directly.