← Все статьи

«Найдите предохранитель как этот, только помощнее»: как мы сделали семантический поиск по каталогу из 100 000 радиодеталей

Кейс Take&Make: семантический поиск по каталогу электронных компонентов для ЭлектронКомплект

Эта история началась вовсе не с поиска. Нас позвали разрабатывать сайт — обычный, хороший интернет-магазин с каталогом и корзиной. И всё шло своим чередом, пока на одном из этапов переговоров мы не упёрлись в поиск. А точнее — в то, что обычный поиск по такому каталогу не работает, и клиенту нужен семантический поиск для интернет-магазина, понимающий запрос по смыслу, а не по совпадению слов.

Умный поиск по каталогу, которого всем не хватало

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

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

Мы показали клиенту десяток референсов, нарисовали несколько концептов поиска. Ответ был неизменно один: «Всё не то».

Где сидит настоящая задача

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

Показали. Рассказали. Ударили по рукам. Стали делать.

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

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

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

Вторая засада — числа. Мы обратили внимание, что огромная доля запросов опирается на численные свойства изделий: номинальный ток предохранителя, сопротивление резистора, ёмкость и рабочее напряжение конденсатора, B-коэффициент термистора. Беда в том, что эти значения часто не были вынесены в свойства товара — они прятались внутри описаний и документов. Для человека «5 А, 250 В» в тексте карточки очевидны. Для фильтра их как бы и нет.

Как устроен семантический поиск по каталогу: архитектура, которая заработала

Тогда мы выстроили поиск иначе — так, чтобы он опирался не на «похожесть картинок в векторном пространстве», а на реальные характеристики товара.

  1. Пайплайн извлечения характеристик. Прогнали каждый товар через конвейер, который по всем доступным описаниям и документам собирал числовые характеристики изделия и приводил их к единому виду. То, что лежало похороненным в тексте, стало структурированными данными, по которым уже можно искать и фильтровать.
  2. Онтология свойств по категориям. Для каждой категории собрали свой набор значимых характеристик: у предохранителя — номинальный ток, напряжение, быстродействие; у резистора — сопротивление, мощность, допуск; у разъёма — тип, способ монтажа. Машина наконец стала понимать, что у предохранителя и у резистора «важное» — разное.
  3. Разбор запроса пользователя. Реализовали поиск по характеристикам товаров: система распознаёт формулировку по нескольким осям — категория, бренд, свойство и, главное, свойство с фильтром. Запрос «реле на 12 В с током коммутации больше 10 А» раскладывается на «категория: реле; напряжение катушки: 12 В; ток коммутации: > 10 А» — и идёт искать именно это. А «предохранитель как этот, только помощнее» превращается в «та же категория, тот же типоразмер, номинальный ток выше».

Где пришлось считать деньги

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

В ход пошли батчи и понижение модели до Haiku везде, где задача не требовала более тяжёлой. Часть работы, где хватало модели попроще, мы ей и отдали — и не прогадали. В итоге расход удалось урезать в семь раз.

Что в итоге: цифры

Сравнили поведение пользователей на умном поиске с обычным — и картина сложилась вполне красноречивая:

  • ×1,5 — конверсия в покупку. Люди чаще находят то, за чем пришли, — и доходят до оплаты.
  • ×2,5 — скорость оформления заказа. Нужная деталь находится с первого-второго запроса, а не после десяти заходов в фильтры.
  • +20% — средний чек. Когда поиск понимает запрос, клиент добирает сопутствующее, а не уходит искать недостающее к конкуренту.

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

Машина, как ни крути, оказалась переводчиком — с инженерного на человеческий и обратно. А статистика, как видно из цифр выше, перевод одобрила.

Нужно внедрить ИИ в свой бизнес?

Запросить брифинг →