Покупатель большого интернет-магазина не всегда знает название категории или точные характеристики товара. Он формулирует задачу обычными словами: «тёмно-синий ежедневник до 25 рублей», «подарки сотрудникам на Новый год» или «блокнот, ручка и кружка в пределах бюджета». Обычный поиск ждёт совпадения слов, а AI-поиск должен понять смысл запроса — но при этом не имеет права придумать товар, цену или остаток.
На проекте Ermakov Media компания SiteLab встроила такой поиск в действующий OpenCart 2.3. В каталоге хранится более 37 500 активных товаров, а AI-подбор охватывает 17 130 доступных карточек и SKU, объединённых в 3 070 канонических моделей. Ниже разберём инженерные решения, которые позволяют использовать языковую модель без потери контроля над товарными данными.

Почему нельзя просто подключить чат к базе товаров
Если передать модели выгрузку каталога и попросить отвечать покупателю, она сможет красиво сформулировать рекомендацию, но не гарантирует фактическую точность. Каталог постоянно меняется: поставщик обновляет остатки, цены и варианты, часть карточек временно становится недоступной. Векторный индекс тоже не должен становиться вторым источником истины.
Поэтому архитектура разделяет ответственность:
- OpenCart хранит товары, SKU, URL, цены и фактические остатки;
- поисковый индекс помогает быстро найти кандидатов по смыслу;
- языковая модель разбирает намерение пользователя и может составить набор;
- серверный код проверяет идентификаторы, наличие и бюджет перед показом результата.
AI в такой схеме предлагает, но окончательное решение принимает проверяемый код на основе данных магазина.
Сначала группировка вариантов, потом AI
В каталогах поставщиков одна модель часто представлена десятками самостоятельных карточек: отдельный товар на каждый цвет и размер. Для учётной системы это нормальные SKU, но в поиске они создают визуальные дубли и вытесняют другие варианты.
Перед построением индекса связанные карточки объединяются в каноническую модель. При этом каждый вариант сохраняет собственный URL, изображение, цену и остаток. Пользователь видит одну модель, может выбрать цвет и переходит к конкретному доступному SKU.

Группировка строится поверх существующего импорта OpenCart. Она не требует заводить параллельный каталог и не мешает ежедневному обновлению данных поставщика.
Как устроен смысловой поиск
Для каждой канонической модели собирается текстовое представление: название, категория, материал, цвет, назначение и другие полезные характеристики. Qwen Embeddings преобразует это описание в вектор размерностью 1 024. Индекс обновляет только новые или изменившиеся позиции.
При запросе пользователя семантическая близость дополняется точными совпадениями по названию, категории и атрибутам. Такой гибридный поиск не заставляет выбирать между «пониманием смысла» и строгими фильтрами: система использует оба сигнала.

После ранжирования сервер заново читает из OpenCart цену, остаток и доступные варианты лучших кандидатов. Данные из индекса используются для поиска, но не для оформления значимых действий и не подменяют фактическое состояние магазина.
Подбор набора из нескольких категорий
Запрос «блокнот, ручка и кружка до 70 рублей» сложнее обычного поиска: нужно найти три разных товара, сохранить обязательный состав и уложиться в общий бюджет.
Система разбирает запрос на компоненты, получает кандидатов для каждой категории и передаёт языковой модели только разрешённые идентификаторы. После составления набора сервер повторно проверяет:
- присутствует ли каждый обязательный компонент;
- существуют ли выбранные идентификаторы в каталоге;
- доступны ли товары сейчас;
- не превышает ли итоговая сумма бюджет пользователя.

Если проверка не пройдена, комплект не показывается. Это принципиальное отличие production-системы от демонстрационного чата, который просто генерирует правдоподобный ответ.
Что проверить перед внедрением
До выбора модели и API полезно ответить на несколько практических вопросов:
- где находится единственный источник актуальной цены и остатка;
- как связаны цветовые и размерные варианты одной модели;
- какие поля действительно помогают покупателю выбирать товар;
- как часто обновляется каталог и какие записи нужно переиндексировать;
- какие ограничения должны проверяться кодом после ответа AI;
- что логировать для диагностики, не сохраняя персональные данные и тексты частных запросов.
Если эти правила не определены, AI лишь маскирует беспорядок в каталоге. Когда товарный слой подготовлен, смысловой поиск становится управляемой частью магазина, а не отдельным экспериментом.
Реализация SiteLab
Полная архитектура, цифры и интерфейсы собраны в кейсе AI-подбора для Ermakov Media. SiteLab разрабатывает интернет-магазины, каталоги и AI-функции, которые встраиваются в существующие CMS, импорты и бизнес-процессы.
Краткая версия материала также опубликована в Telegraph.