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

3.6 KiB

title, weight
title weight
From Weaviate 20

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' \
    --migration.create-collection false

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

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.