IVFFlat index divides vectors into lists, and then searches a subset of those lists that are closest to the query vector. It has faster build times and uses less memory than HNSW, but has lower query performance (in terms of speed-recall tradeoff).
Three keys to achieving good recall are:
IVFFlatConfig()Number of inverted lists (clusters) for IVF index.
Determines the number of clusters used in the index structure. Higher values can improve search speed but increase index size and build time. Typically set to the square root of the number of vectors in the index.