Migrate from FAISS to Qdrant

What You Need from FAISS

  • Index file path — path to your FAISS index file
  • Distance metric — the metric used when the index was built (l2, inner product, etc.)

Supported Index Types

FAISS Index TypeSupportedNotes
IndexFlatL2YesMaps to euclid distance
IndexFlatIPYesMaps to dot distance
IndexHNSWFlatYesFull vectors are stored
IndexIVFFlatYesFull vectors are stored
IndexIVFPQNoQuantized — original vectors not stored
IndexPQNoQuantized — original vectors not stored

Concept Mapping

FAISSQdrantNotes
IndexCollectionOne-to-one mapping
Vector (by position)PointPosition in index becomes point ID

Run the Migration

docker run --net=host --rm -it \
    -v /path/to/your/index:/data \
    registry.cloud.qdrant.io/library/qdrant-migration faiss \
    --faiss.index-path '/data/your-index.index' \
    --qdrant.url 'https://your-instance.cloud.qdrant.io:6334' \
    --qdrant.api-key 'your-qdrant-api-key' \
    --qdrant.collection 'your-collection' \
    --qdrant.distance-metric cosine

All FAISS-Specific Flags

FlagRequiredDescription
--faiss.index-pathYesPath to the FAISS index file (inside the container)

Qdrant-Side Options

FlagDefaultDescription
--qdrant.distance-metriccosineDistance metric: cosine, dot, euclid, or manhattan

Gotchas

  • No metadata: FAISS indexes store only vectors. All points will have empty payloads. If you have a separate metadata store keyed by vector position, import that separately after migration.
  • Point IDs: Points are assigned IDs based on their position in the FAISS index. Use this to join with any external metadata store.

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.