[ https://issues.apache.org/jira/browse/LUCENE-10590?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17541185#comment-17541185 ]
Julie Tibshirani edited comment on LUCENE-10590 at 5/23/22 10:26 PM: --------------------------------------------------------------------- I don't have a deep understanding of what's happening, but wanted to share this discussion from hnswlib: [https://github.com/nmslib/hnswlib/issues/263#issuecomment-739549454]. It looks like HNSW can really fall apart if there are a lot of duplicate vectors. The duplicates all link to each other, creating a highly disconnected graph. I've often seen libraries recommend that users deduplicate vectors before indexing them ([https://github.com/facebookresearch/faiss/wiki/FAQ#searching-duplicate-vectors-is-slow).] I guess indexing all zero vectors is an extreme version of this! was (Author: julietibs): I don't have a deep understanding of what's happening, but wanted to share this discussion from hnswlib: [https://github.com/nmslib/hnswlib/issues/263#issuecomment-739549454.] It looks like HNSW can really fall apart if there are a lot of duplicate vectors. The duplicates all link to each other, creating a highly disconnected graph. I've often seen libraries recommend that users deduplicate vectors before indexing them ([https://github.com/facebookresearch/faiss/wiki/FAQ#searching-duplicate-vectors-is-slow).] I guess indexing all zero vectors is an extreme version of this! > Indexing all zero vectors leads to heat death of the universe > ------------------------------------------------------------- > > Key: LUCENE-10590 > URL: https://issues.apache.org/jira/browse/LUCENE-10590 > Project: Lucene - Core > Issue Type: Bug > Reporter: Michael Sokolov > Priority: Major > > By accident while testing something else, I ran a luceneutil test indexing 1M > 100d vectors where all the vectors were all zeroes. This caused indexing to > take a very long time (~40x normal - it did eventually complete) and the > search performance was similarly bad. We should not degrade by orders of > magnitude with even the worst data though. > I'm not entirely sure what the issue is, but perhaps as long as we keep > finding hits that are "better" we keep exploring the graph, where better > means (score, -docid) >= (lowest score, -docid). If that's right and all docs > have the same score, then we probably need to either switch to > (but this > could lead to poorer recall in normal cases) or introduce some kind of > minimum score threshold? -- This message was sent by Atlassian Jira (v8.20.7#820007) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org