generateEmbeddings method
Generate embedding vectors for multiple texts.
taskType controls the prefix applied before embedding.
Implementation
@override
Future<List<List<double>>> generateEmbeddings(
List<String> texts, {
TaskType taskType = TaskType.retrievalQuery,
}) async {
_assertNotClosed();
if (taskType == TaskType.retrievalDocument) {
final results = <List<double>>[];
for (final text in texts) {
results.add(await _platformService.generateDocumentEmbeddingFromModel(text));
}
return results;
}
final result = await _platformService.generateEmbeddingsFromModel(texts);
// Deep cast: platform channel returns List<Object?> with inner List<Object?>
try {
return result.map((inner) => (inner as List).cast<double>()).toList();
} catch (e) {
throw StateError(
'Failed to cast embeddings from platform channel. '
'Expected List<List<double>>, got: ${result.runtimeType}. Error: $e',
);
}
}