init static method

Future<void> init({
  1. Uint8List? modelBytes,
  2. String? modelPath,
  3. OrtSessionOptions? options,
})

Initialize ONNX model

Provide either modelBytes (loads from memory) or modelPath (loads from file). modelPath is recommended for memory optimization.

Implementation

static Future<void> init({
  Uint8List? modelBytes,
  String? modelPath,
  OrtSessionOptions? options,
}) async {
  await _executor.run(() async {
    OrtEnv.instance.init();
    final sessionOptions = options ?? OrtSessionOptions();
    final createdSession = _createSession(
      modelBytes: modelBytes,
      modelPath: modelPath,
      sessionOptions: sessionOptions,
    );
    var isSwapped = false;

    try {
      final nextRequiredInputNames = _extractRequiredInputNames(
        createdSession,
      );

      final previousSession = _session;
      _session = createdSession;
      _requiredInputNames = nextRequiredInputNames;
      _dimensionState.reset();
      isSwapped = true;

      try {
        previousSession?.release();
      } catch (error) {
        if (debugMode) {
          debugPrint(
            '[EmbeddingService] Warning: Failed to release previous session: $error',
          );
        }
      }
    } catch (e) {
      if (!isSwapped) {
        createdSession.release();
      }
      rethrow;
    }
  });
}