Автор сделал домашнего чат-бота, который отвечает на вопросы по хозяйству: от ремонта до записи к врачу. Чат-бот использует RAG для поиска в векторной базе, но автор пошёл дальше — добавил предобработку: вопросы сначала классифицируются по категориям (pool, hvac, cooking), а векторный поиск идёт только внутри нужной категории. Это сужает область поиска и повышает точность.
Автор хотел проверить, сможет ли крошечная локальная LLM справиться с такой классификацией после дообучения. В проекте две модели: Qwen 3:4B отвечает на вопросы, а Qwen 3:0.6B (всего 600 миллионов параметров) пытается определять категорию. Для дообучения использовали фреймворк Unsloth с методом QLoRA. Набор данных — около 850 примеров, размеченных вручную.
Сначала проверили «сырую» модель без дообучения — просто через промпт. Результат был плохой: из 131 тестового вопроса правильно угадано только 13 (10% точности). Модель постоянно использовала слишком общие метки (electric, appliances) или выдумывала новые категории вроде apartments.
После первого дообучения на том же наборе данных точность подскочила до 79%. Но модель стала путать семантически похожие категории: вместо hvac выдавала ac или air, а водные категории (fountain, water heater, pool) смешивала между собой.
Во втором эксперименте автор изменил промпт: вместо названий категорий модель учили выдавать двухбуквенные коды без смысловой нагрузки (AA, BB, KK). Это убрало путаницу между похожими словами. Результат — 92% точности (120 правильных ответов из 131). Ошибки остались в основном там, где категории действительно пересекаются по смыслу — например, water heater до сих пор иногда уходит в pool. Автор планирует доработать обучающие данные, чтобы разрулить такие кейсы. Исходники проекта и скрипты дообучения лежат в GitHub-репозитории.