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
NamespacePayload field or separate collectionNo direct equivalent — the tool migrates all namespaces. Use --pinecone.namespace to migrate a specific one
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

  • Score scaling: Pinecone cosine similarity returns values in [0, 1] (rescaled). Qdrant returns [-1, 1]. Rankings are identical, but raw scores won’t match.
  • Metadata size limits: Pinecone limits metadata to 40KB per vector. Qdrant has no per-payload size limit, so data is preserved as-is.
  • Namespace strategy: If you have multiple namespaces, decide upfront whether to merge them into a single Qdrant collection (using a namespace payload field for filtering) or create 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.