initialize static method

Future<void> initialize({
  1. required String tokenizerAsset,
  2. required String modelAsset,
  3. String? databaseName,
  4. int maxChunkChars = 500,
  5. int overlapChars = 50,
  6. void onProgress(
    1. String status
    )?,
})

Initialize the RAG engine. Call once in main().

This will:

  1. Initialize the Rust library (FFI)
  2. Load the tokenizer from assets
  3. Load the ONNX embedding model
  4. Initialize the SQLite database

tokenizerAsset - Path to tokenizer.json in assets modelAsset - Path to ONNX model file in assets databaseName - Optional custom database name (default: 'rag.sqlite') onProgress - Optional callback for initialization progress

Example:

await MobileRag.initialize(
  tokenizerAsset: 'assets/tokenizer.json',
  modelAsset: 'assets/model.onnx',
  onProgress: (status) => print(status),
);

Implementation

static Future<void> initialize({
  required String tokenizerAsset,
  required String modelAsset,
  String? databaseName,
  int maxChunkChars = 500,
  int overlapChars = 50,
  void Function(String status)? onProgress,
}) async {
  if (_instance != null) {
    onProgress?.call('Already initialized');
    return;
  }

  _engine = await RagEngine.initialize(
    config: RagConfig.fromAssets(
      tokenizerAsset: tokenizerAsset,
      modelAsset: modelAsset,
      databaseName: databaseName,
      maxChunkChars: maxChunkChars,
      overlapChars: overlapChars,
    ),
    onProgress: onProgress,
  );
  _instance = MobileRag._();
}