1. Общее описание
Цель:
Реализовать функционал поиска товаров по фотографии и автоматическую карусель похожих товаров в карточках, адаптированную под специфику ниши (люстры, светильники).
Основные задачи:
1. Интеграция Яндекс Vision API для анализа изображений.
2. Дообучение модели компьютерного зрения на датасете пользователя.
3. Внедрение векторного поиска для повышения точности рекомендаций.
4. Оптимизация производительности для работы с 150k товаров и 1 млн изображений.
2. Функциональные требования
2.1. Визуальный поиск товаров
- Интерфейс:
- Кнопка «Поиск по фото» в поисковой строке.
- Модальное окно с загрузкой изображения (drag-and-drop, выбор файла).
- Возможность кроппинга области изображения.
- Логика работы:
- Загруженное изображение отправляется в Яндекс Vision API.
- Из ответа API извлекаются:
- Текстовые теги (например, «хрустальная люстра», «6 рожков»).
- Векторное представление изображения (эмбеддинг).
- Поиск товаров осуществляется по векторной близости (через QDrant/FAISS) и текстовым тегам.
- Результаты выводятся в стандартном формате OpenCart.
2.2. Карусель похожих товаров
- Место отображения: Под основным изображением в карточке товара.
- Логика:
- При сохранении товара в админке его главное фото анализируется через Яндекс Vision.
- Векторное представление сохраняется в БД.
- Для карусели выбираются 8 товаров с наиболее близкими векторами.
- Кэширование: Результаты предварительно рассчитываются и сохраняются (обновление раз в неделю).
2.3. Админ-панель
- Настройки модуля:
- Поля для ввода API-ключа и ID каталога Яндекс Vision.
- Управление кэшированием (время жизни, очистка).
- Логирование запросов к API.
- Статистика:
- Количество обработанных изображений.
- Топ популярных тегов.
3. Технические требования
3.1. Интеграция с Яндекс Vision
- Используемые методы API: `Object Detection`, `Image Classification`.
- Извлечение векторных эмбеддингов через кастомный запрос к API.
- Ограничение: 10 запросов/секунду (настройка очереди задач).
3.2. Векторный поиск
- База данных: QDrant (оптимизирована для работы с векторами).
- Метрика близости: Косинусная схожесть.
- Индексация:
- Все векторы товаров индексируются при первом запуске.
- Автоматическое обновление индекса при добавлении новых товаров.
3.3. Оптимизация производительности
- Кэширование:
- Redis для кэша результатов поиска и каруселей.
- CDN (Яндекс Object Storage) для хранения изображений.
- База данных:
- Миграция таблицы товаров на InnoDB с индексами по полям `product_id`, `tags`.
- Отдельная таблица для векторных данных:
```
3.4. Безопасность
- Валидация загружаемых файлов: разрешены только JPG/PNG, макс. размер — 5 МБ.
- Защита от DDoS: ограничение 3 запроса/минуту с одного IP.
4. Этапы работ
Этап 1: Подготовка инфраструктуры
1. Настройка Яндекс Cloud: получение API-ключа, создание каталога.
2. Развертывание QDrant на отдельном сервере.
3. Миграция изображений на CDN.
Этап 2: Интеграция с OpenCart
1. Модификация шаблонов:
- Добавление кнопки «Поиск по фото» в `search.tpl`.
- Внедрение карусели в `product.tpl`.
2. Разработка кастомного модуля:
- Контроллеры для обработки изображений.
- Интеграция с QDrant API.
Этап 3: Обучение модели
1. Подготовка датасета:
- 1000 размеченных изображений (стиль, тип, материал, количество рожков).
2. Дообучение модели Яндекс Vision:
- Передача датасета в Yandex DataSphere.
- Тестирование точности (целевой показатель: F1-score > 0.85).
Этап 4: Пакетная обработка изображений
- Запуск скрипта для обработки 1 млн изображений:
Этап 5: Тестирование
1. Проверка точности:
- 200 тестовых изображений → сравнение выдачи с эталонными результатами.
2. Нагрузочное тестирование:
- 1000 одновременных запросов → время отклика < 2 сек.
---
### 5. Требования к исполнителю
- Опыт работы с OpenCart 2.3 (портфолио с модулями).
- Знание Python/PHP, REST API, векторных БД.
- Компетенции в компьютерном зрении (дообучение моделей).
---
### 6. Критерии приемки
- Поиск по фото:
- Точность выдачи > 80% (соответствие тестовым запросам).
- Время обработки запроса < 3 сек.
- Карусель:
- Отсутствие дубликатов в рекомендациях.
- Загрузка карусели < 1 сек.
---
### 7. Сроки и бюджет
- Сроки: 3–4 месяца.
- Бюджет:
- Разработка: 250 000 – 400 000 руб.
- Дообучение модели: 50 000 – 80 000 руб.
- Пакетная обработка изображений: 15 000 руб. (API-запросы).
---
### 8. Дополнительные условия
- Гарантийный период: 6 месяцев (исправление багов бесплатно).
- Передача полной документации и исходного кода.
---
Приложения:
1. Пример датасета (10 изображений с метками).
2. Схема архитектуры системы.