embeddingResultFromNative function
Converts a native embedding result before its owner is released.
Implementation
EmbeddingResult embeddingResultFromNative(bindings.MpEmbeddingResult value) {
final List<Embedding> embeddings = List<Embedding>.generate(value.embeddings_count, (int index) {
final bindings.MpEmbedding embedding = value.embeddings[index];
final String? headName = nativeString(embedding.head_name);
if (embedding.float_embedding != ffi.nullptr) {
return Embedding.floatAdopted(
Float32List.fromList(embedding.float_embedding.asTypedList(embedding.values_count)),
headIndex: embedding.head_index,
headName: headName,
);
}
return Embedding.quantizedAdopted(
Uint8List.fromList(
embedding.quantized_embedding.cast<ffi.Uint8>().asTypedList(embedding.values_count),
),
headIndex: embedding.head_index,
headName: headName,
);
}, growable: false);
return EmbeddingResult(
embeddings: embeddings,
timestampMs: value.has_timestamp_ms ? value.timestamp_ms : null,
);
}