add method
Add v under key id. Encodes on-the-fly into the running code
buffer.
Implementation
void add(Object? id, Vector v) {
if (!_pq.trained) {
throw StateError('PqIndex.add: call train() first');
}
if (v.dim != dim) {
throw StateError('PqIndex.add: vector dim ${v.dim} != index dim $dim');
}
final n = _ids.length;
final need = (n + 1) * m;
if (_codes.length < need) {
var cap = _codes.isEmpty ? 16 * m : _codes.length;
while (cap < need) {
cap *= 2;
}
final grown = Uint8List(cap);
grown.setRange(0, n * m, _codes);
_codes = grown;
}
_pq.encodeOne(v.values, _codes, n * m);
_ids.add(id);
}