createEmbeddingModel method

  1. @override
Future<EmbeddingModel> createEmbeddingModel({
  1. required String modelPath,
  2. required String tokenizerPath,
  3. PreferredBackend? preferredBackend,
})
override

Creates and returns a new EmbeddingModel instance.

modelPath — path to the embedding model file. tokenizerPath — path to the tokenizer file. preferredBackend — backend preference (e.g., CPU, GPU).

Implementation

@override
Future<EmbeddingModel> createEmbeddingModel({
  required String modelPath,
  required String tokenizerPath,
  PreferredBackend? preferredBackend,
}) async {
  if (_initEmbeddingCompleter case Completer<EmbeddingModel> completer) {
    return completer.future;
  }

  final completer = _initEmbeddingCompleter = Completer<EmbeddingModel>();

  try {
    await _platformService.createEmbeddingModel(
      modelPath: modelPath,
      tokenizerPath: tokenizerPath,
      preferredBackend: preferredBackend,
    );

    final model = _initializedEmbeddingModel = MobileEmbeddingModel(
      onClose: () {
        _initializedEmbeddingModel = null;
        _initEmbeddingCompleter = null;
      },
    );

    completer.complete(model);
    return model;
  } catch (e, st) {
    completer.completeError(e, st);
    Error.throwWithStackTrace(e, st);
  }
}