1个不稳定版本

0.1.0 2022年6月22日

#19 in #knn

Apache-2.0

12KB
247

bfes

给定一组嵌入和一个查询嵌入,该算法搜索每个查询的最邻近嵌入。由于它是暴力搜索,因此不需要重新生成索引,并且可以随时向索引添加新的嵌入。算法在时间和空间上都是O(n)。

性能

搜索100,000个512维嵌入的暴力搜索时间

Windows 11, AMD Ryzen 9 5950x @ 3.4 GHz

test tests::bench_cosine_similarity ... bench: 20,018,120 ns/iter (+/- 2,042,521)

Mac OS X, M1 Max MacbookPro18,4

test tests::bench_cosine_similarity ... bench: 11,302,216 ns/iter (+/- 185,505)

Mac OS X, M1 Macmini9,1

test tests::bench_cosine_similarity ... bench: 9,559,170 ns/iter (+/- 592,620)

Ubuntu 18.04, AWS c6i.large

test tests::bench_cosine_similarity ... bench: 25,452,715 ns/iter (+/- 848,001)

Ubuntu 22.04, AWS c6a.large

test tests::bench_cosine_similarity ... bench: 17,306,132 ns/iter (+/- 78,319)

Ubuntu 22.04, AWS c6g.medium

test tests::bench_cosine_similarity ... bench: 30,262,326 ns/iter (+/- 64,509)

依赖关系

~4MB
~84K SLoC