Choosing Indexes for Similarity Search (Faiss in Python)

19,161
0
Published 2021-08-09
Facebook AI Similarity Search (Faiss) is a game-changer in the world of search. It allows us to efficiently search a huge range of media, from GIFs to articles - with incredible accuracy in sub-second timescales for billion+ size datasets.

The success in Faiss is due to many reasons. One of those, in particular, is its flexibility. Faiss recognizes that there is no 'one-size-fits-all' in similarity search.

Instead, Faiss comes with a wide range of search indexes - which we can mix and match to our choosing.

However, this great flexibility produces a question - how do we know which size fits our use case?

Which index do we choose? Should we use multiple indexes, or is one enough?

This video will explore the pros and cons of some of the most important indexes - Flat, LSH, HNSW, and IVF. We will learn how we decide which to use and the impact of parameters in each index to build some of the best indexes for semantic search.

🌲 Pinecone Article:
www.pinecone.io/learn/vector-indexes/

🎉 Sign-up For New Articles Every Week on Medium!
medium.com/@jamescalam/membership

Download script for Sift1M dataset:
gist.github.com/jamescalam/a09a16c17b677f2cf9c0191…

Similarity Search Series:
   • Vector Similarity Search and Faiss Co...  

🤖 70% Discount on the NLP With Transformers in Python course:
bit.ly/3DFvvY5

👾 Discord
discord.gg/c5QtDB9RAP

Mining Massive Datasets Book (Similarity Search):
📚 amzn.to/3CC0zrc (3rd ed)
📚 amzn.to/3AtHSnV (1st ed, cheaper)

🕹️ Free AI-Powered Code Refactoring with Sourcery:
sourcery.ai/?utm_source=YouTub&utm_campaign=JBrigg…

All Comments (12)
  • @grayrigel7091
    Hi James. Thanks for such a wonderful tutorial. Really useful. A quick question, For a new query vector, is it possible to return the IVF cell/partition that it belongs to, instead of returning the neighbors? I think I can measure the distances with centroids and return the closest centroid. However, I was thinking if there is built-in way.
  • Thanks a bunch for this, James! Would be really great to see a couple of them get explored in depth. Also, if you could benchmark FAISS against ScaNN, it will help a few of us noobs a hell lot. Great content! Lovely command over your content. Really need more of this.
  • @Nick-vs1zp
    Great explanations, especially for IVF - it's probably the best explanation for how it works that I've seen.
  • @katehan9623
    Thank you for your video. Most Valuable Channel. Do you use GPU for indexing in this projects?
  • @haneulkim4902
    Thanks for amazing video! Do you know why simple K-means are not used for these MIPS problems?
  • @itheenigma
    Super useful! Thanks for this video James. For IVF, can we retrieve the clusters that each datapoint belongs to after training (also cluster centroids)?
  • Does the IVF algorithm works with high dimensional data please like 100?
  • Can share the video assume I have binary data of train and test, so need to calculate the haming distance, I didn't found any videos using faiss ,if share the video that may more helpful