Instead of hand-picking nprobe, pass targetRecall: after each k-means build the index estimates recall@10 on sample queries drawn from your own data (one exact scan each, ≤32 queries) and adopts the smallest nprobe whose estimated recall meets the target. The choice surfaces as stats().nprobe / stats().tunedRecall. GPU-only, like all IVF.
ready.