mobile_rag_engine library

Mobile RAG Engine

A high-performance, on-device RAG (Retrieval-Augmented Generation) engine for Flutter. Run semantic search completely offline on iOS and Android.

import 'package:mobile_rag_engine/mobile_rag_engine.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Initialize (just 1 line!)
  await MobileRag.initialize(
    tokenizerAsset: 'assets/tokenizer.json',
    modelAsset: 'assets/model.onnx',
  );

  runApp(const MyApp());
}

// Add documents
await MobileRag.instance.addDocument('Your long document text here');
await MobileRag.instance.rebuildIndex();

// Search with LLM context assembly
final result = await MobileRag.instance.search('query', tokenBudget: 2000);
final prompt = MobileRag.instance.formatPrompt('query', result);
// Send prompt to LLM

Advanced Usage (Low-Level API)

For fine-grained control, use the individual services directly:

await MobileRag.initialize(...) // Preferred

Classes

AddSourceResult
AssembledContext
Assembled context ready for LLM consumption.
AssembledContextV2
BenchmarkService
Performance benchmark service
ChunkData
ChunkExcerptResult
ChunkForReembedding
ChunkSearchResult
CollectionRag
Collection-scoped facade for Multi-Collection workflows.
CompressedContext
Result of prompt compression.
ContextBuilder
Builds optimized context for LLM prompts.
DocumentParser
Utility class for parsing documents (PDF, DOCX, etc.).
EmbeddingService
Dart-based embedding service backed by a dedicated background isolate.
HybridSearchResult
IntentParser
Utility class for analyzing user input and determining intent.
MobileRag
Singleton facade for Mobile RAG Engine.
ParsedIntent
PromptBudgetOptions
PromptCompressor
Prompt compression service using REFRAG principles.
QualityTestService
Search quality testing service
RagConfig
Configuration options for RagEngine initialization.
RagEngine
Unified RAG engine with simplified initialization.
RagSearchResult
Search result with assembled context.
ScoredSentence
Scored sentence with similarity value.
SearchHandle
SearchHitMeta
SearchMetaResult
Result of the additive low-level search lane.
SemanticChunk
Semantic chunk result.
SourceAddResult
Result of adding a source document with automatic chunking.
SourceEntry
SourceRagService
High-level service for source-based RAG operations.
SourceStats
StructuredChunk
Structured chunk with header path for context inheritance.
TextChunker
Utility class for splitting text into smaller chunks for RAG.
UserIntent

Enums

ChunkingStrategy
Chunking strategy for document processing.
ChunkType
Chunk type classification.
CompressionLevel
Compression level options.
ContextStrategy
Strategy for selecting and ordering chunks.
DuplicateSourceIngestionDecision
SearchHydrationMode
Hydration mode for high-level hybrid search results.
ThreadUseLevel
Thread usage level for ONNX runtime.

Extensions

RagErrorMessage on RagError
UserIntentPatterns on UserIntent
Adds pattern-matching-related methods to UserIntent.

Functions

buildChunkEmbeddingText({required String content, required String chunkType}) String
decideDuplicateSourceIngestion({required String? status, required int chunkCount}) DuplicateSourceIngestionDecision
decodeStructuredChunkType(String chunkType) → ({String? headerPath, String rawType})
encodeStructuredChunkType({required String rawType, String? headerPath}) String
extractTextFromDocument({required List<int> fileBytes}) Future<String>
Auto-detect document type and extract text Uses magic bytes to determine file format
extractTextFromDocx({required List<int> fileBytes}) Future<String>
Extract text content from a DOCX file (bytes)
extractTextFromFile({required String filePath}) Future<String>
Read a file and extract text according to extension / magic bytes.
extractTextFromPdf({required List<int> fileBytes}) Future<String>
Extract text content from a PDF file (bytes) Uses page-by-page extraction for safe page number removal and hyphenation handling
extractTextFromUtf8({required List<int> fileBytes}) Future<String>
Decode UTF-8 text bytes without altering content semantics.
mergeCanonicalChunkSearchResult({required ChunkSearchResult fallback, ChunkSearchResult? canonical}) ChunkSearchResult
parseIntent({required String input}) ParsedIntent
Parse intent (FRB-friendly wrapper).
parseUserIntent({required String input}) UserIntent
Parse user input into a UserIntent.
renderContextText({required String content, required String chunkType}) String
sqrt(double x) double
Helper: sqrt function

Typedefs

CompressionRunner = Future<String> Function(String renderedText, int maxChars, int level, String language)
TokenCounter = int Function(String text)

Exceptions / Errors

RagError