mobile_rag_engine 0.5.3 copy "mobile_rag_engine: ^0.5.3" to clipboard
mobile_rag_engine: ^0.5.3 copied to clipboard

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

example/example.md

Mobile RAG Engine - Example #

A complete on-device RAG (Retrieval-Augmented Generation) implementation.

Quick Start #

import 'package:mobile_rag_engine/mobile_rag_engine.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 1. Initialize MobileRag (Singleton)
  await MobileRag.initialize(
    tokenizerAsset: 'assets/tokenizer.json',
    modelAsset: 'assets/model.onnx',
  );
  
  runApp(const MyApp());
}

Adding Documents #

// Add a document with automatic chunking and embedding
final result = await MobileRag.instance.addDocument(
  'Flutter is Google\'s UI toolkit for building beautiful apps...',
  onProgress: (done, total) => print('Embedding: $done/$total'),
);

print('Created ${result.chunkCount} chunks');

// Rebuild HNSW index after adding documents
await MobileRag.instance.rebuildIndex();

PDF & DOCX Support #

Can automatically extract text from PDF and DOCX files.

import 'dart:io';

// Read file bytes
final file = File('path/to/document.pdf');
final bytes = await file.readAsBytes();

// extract text (using built-in parser)
final text = await extractTextFromDocument(fileBytes: bytes.toList());

// Then add to RAG
await MobileRag.instance.addDocument(
  text, 
  metadata: '{"source": "document.pdf"}',
  filePath: 'document.pdf', // hints chunking strategy
);

Managing Documents #

// Remove a source by ID
await MobileRag.instance.engine.removeSource(sourceId);

// Check stats
final stats = await MobileRag.instance.engine.getStats();
print('Total sources: ${stats.sourceCount}');
// Search for relevant chunks
final searchResult = await MobileRag.instance.search(
  'How to build mobile apps?',
  topK: 5,
  tokenBudget: 2000,
);

// Get assembled context for LLM
print('Found ${searchResult.chunks.length} chunks');
print('Context tokens: ${searchResult.context.estimatedTokens}');

// Format prompt for LLM
final prompt = MobileRag.instance.formatPrompt(
  'How to build mobile apps?',
  searchResult,
);

Advanced Usage (Low-Level) #

For advanced scenarios, you can still access the underlying services:

// Batch embedding directly
final embeddings = await EmbeddingService.embedBatch(
  ['Text 1', 'Text 2', 'Text 3'],
);

// Manual Tokenizer initialization
await initTokenizer(tokenizerPath: 'path/to/tokenizer.json');

Performance #

Operation Time Engine
Tokenization 0.04ms Rust
HNSW Search 0.3ms Rust
Embedding 25-100ms ONNX

See the full example app in the GitHub repository.

6
likes
160
points
654
downloads

Publisher

verified publisherglasses-dev.win

Weekly Downloads

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

Repository (GitHub)
View/report issues

Topics

#ai #machine-learning #semantic-search #vector-database #rag

Documentation

API reference

License

MIT (license)

Dependencies

flutter, flutter_rust_bridge, freezed_annotation, onnxruntime, path_provider, rag_engine_flutter

More

Packages that depend on mobile_rag_engine