Hann: A Fast Approximate Nearest Neighbor Search Library for Go
7 comments
·March 25, 2025thomasahle
imurray
That nice benchmark shows that multiple implementations of HNSW perform differently (my experience also). It would be helpful therefore if HANN benchmarked its implementation against the others, and tried to get the details the same as the best version.
nikolayasdf123
> Fast distance computation using SIMD (AVX) instructions
cool to see this. however, really missing benchmarks to compare to Redis, Vertex, Elastic, FAISS
nikolayasdf123
> requires C (or C++) compile
so this is just FFI into C? hm...
dolmen
I see only two C files in the repo: https://github.com/habedi/hann/blob/main/core/simd_distance.... https://github.com/habedi/hann/blob/main/core/simd_ops.c
So fixing to make it compile just with the Go toolchain (probably by rewriting in assembly) seems doable. Using avo to produce assembly: https://github.com/mmcloughlin/avo
oldgregg
Great lib... now is there a Go-native way to generate vectors from text?
neonsunset
Another project that can be written in pure C# is written in Go instead which is struggling to solve the problem :(
(and by struggling I mean can’t do it at all and requires either FFI or Goasm)
https://ann-benchmarks.com/