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

4.1 KiB

title, short_description, description, weight, partition
title short_description description weight partition
From Weaviate Migrate Weaviate classes, vectors, and properties into Qdrant collections with a streamed, resumable, batched transfer. Migrate from Weaviate to Qdrant by streaming classes, vectors, and properties into Qdrant collections using the Qdrant Migration Tool's Weaviate connector. 10 ecosystem

Migrate from Weaviate to Qdrant

What You Need from Weaviate

  • Host URL — the Weaviate instance address
  • Class name — the class to migrate
  • Authentication — API key, username/password, or bearer token depending on your setup
  • Vector dimensions — Weaviate does not expose vector dimensions through its API, so you must know this value

Pre-Create Your Qdrant Collection

curl -X PUT 'https://your-instance.cloud.qdrant.io:6333/collections/your-collection' \
    -H 'api-key: your-qdrant-api-key' \
    -H 'Content-Type: application/json' \
    -d '{
        "vectors": {
            "size": 384,
            "distance": "Cosine"
        }
    }'

Replace 384 with your actual vector dimensions. Set the distance metric to match your Weaviate configuration.

Concept Mapping

Weaviate Qdrant Notes
Class Collection One-to-one mapping
Properties Payload Direct mapping
cosine Cosine Direct mapping
l2-squared Euclid Qdrant uses L2, not L2-squared; scores differ in magnitude but ranking is identical
dot Dot Direct mapping
Cross-references Payload fields Store referenced IDs as payload fields and rebuild linking in your application
Tenants Payload field or separate collections Use --weaviate.tenant to migrate a specific tenant

Run the Migration

docker run --net=host --rm -it registry.cloud.qdrant.io/library/qdrant-migration weaviate \
    --weaviate.host 'your-weaviate-host.example.com' \
    --weaviate.scheme https \
    --weaviate.class-name 'YourClass' \
    --weaviate.auth-type apiKey \
    --weaviate.api-key 'your-weaviate-api-key' \
    --qdrant.url 'https://your-instance.cloud.qdrant.io:6334' \
    --qdrant.api-key 'your-qdrant-api-key' \
    --qdrant.collection 'your-collection'

All Weaviate-Specific Flags

Flag Required Description
--weaviate.host Yes Weaviate host address
--weaviate.scheme No http or https (default: http)
--weaviate.class-name Yes Weaviate class to migrate
--weaviate.auth-type No none, apiKey, password, client, or bearer
--weaviate.api-key No API key (when auth-type is apiKey)
--weaviate.username No Username (when auth-type is password)
--weaviate.password No Password (when auth-type is password)
--weaviate.tenant No Specific tenant to migrate
--weaviate.scopes No Scopes (when auth-type is password or client)
--weaviate.client-secret No Client secret (when auth-type is client)
--weaviate.token No Token (when auth-type is bearer)
--weaviate.refresh-token No Refresh token (when auth-type is bearer)
--weaviate.expires-in No Token expiry in seconds (when auth-type is bearer)

Gotchas

  • Vector dimensions not exposed: Always pre-create the Qdrant collection. If you don't know your dimensions, check a sample vector from Weaviate or your embedding model's documentation.
  • Cross-references: Weaviate cross-references don't have a direct equivalent in Qdrant. Store referenced IDs as payload fields and rebuild the linking in your application layer.
  • Module dependencies: If you used Weaviate vectorizer modules (e.g., text2vec-openai), ensure you exported the actual vectors, not just the source text.

Next Steps

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