pub struct Tuning {
pub posting: usize,
pub probe: usize,
pub rerank: usize,
pub sweep: usize,
pub widen: usize,
}Expand description
The knobs, all of which have a defensible default and none of which anybody should have to touch.
Fields§
§posting: usizeHow many members a partition wants. It splits past twice this and merges under a quarter of it.
This is what sets how many partitions a collection ends up with, and so it trades the cost of ranking centroids against the cost of scanning a posting. A few hundred is where those two are near enough even.
probe: usizeHow many partitions a search scans.
rerank: usizeHow many candidates are reranked per answer asked for.
Four is the number the recall table was measured at: one bit codes put the true ten inside the best forty better than 98 times in a hundred.
sweep: usizeHow many neighbouring partitions a split sweeps for members that should move.
This is the cost of never drifting. Zero would make a split free and would make recall fall off over a long write stream, which is the thing this index exists to not do.
widen: usizeHow much further than probe a filtered search will go looking when the
filter is selective enough that the nearest partitions do not hold k
members that pass, as a multiple of probe.
This is the only knob here with a genuinely hard trade behind it. Too small and a filter matching one document in a thousand returns nothing while the answer sat two partitions further out. Too large and the same filter reads the whole collection to prove there is nothing there.