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 stores only vectors, so every point has an empty payload. Point IDs are the vectors’ positions in the index, which you can use to join an 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.