Федор Маковский Написать в Telegram
Главная / Статьи / Семантический поиск простыми словами
28.10.2026 · 6 мин чтения

Семантический поиск простыми словами: проверка на 16 запросах магазина

Покупатель пишет «светит на лбу», а в каталоге «фонарь налобный». Я сравнил три вида поиска на одном каталоге и одних и тех же запросах: строгий по словам, по словам с учётом окончаний и по смыслу.

Кратко

  • Семантический поиск ищет по смыслу, а не по совпадению буквТексты и запрос превращаются в векторы, и поиск выбирает близкие по смыслу, даже если общих слов нет.
  • На 16 запросах «своими словами»: 1, 8 и 15Столько раз нужный товар попал в первую тройку у строгого поиска по словам, поиска с учётом окончаний и поиска по смыслу.
  • Слабое место — он всегда что-то находитНа запрос «каска», которой в каталоге нет, поиск по смыслу показал ветрозащитную куртку. Нужен порог «ничего не найдено», подобранный на ваших данных.
  • Отрицание он путает«С сахаром» и «без сахара» для него почти одно и то же. Это лечится, но проверять нужно специально.
  • Лучше всего — в паре с точным поискомАртикулы, бренды и фильтры работают как раньше, смысл добавляется сверху.

Что такое семантический поиск

Обычный поиск на сайте сравнивает буквы: какие слова запроса встречаются в названии и описании товара. Если покупатель назвал вещь не так, как она записана в каталоге, совпадения нет, и он видит «ничего не найдено».

Семантический поиск (его ещё называют поиском по смыслу или векторным) работает иначе. Специальная модель превращает каждый текст в вектор — длинный набор чисел, который описывает смысл. Тексты о похожем оказываются рядом: «налобный фонарь» и «светит на лбу» получают близкие векторы, хотя общих слов у них нет. На запрос поиск считает его вектор и выбирает товары, которые ближе всего.

Поиск по словам с учётом окончаний — промежуточный вариант. Он понимает, что «палатку» и «палатка» — одно слово, но синонимы и описания задачи («чем рубить дрова» вместо «топор») ему недоступны.

Как я проверял

Каталог
Вымышленный магазин «Северный путь»: 108 товаров для рыбалки, туризма и дома. Названия записаны так, как принято в магазинах: «костюм утеплённый», «бур ледовый шнековый».
Запросы
16 запросов так, как пишут люди: «куртка для зимней рыбалки», «дырку во льду сделать», «зарядить телефон без розетки». Для каждого я заранее отметил, какие товары считаются правильными.
Успех
Правильный товар в первой тройке выдачи: дальше покупатель обычно не смотрит.
Три поиска
Строгий: все слова запроса должны встретиться в тексте так, как написаны. С окончаниями: слова сравниваются без окончаний и взвешиваются (BM25). По смыслу: векторы модели mistral-embed плюс небольшой вес точных слов.

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

Результат

ЗапросСтрогий по словамС окончаниямиПо смыслуПервый товар поиска по смыслу
куртка для зимней рыбалки—нашёлнашёлКуртка-парка зимняя «Тундра»
чем согреть ноги на льду—нашёлнашёлСапоги зимние на ЭВА до −40 °C
светит на лбу——нашёлФонарь налобный аккумуляторный
палатка от ветра——нашёлПалатка зимняя «Зонт» трёхслойная
дырку во льду сделать——нашёлБур ледовый ручной шнековый
где спать в лесу——нашёлСпальный мешок-одеяло лёгкий
зарядить телефон без розетки—нашёлнашёлВнешний аккумулятор 20 000 мА·ч
согреть руки——нашёлГрелка для рук аккумуляторная
горячий чай в дороге—нашёлнашёлТермос для еды широкий
ловить рыбу зимой——нашёлЭхолот для подлёдного лова (нужный товар вторым)
чем рубить дрова——нашёлТопор туристический
защита от дождянашёлнашёлнашёлКостюм влагозащитный из ПВХ
тёплое бельё под одежду—нашёлнашёлКомплект термобелья
разделать рыбу—нашёлнашёлНож разделочный для рыбы
светильник в палатку———Палатка зимняя «Зонт» (а нужен фонарь)
обогреть палатку—нашёлнашёлОбогреватель газовый керамический
Итого из 161815

Строгий поиск справился с одним запросом из 16: «защита от дождя», где все три слова нашлись в описаниях товаров. На остальных он вернул пустую выдачу. Поиск с окончаниями нашёл нужное в 8 случаях: помогает, когда в запросе есть слово из названия («термос», «рыба»), и бессилен, когда человек описывает задачу. Поиск по смыслу нашёл нужный товар в 15 запросах из 16, в 14 из них — первым в выдаче.

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

Демо · два поиска на один запрос

Обычный поиск

Как у многих сайтов: каждое слово запроса должно встретиться в тексте так, как оно написано.

Введите запрос или выберите пример.

Поиск по смыслу

Понимает смысл запроса, синонимы и формы слов.

Здесь появятся статьи, близкие по смыслу.

Для демо нужен JavaScript: включите его или напишите Федору в Telegram.

Поиск по смыслу не безошибочен: если в каталоге нет ничего подходящего (попробуйте «каска»), он всё равно покажет ближайшие товары. Порог «ничего не найдено» подбирается на ваших данных: у этой модели области правильных и неправильных запросов пересекаются.

Где поиск по смыслу ошибается

Сильное слово перетягивает
«Светильник в палатку» — единственный промах. Слово «палатка» оказалось сильнее «светильника», и наверх вышли сами палатки, а не кемпинговая лампа. Для таких случаев при внедрении есть шаг переранжирования лучших результатов; в демо его нет, и помог ли бы он здесь, я не замерял.
Он всегда что-то показывает
Я спросил 6 вещей, которых в каталоге нет. На «каску» поиск по смыслу показал ветрозащитную куртку, на «шампунь» — мангал. Строгий поиск честно вернул пустоту. Порог «ничего не найдено» подбирается на ваших данных; у этой модели области правильных и неправильных запросов пересекаются, так что идеального порога нет.
Отрицание
Модели векторов плохо различают «с сахаром» и «без сахара». В своём исследовании negation-direction я нашёл в векторах ось отрицания, общую для русского и английского; дополнительный признак снижает долю таких ошибок с 0,72 до 0,02 на русском (multilingual-e5-base).
Артикулы и коды
Номер «AB-1234» смысла не несёт, для векторов это шум. Поэтому точный поиск по артикулам и брендам остаётся рядом и работает как раньше.

Как это внедряют на сайте

  1. Ваш каталог: названия, описания, артикулы и бренды
  2. Описания переводятся в векторы моделью для русского языка; при необходимости она дообучается на ваших данных
  3. Смысл складывается с точными совпадениями
  4. Лучшее переставляется наверх
  5. Выдача на сайт через API

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

На большом объёме я делал то же самое в проекте Compas: поиск по смыслу по ~147 тыс. компаний. На 1000 проверочных запросах у 691 лучшие совпадения оказались достаточно близки, а опечатки в запросе меняли оценку совпадения всего на 1,2%.

Как понять, нужен ли он вашему магазину

  • Посмотрите в статистике сайта, какая доля поисков заканчивается пустой выдачей или уходом со страницы.
  • Выпишите 20 запросов так, как их пишут покупатели, а не менеджеры: описанием задачи, синонимами, с опечатками.
  • Прогоните их через свой поиск и посчитайте, в скольких нужный товар попал в первую тройку.

Если результат похож на левые колонки таблицы выше, поиск по смыслу даст заметную разницу. Прототип на вашем каталоге со сравнением на 100 реальных запросах — 3–4 недели, от 90 000 ₽; внедрение — от 200 000 ₽.

Вопросы

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

Полнотекстовый ищет слова (иногда с учётом окончаний), семантический — близкий смысл. На запросах «своими словами» в моём замере это 8 и 15 попаданий из 16.

Придётся выкинуть текущий поиск?

Нет: новый слой работает рядом, точные совпадения, артикулы и фильтры остаются.

Работает с Битриксом?

Через API — да; конкретную интеграцию обсуждаем на разборе.

Не замедлит сайт?

Скорость ответа записываю в задачу и замеряю на прототипе.

Бесплатный пример на ваших данных

Пришлите адрес сайта или каталога — за 2 дня соберу пример поиска на ваших открытых данных, и вы сравните его со своим.

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

Что будет после обращения

  1. Вы пишетеЧто у вас есть (сайт, документы, каталог) и что хотите улучшить — в Telegram или на почту.
  2. Я уточняюЗадаю вопросы по задаче и данным; до доступа к данным подписываем NDA.
  3. Называю цену и срокТочную стоимость называю после разбора задачи; дальше решаете вы.

Услуги по теме статьи

Другие статьи