Embedding the whole corpus on first launch can take time — run it as a resumable background job with a progress UI, not blocking the first screen.
Persist the index; don't rebuild on every launch. Detect source changes with a content hash and re-index only what changed. For per-patient genomic data, index that patient's report on import.
Battery: do heavy indexing while charging / on Wi-Fi when possible, and chunk the work so the OS doesn't kill it (Android WorkManager, iOS BGProcessingTask).