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.
Quick Start (Recommended)
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)