seli-vector-db

Crates.ioseli-vector-db
lib.rsseli-vector-db
version0.1.2
created_at2025-12-01 18:02:49.693653+00
updated_at2025-12-03 07:40:51.964431+00
descriptionA simple vector database in Rust using an IVF index for approximate nearest neighbor search
homepage
repository
max_upload_size
id1960228
size38,823
Sergey (Selithrarion)

documentation

README

$env:RUSTFLAGS='-C target-cpu=native'; cargo bench

1000 vectors, k 10, brute force - 123 µs
1000 vectors, k 10, brute force + normalize - 95 µs
1000 vectors, k 10, ivf_1k_nprobe_5 - 30 µs


100.000 vectors, k 10, brute force + normalize - 18 ms
100.000 vectors, k 10, ivf_1k_nprobe_5 - 225 µs


10.000 vectors, k 10, brute force + normalize - 1.5 ms
10.000 vectors, k 10, ivf_1k_nprobe_5 - 86 µs

10.000 vectors, k 10, brute force + normalize - 1.5 ms
10.000 vectors, k 10, ivf_1k_nprobe_5 + inline always for dot product - 80 µs

10.000 vectors, k 10, brute force + normalize - 1.5 ms
10.000 vectors, k 10, ivf_1k_nprobe_5 + vec for index - 83 µs


10.000 vectors, k 10, brute force + simd rustflag - 1.5 ms
10.000 vectors, k 10, ivf_1k_nprobe_5 + simd rustflag 73 µs

10.000 vectors, k 10, brute force + wide for simd (dot product optimized) - 405 µs
10.000 vectors, k 10, ivf_1k_nprobe_5 + wide for simd (dot product optimized) - 20-25 µs

normalize simd optimization nothing changed, became kinda worse

flat memory layout (Vec> to Vec<32>) didnt help much - brute force 400 µs

Commit count: 0

cargo fmt