Умный поиск

Семантический поиск по товарам: поиск по смыслу, а не по словам

Что такое векторный поиск простыми словами, где он выигрывает у обычного, где проигрывает и почему его нельзя использовать в одиночку.

Филимонов Иван3 мин чтения
Абстрактная сеть из синих линий, соединяющих узлы
Фото: Conny Schneider / Unsplash

Семантический поиск — то, что позволяет найти перфораторы по запросу «чем сверлить бетон», в котором нет ни одного слова из карточки товара. Разбираем, как он устроен, что умеет и почему в одиночку работать не должен.

Как это работает без математики

Обычный поиск сравнивает буквы. Семантический сравнивает значения.

Текст — и запрос, и название товара — пропускается через модель, которая превращает его в набор чисел. Числа подобраны так, что близкие по смыслу тексты дают близкие наборы. «Болгарка» и «углошлифовальная машина» окажутся рядом, хотя не имеют ни одной общей буквы.

Поиск после этого сводится к геометрии: найти товары, чьи наборы чисел ближе всего к набору запроса.

Ключевое отличие: система не знает, что «болгарка» — синоним «УШМ». Она знает, что эти слова встречаются в похожих контекстах, и этого достаточно.

Что он умеет

Синонимы без словаря. Не нужно перечислять вручную, что «шуруповёрт» и «дрель-шуруповёрт» — про одно и то же.

Описательные запросы. «Чем резать плитку», «для работы на высоте», «тихий компрессор для гаража» — формулировки, в которых нет названия товара.

Опечатки как побочный эффект. Слово с ошибкой обычно всё равно попадает в близкую точку пространства значений.

Межъязыковые совпадения. «Drill» и «дрель» нередко оказываются рядом.

Чего он не умеет

Здесь начинается главное, потому что об этом обычно умалчивают.

Не различает числа. «G200» и «G160», «диск 230» и «диск 125» для модели почти одинаковы: различие в одной цифре в тексте почти не меняет набор чисел. Это делает его непригодным для подбора по характеристикам в одиночку.

Не уважает артикулы. Точный код товара он найдёт «примерно», а нужен ровно он.

Не понимает отрицание. «Перфоратор без SDS» приведёт к перфораторам с SDS: слово «без» на значение почти не влияет.

Не знает вашего ассортимента. Модель обучена на общих текстах; специфические обозначения вашей отрасли она может не различать вовсе.

Поэтому — гибрид

Работающая схема выглядит так:

Канал Что закрывает Приоритет
Точный артикулы, коды, числа наивысший
Нечёткий опечатки, словоформы средний
Семантический синонимы, описания задач дополняющий

Все три идут параллельно, результаты сводятся с учётом приоритета. Точное совпадение по артикулу всегда бьёт смысловую близость: если человек ввёл код, он хочет именно этот товар, а не «что-то похожее».

Где это считается

Существенный вопрос практики. Превращение текста в числа можно делать двумя способами.

Через внешний сервис. Просто в подключении, но каждый запрос покупателя — обращение наружу. Это деньги за каждое нажатие клавиши в подсказках и задержка, которую вы не контролируете.

Локально. Модель работает на вашей инфраструктуре. Дороже в настройке, но запросы бесплатны, задержка предсказуема, а данные каталога никуда не уходят.

Для поиска по сайту, где подсказки обновляются на каждый символ, практически применим только второй вариант.

Как проверить, нужен ли он вам

Посмотрите на запросы без результата. Если значительная их часть — это описательные формулировки и синонимы, семантический канал даст заметный эффект. Если это в основном артикулы в другом написании и опечатки, начинать нужно не с него, а с нормализации артикулов и нечёткого поиска.

Порядок внедрения по отдаче:

  1. Нормализация артикулов и точный поиск.
  2. Нечёткий поиск и раскладка.
  3. Индексация характеристик.
  4. Семантический канал.

Пункт четвёртый, поставленный первым, часто разочаровывает — не потому что плох, а потому что закрывает не ту проблему, которая у вас основная.

Коротко

  • Семантический поиск сравнивает значения, а не буквы, и находит товар по описанию задачи.
  • Он плохо различает числа и артикулы — именно там, где ошибка дороже всего.
  • Работать он должен как дополнительный канал, а не вместо точного и нечёткого.
  • Для поиска по сайту вычисления практичнее держать локально: иначе платите за каждое нажатие клавиши.
  • Внедрять его стоит после нормализации артикулов и нечёткого поиска, а не вместо них.

Вопросы по теме статьи

Что такое семантический поиск простыми словами?

Это поиск по смыслу запроса, а не по совпадению букв. Текст превращается в набор чисел, отражающий значение, и товары находятся по близости этих чисел — поэтому «чем сверлить бетон» приводит к перфораторам, хотя слова «перфоратор» в запросе нет.

Можно ли заменить обычный поиск семантическим?

Нет. Семантический поиск плохо различает цифры в характеристиках и артикулы — для него «G200» и «G160» почти одно и то же. Он работает как один из каналов, а не вместо остальных.

Нужен ли для этого доступ к внешним нейросетям?

Не обязательно. Модель, превращающая текст в векторы, работает локально — это важно и по скорости, и по деньгам: платить за каждое нажатие клавиши покупателя было бы невозможно.

Умный поиск по каталогу товаров для интернет-магазина

Поиск, который переживает опечатки, чужую раскладку и запрос по характеристикам. Три канала поиска сразу, живые фильтры, менее 50 мс на каталоге 100 000+ товаров.

Читайте дальше