Migrate from Pinecone to Qdrant

What You Need from Pinecone

  • API key — from the Pinecone console
  • Index name — the name of the index to migrate
  • Index host URL — the host endpoint shown in your index dashboard

Concept Mapping

PineconeQdrantNotes
IndexCollectionOne-to-one mapping
NamespaceCollectionOne namespace per run. Select it with --pinecone.namespace
MetadataPayloadDirect mapping
Sparse valuesSparse vectorsMapped to sparse_vector named vector by default
cosineCosineDirect mapping
dotproductDotPinecone requires unit-normalized vectors for dotproduct
euclideanEuclidDirect mapping

Run the Migration

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

Migrating a Specific Namespace

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration pinecone \
    --pinecone.index-host 'https://your-index-host.pinecone.io' \
    --pinecone.index-name 'your-index' \
    --pinecone.api-key 'pcsk_...' \
    --pinecone.namespace 'my-namespace' \
    --qdrant.url 'https://your-instance.cloud.qdrant.io:6334' \
    --qdrant.api-key 'your-qdrant-api-key' \
    --qdrant.collection 'your-collection'

All Pinecone-Specific Flags

FlagRequiredDescription
--pinecone.index-nameYesName of the Pinecone index
--pinecone.index-hostYesHost URL of the Pinecone index
--pinecone.api-keyYesPinecone API key
--pinecone.namespaceNoSpecific namespace to migrate
--pinecone.service-hostNoCustom Pinecone service host

Qdrant-Side Options

FlagDefaultDescription
--qdrant.id-field__id__Payload field name for original Pinecone IDs
--qdrant.sparse-vectorsparse_vectorNamed vector for Pinecone sparse values

Gotchas

  • Namespaces: Each run migrates one namespace, the default one unless you set --pinecone.namespace. Point IDs do not include the namespace, so migrate namespaces with overlapping IDs into separate collections.

Next Steps

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

Was this page useful?

Thank you for your feedback! 🙏

We are sorry to hear that. 😔 You can edit this page on GitHub, or create a GitHub issue.