Files
landing_page/qdrant-landing/content/documentation/migrate-to-qdrant/from-milvus.md
T

2.9 KiB

title, weight
title weight
From Milvus 30

Migrate from Milvus to Qdrant

What You Need from Milvus

  • Milvus URL — the gRPC endpoint of your Milvus instance
  • Collection name — the collection to migrate
  • API key — if using Zilliz Cloud or authenticated Milvus

Concept Mapping

Milvus Qdrant Notes
Collection Collection One-to-one mapping
Partition Payload field or separate collection Use --milvus.partitions to specify which partitions to migrate
Schema fields Payload Non-vector fields become payload
COSINE Cosine Direct mapping
L2 Euclid Direct mapping
IP (inner product) Dot Direct mapping
Dynamic fields Payload JSON-typed dynamic fields are preserved

Run the Migration

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration milvus \
    --milvus.url 'your-milvus-host:19530' \
    --milvus.collection 'your-collection' \
    --milvus.api-key 'your-milvus-api-key' \
    --qdrant.url 'https://your-instance.cloud.qdrant.io:6334' \
    --qdrant.api-key 'your-qdrant-api-key' \
    --qdrant.collection 'your-collection'

Migrating Specific Partitions

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration milvus \
    --milvus.url 'your-milvus-host:19530' \
    --milvus.collection 'your-collection' \
    --milvus.partitions 'partition_a,partition_b' \
    --qdrant.url 'https://your-instance.cloud.qdrant.io:6334' \
    --qdrant.api-key 'your-qdrant-api-key' \
    --qdrant.collection 'your-collection'

All Milvus-Specific Flags

Flag Required Description
--milvus.url Yes Milvus gRPC endpoint
--milvus.collection Yes Collection name to migrate
--milvus.api-key No API key (for Zilliz Cloud)
--milvus.username No Username for authentication
--milvus.password No Password for authentication
--milvus.db-name No Database name
--milvus.partitions No Comma-separated partition names
--milvus.server-version No Override detected server version
--milvus.enable-tls-auth No Enable TLS authentication

Gotchas

  • Partition handling: Milvus partitions can map to Qdrant collections or payload filters. If you merge partitions into a single collection, add a partition name as a payload field for filtering.
  • Schema strictness: Milvus enforces schema on write; Qdrant is schema-flexible. Verify that the schema-less flexibility didn't cause payload fields to drift during migration.
  • Dynamic fields: Milvus dynamic fields (introduced in 2.3) may serialize differently. Check that JSON-typed dynamic fields survived the migration with correct structure.

Next Steps

After migration, verify your data arrived correctly with the Migration Verification Guide.