Опубликовано
Библия попаданца, часть 3: анализ аналогов и дизайн телефона-справочника
Автор: Гусев Николай [портфолио]
Дата обновления не указана в исходнике.
Темы: popadantsy, hardware, design
Сложность: средняя
В первых двух частях я разобрал K2 Horizon из ОАЭ и локальные LLM на Android, потом проверил теорию "влезет ли вся наука в телефон" и пришёл к выводу: телефон - не вычислитель, а читатель готовых индексов. Теория подтвердилась частично: памяти хватает с запасом, но маленькая модель - не источник истины, а интерфейс к базе. Логичный следующий шаг - собрать такое приложение. Но прежде чем чертить архитектуру, я прошёлся по аналогам: кто уже пытался, что у них получилось, на каких граблях они оставили следы.
Аналоги: кто уже делал и что из этого вышло
Идея офлайн-"библии цивилизации" не нова - есть как минимум три разных подхода, и каждый на своём железе.
N.O.M.A.D. - сервер в бункере
Самый масштабный аналог: открытый проект (март 2026), Docker-узел на Debian/Ubuntu. Внутри - офлайн-Википедия, медицинские справочники, руководства по выживанию, карты всех регионов планеты, курсы Khan Academy и Ollama с семантическим поиском по архивам. Концептуально это ровно "библия попаданца", вплоть до подачи ("цивилизация в коробке на случай ядерной войны").
Грабли, которые видно сразу: проект требует сервер или старый ПК. Базовый режим (только библиотека и карты) - двухъядерный процессор 2 ГГц и 4 GB RAM, но полный режим с LLM - Ryzen 7, 32 GB RAM и RTX 3060. То есть вся вычислительная тяжесть перекладывается на большое стационарное железо. Телефон в этой картине - тонкий клиент, который к серверу подключается. Для сценария попаданца (и просто похода без сети) это не работает: сервер не положишь в карман.
Урок N.O.M.A.D.: сборка контента (базы, карты, учебники) - решаемая задача, её можно переиспользовать. Архитектуру "большой сервер + тонкий клиент" для телефона - нельзя.
zim-llm - правильный пайплайн, неправильная платформа
GitHub-проект: ZIM-файлы Kiwix -> текст -> чанкование -> эмбеддинги -> векторная база (ChromaDB/FAISS) -> RAG с локальной LLM. Это точно та же схема, к которой я пришёл в прошлой части: тяжёлые индексы готовятся заранее, на устройстве только поиск.
Грабли: во-первых, это CLI на ПК, не приложение. Во-вторых, README честно предупреждает: первичное индексирование большого ZIM (2 GB+) "может занять несколько часов на медленной машине" - подтверждение того, что индексацию нельзя выполнять на целевом устройстве. В-третьих, в issues открыт вопрос "No software license" - проект нельзя легально переиспользовать в продукте без связи с автором.
Уроки zim-llm: пайплайн ZIM->RAG жизнеспособен, но лицензия и платформа - часть дизайна, а не подробность. Наш вариант: с самого начала брать лицензионно-чистые компоненты (libzim - MPL-2, llama.cpp - MIT, векторный поиск - sqlite-vec, MIT-подобная) и готовить индексы вне устройства.
Kiwix и WikiMed - готовый ярус 0
Официальные приложения Kiwix (и специализированный WikiMed) - это офлайн-читалка ZIM с рубрикатором и полнотекстовым поиском. Работает на телефоне идеально, моментально, без интернета.
Грабли: у них нет ИИ-слоя вообще. Поиск по точным словам работает отлично, но вопрос "у меня есть гвоздь, фольга и картошка - как получить электричество" в поиске тонет: статьи называются "гальванический элемент" и "электролит", а не "картошка". Это ровно та граница, где без LLM не обойтись.
Урок Kiwix: ярус 0 не надо писать с нуля - kiwix-android это библиотека с JNI к libzim, её встраивают как модуль. Своё писать надо только поверх.
Телефонные LLM-приложения - чат без базы
PocketPal AI, MLC Chat, AnythingLLM и им подобные дают чат с локальной моделью, но: у большинства нет RAG по офлайн-базе (AnythingLLM умеет RAG по PDF, но не умеет ZIM и рубрикатор), модели скачиваются вручную без подбора под железо, и никто не решает задачу "справочник с источниками".
Урок: свободный чат с 2B-моделью без базы - это лотерея с галлюцинациями. Модель нужна как мост между свободной формулировкой вопроса и статьёй базы, а не как самостоятельный оракул.
Сводка: пустая ниша
Итого по аналогам: Kiwix+ZIM без ИИ на телефоне есть, ZIM+RAG+LLM на ПК есть, LLM-чат без базы на телефоне есть. Связка "ZIM-база + рубрикатор + опциональный локальный LLM с RAG + автоподбор под железо - всё на телефоне" не занята никем. Собирать её имеет смысл из готовых кирпичей, а не с нуля.
Дизайн: два яруса
Из анализа аналогов выплывает архитектура. Ключевое решение: LLM - не основа приложения, а опциональный слой.
Ярус 0 - Справочник (базовый продукт). Kiwix-android как библиотека, рубрикатор из категорий ZIM, полнотекстовый поиск по ftindex, вьювер статей. Работает мгновенно, не греет телефон, не тратит батарею, влезает в любой Android. Это 90% практических сценариев: "как очистить воду", "наложение жгута". Мгновенность и честность - то, чего у N.O.M.A.D. нет на телефоне.
Ярус 1 - LLM-слой (опционально). Подключается только если пользователь скачал модель. Два применения: "спросить по статье" (текст статьи в контекст модели, вопрос - ответ строго по тексту) и свободный вопрос (модель переформулирует запрос в термины базы - "гвоздь+фольга+картошка" -> "гальванический элемент" - поиск по базе - ответ по найденному - источники показываются всегда). Модель 1.7B способна на переформулировку, не способна на синтез нового - и это не баг, а граница применимости.
Первый запуск: приложение замеряет железо (RAM, чип, ABI, свободное место) и качает профильные пакеты - общий справочник по выживанию сразу (0.5-2 GB), остальные базы и модель - по запросу из вкладки "Библиотека". Без модели приложение полноценно полезно; модель можно докачать и удалить в любой момент.
Грабли, которые мы обходим заранее
- Индексация на устройстве запрещена (урок zim-llm: часы на слабой машине). Тяжёлое - эмбеддинги, чанкование - делается на ПК, телефон получает готовые бинарники.
- Лицензии проверяются до кода (урок zim-llm с "No software license"). Компоненты: kiwix-android (MPL-2), llama.cpp (MIT), Qwen 3.5 (Apache 2.0), базы - под своими лицензиями (ODC-BY и т.п.).
- Модель - не оракул (урок телефонных чат-приложений). Источники показываются под каждым ответом, UI не даёт модели говорить без ссылки на статью.
- Не сервер-клиент (урок N.O.M.A.D.). Всё на устройстве, никаких зависимостей от другого железа.
- Ярус 0 полноценен без яруса 1 (урок Kiwix). Приложение ставят ради справочника, а не ради чата.
Что дальше
ТЗ написано, архитектура - два яруса из готовых компонентов. План разработки: шесть фаз, каждая - сборка APK и живой прогон на реальном rugged-телефоне класса Blackview (Helio G99, большая батарея, слабый процессор). Первая фаза - скелет приложения с детектором железа и загрузчиком баз. Отчёты по фазам - отдельными статьями.
Ссылки: N.O.M.A.D., zim-llm, Kiwix, офлайн survival kit на ПК.