5 ms·
Annoy came out of Spotify, and they just announced their successor library Voyager [1] last week [2]. [1]: https://github.com/spotify/voyager https://github.co
by daturkel 3y ago
Annoy came out of Spotify, and they just announced their successor library Voyager [1] last week [2].
[1]: https://github.com/spotify/voyager https://github.com/spotify/voyager
[2]: https://engineering.atspotify.com/2023/10/introducing-voyager-spotifys-new-nearest-neighbor-search-library/ https://engineering.atspotify.com/2023/10/introducing-voyage...
- gregsadetsky 3y agoAmazing, thanks for the reference! The biggest immediate useful difference that I see is that Annoy uses read-only index files (from the docs: "you can not add more items once the tree has been created" [0]), while Voyager allows you to call `.add_item` at any time (I just pip installed to double check and yes -- it's great). [0] https://github.com/spotify/annoy#summary-of-features https://github.com/spotify/annoy#summary-of-features
- PLenz 3y agoThe great thing about Annoy is that you can write the index to disk and thus do big data work on tiny workers at the edge. I've never really seen anything else do the same.
- gregsadetsky 3y agoOh yeah, Annoy is definitely mmap'ed i.e. you can use the index without loading the index file into memory. And that's very useful. As far as I can see, Voyager requires you to load the index into memory and doesn't (yet?) do mmap. Which... would make sense since you can change the data after loading the index. So, Voyager index files are fully loaded in memory..? Do I have this right?