train method
Train the coarse quantizer on samples. Must be called once
before add. samples should be representative of the data
distribution and contain at least nlist vectors.
Implementation
void train(List<Vector> samples) {
if (samples.length < nlist) {
throw StateError(
'IvfFlatIndex.train: need at least nlist=$nlist samples, got '
'${samples.length}',
);
}
final buf = Float32List(samples.length * dim);
for (var i = 0; i < samples.length; i++) {
if (samples[i].dim != dim) {
throw StateError(
'IvfFlatIndex.train: sample $i dim ${samples[i].dim} != $dim',
);
}
buf.setRange(i * dim, (i + 1) * dim, samples[i].values);
}
_quantizer.train(buf);
_trained = true;
}