Что мы строим
Полностью автономный конвейер генерации данных с извлечением информации (RAG) на платформе Android. Без обращений к серверу и передачи данных за пределы устройства.
К концу данного руководства вы поймете, как объединить квантованные модели встраивания через ONNX Runtime Mobile, векторное индексирование в SQLite с помощью библиотеки sqlite-vec, интеллектуальное разбиение документов с учетом ограничений памяти мобильных устройств и потоковую обработку вывода токенов локальной языковой модели (LLM).
Эта архитектура полезна при работе с конфиденциальными данными, такими как медицинские записи или финансовые документы, где отправка данных во внешнюю облачную среду может представлять риск безопасности.
Предварительные требования
Для выполнения данной инструкции вам потребуется:
- Знание языка программирования Kotlin и фреймворка Jetpack Compose;
- Настроенная среда разработки Android Studio с установленным пакетом Native Development Kit (NDK);
- Квантованная модель встраивания формата ONNX (например, all-MiniLM-L6-v2 экспортированная в формат INT8);
- Локальная языковые модель (LLM) формата GGUF с параметрами около 3 миллиардов и уровнем квантования Q4.
Шаг 1: Создание вложений с использованием ONNX Runtime Mobile
Встраивание текста является наиболее критичным этапом конвейера. Необходимо выбрать компактную модель, которая будет работать быстро (~200 мс на один фрагмент документа) и обеспечивать достаточно точное извлечение информации.
Используйте модель all-MiniLM-L6-v2, экспортируйте её в формат ONNX и примените динамическую квантизацию до уровня INT8. Это уменьшит размер модели примерно с 90 МБ до 23 МБ, сохранив приемлемое качество поиска.