Михаил Базаров Разработка на 1С-Битрикс Михаил Базаров

Нейросетевой поиск для 1С-Битрикс, умный поиск с исправлением ошибок

Просмотров: 287 Модуль для 1С-Битрикс, который понимает запросы покупателей на естественном языке. Напишите "легкое летнее платье в горошеr" и получите именно то, что нужно - без возни с фильтрами и точными названиями.

Семантический поиск понимает смысл запроса, а не ищет точное совпадение слов. Покупатель пишет чем косить траву на даче - магазин показывает газонокосилки и триммеры, даже если в названии товара нет слова косить.

Нейросетевой поиск товаров в 1С-Битрикс

Пример работы и видео

Внимание! в видео рассказываю про предыдущею версию модуля, которая полагалась на индексы поиска 1С-Битрикс. В репозитории новая версия - у нее свои индексы на прямую из инфоблока - работает быстрее.

Настроить модуль на вашем сайте: от 25 000 руб. первую индексацию провожу на своем мощном сервере.

Штатный поиск 1С-Битрикс работает по прямому совпадению слов. Написал крем от морщин после 45 - получил пустую выдачу, потому что в названиях товаров нет слова морщин, а есть антивозрастной или anti-age. Нейросеть понимает, что это одно и то же.

Как устроен модуль

Под капотом - модель intfloat/multilingual-e5-base. Она превращает текст в вектор из 768 чисел (эмбеддинг). Чем ближе векторы двух текстов - тем они похожее по смыслу, даже если слова совершенно разные.

Само собой, он может работать и в режиме обычного поиска c исправлением даже очень сильных опечаток, переставлением слов и написании в не правильной раскладке. Область применимости не только интернет магазины, может работать на информационных ресурсах и.т.д.
Нейросетевой поиск товаров в 1С-Битрикс, умный поиск по смыслам и исправлением сильных опечаток

Модель работает через Python-сервис (server.py), который крутится на 127.0.0.1:9876. При поиске PHP отправляет запрос пользователя в Python, получает вектор и сравнивает его с заранее проиндексированными векторами товаров через косинусное сходство. Весь поиск - 60-80 миллисекунд.

Индексация товаров запускается по cron раз в сутки CLI-скриптом. Скрипт собирает тексты товаров из b_search_content, отправляет пачками по 3 товара в Python-сервис, получает эмбеддинги и сохраняет в таблицу mib_smartconsultant_embedding.

Скрин настройки модуля

Требования к серверу

Модель multilingual-e5-base весит ~1.1 GB и загружается в RAM при старте Python-сервиса. Плюс torch runtime (~400 MB). Итого модуль потребляет 1.5 GB RAM сверх того, что уже занято системой, MySQL и PHP.

Минимальные требования для сервера с 10 000 товаров: 4 GB RAM, 2 ядра CPU. Рекомендуемые для 100 000 товаров: 8 GB RAM, 4 ядра. И обязательно Linux - Python-часть не работает на macOS (MAMP).

Место в БД: один товар = 3072 байта (768 float32). 10 000 товаров = 30 MB, 100 000 = 300 MB.

Установка и настройка

Подробная инструкция - в README.md модуля. Коротко:

# 1. Python-окружение
cd local/modules/mibazarow.smartconsultant/python
python3 -m venv venv
venv/bin/pip install torch --index-url https://download.pytorch.org/whl/cpu
venv/bin/pip install -r requirements.txt

# 2. Прогрев модели (загружает ~1.1 GB из HuggingFace)
sudo -u bitrix venv/bin/python -c \
  "from sentence_transformers import SentenceTransformer; \
   SentenceTransformer('intfloat/multilingual-e5-base')"

# 3. Systemd-сервис
systemctl enable --now mib-smartconsultant

# 4. Установка модуля в админке Битрикс
# Marketplace → Установленные решения → AI Консультант → Установить

# 5. Настройка: выбрать инфоблок каталога, порог релевантности
# Админка → Настройки → Настройки модулей → AI Консультант

# 6. Первая индексация
php local/modules/mibazarow.smartconsultant/bin/reindex.php

# 7. Cron (каждый день в 3:00)
0 3 * * * php /var/www/site/local/modules/mibazarow.smartconsultant/bin/reindex.php

Как работает индексация

Первая индексация - самая долгая. Для 60 000 товаров на 4-ядерном CPU это ~2-3 часа: каждый товар проходит через нейросеть (по 3 товара за раз, чтобы не перегружать модель).

Последующие запуски - секунды. Скрипт проверяет MD5-хеш текста каждого товара. Если текст не изменился - товар пропускается. Обрабатываются только новые и изменившиеся товары.

Если 2-3 часа ждать не хочется, можно проиндексировать товары на мощном сервере с GPU (там 60К товаров - 5-10 минут), сделать mysqldump таблицы mib_smartconsultant_embedding и залить дамп на продакшен. Эмбеддинги - это просто числа, они не зависят от железа.

Поисковый компонент

Компонент mibazarow:smartconsultant.search размещается на любой странице через визуальный редактор. Все настройки (инфоблок, порог релевантности, количество результатов) задаются в модуле, а не в параметрах компонента - так проще управлять.

Покупатель вводит запрос → AJAX-запрос к SearchController → Python-сервис → косинусное сходство → топ-20 товаров → выпадающий список с процентом релевантности.

Примеры поиска

КаталогЗапрос покупателяЧто находит
Стройматериалыштукатурка для влажных помещенийВлагостойкие штукатурки, гидроизоляционные смеси
Автозапчастимасло в двигатель японского авто 5w30Моторные масла 5W-30 для азиатских двигателей
Зоотоварыкорм для пожилой кошки с чувствительным пищеварениемКорма для ageing cats, sensitive digestion
Электроникателефон с хорошей камерой до 40000Смартфоны с мощной камерой в бюджете до 40 000
Бытовая техникачем косить траву на дачеГазонокосилки, триммеры, сенокосилки
Косметикакрем от морщин после 45 летАнтивозрастные кремы 45+

Исходный код: github.com/camouf/mibazarow.smartconsultant

Услуги Стоимость разработки на 1С-Битрикс

Стоимость разработки сайта зависит от объёма и сложности проекта. Ниже приведены ориентировочные цены, как правило не выходят за обозначенные рамки. Срок разработки зависит от сложности проекта: как правило называю сроки с запасом.
Финальная стоимость и сроки разработки обговариваются на этапе обсуждения. Скачайте опросник на разработку, заполните как можно подробнее и вышлите удобным способом. После ознакомления смогу задать уточняющие вопросы и оценить проект.
Индивидуальная разработка магазина
от 300 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Подробнее
Сайт на готовом решении 1С-Битрикс
от 70 000 руб. от 5-ти дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Подробнее
Мобильное приложение
от 300 000 руб. от 4-х недель

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Подробнее
Сайт компании
от 150 000 руб. от 2-х недель

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Подробнее
Инфоресурс
от 170 000 руб. от 3-х недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Подробнее
Поддержка и доработки проектов
от 3 000 руб. от 1 часа

Выполнение доработок любой сложности. Поддержка, модернизация и расширение функционала существующих проектов. Решение задач: от мелких правок вёрстки до разработки новых модулей.

Подробнее

Включено в стоимость разработки:

  • Лицензия на 1С-Битрикс необходимой редакции, дополнительные модули, для реализации функционала и видео-инструкции по работе с готовым проектом
  • Оптимизация программной части проекта и конфигурации сервера под максимальную скорость работы. Базовая СЕО оптимизация и добавление сайта в поисковые системы.

Блог-note Заметки по 1С-Битрикс