Русский ИТ бизнес 👨
Подписаться
Про векторизацию. Мы стали использовать библиотеку MiniLM-L12-v2 для создания эмбендингов. Она из текста делает 256 цифр (я упрощая пишу, как понял что мне ребята сказали). Дальше эти цифры мы записываем в Manticore и можно искать схожие товары между собой по векторам (цифрам).

Вот пример:

https://poisk.im/p/745285190732378584
https://poisk.im/p/702769798149490123

Два монитора, близость 0.92 между собой (схожесть).

Зачем? Мы используем для поиска похожих товаров и следующего матчинга. Все это работает без ускорителей, довольно шустро. А на картинке часть эмбендингов на два товара - вот так они выглядят в базе.

Русский ИТ бизнес

Комментарии (0)

  • Channel_Bot
    Хватает 256, что ребята говорят?
  • dmitry236
    Макс, а почему вы из исходника не забираете характеристики в разобранном виде? На ситилинке они подробно разобраны и можно сравнивать по каким-то характеристикам между собой товары, даже в рамках векторной близости потом.
  • 869938487
    а ruBERT (заточена под русский) не пробовали? или хуже результаты?
    • GroupAnonymousBot
      нет. не пробовали. вот тот взяли инструмент для векторизации
  • Jhongalt42
    Ты серьезно?

    Монитор в 34 дюйма против 23.6
    4к против фулл hd
    46к руб против 37к руб

    Она что векторизировала до герцовки и только ее сравнила?
    • rznvlxndr
      Так он и написал, схожесть 0,92 (видимо процента)
      • Jhongalt42
        ну так 0,92 если это 92% то бред, если это почти 1% то норм)
    • GroupAnonymousBot
      она сравнивала названия. дальше мы получаем кластер похожих и уже с помощью ИИ делаем матчинг
      • Jhongalt42
        это твои прогеры тебе ответили? так и что в названии, тоже схожесть высокая получается?
        • GroupAnonymousBot
          мы с помощью векторизации делаем кластер похожих товаров. дальше можно взять их и кинуть в ИИ для получения % вероятности матчинга
          • Jhongalt42
            ладно, ждем доработанный результат, по одному названию - контент из пальца,
            получилось сравнение только в герцовке

            не забудьте что вектора цифровые, а еще надо сравнивать и другие char (текстоовые)
  • dr_sgs
    В еластике это из коробки работает
    • mtrnkwas
      В эластике есть такая функция, но это не отменяет необходимость расчета эмбеддингов. А уж если посчитал, то лучше тогда пихать их в специальную базу, мантикор или Qdrant, которые специально заточены под векторный поиск. Плюс насколько я помню, в эластике векторный поиск организован в виде платного плагина. Точнее в виде плагина, который работает на платном тарифе.
      • ну ладно.
  • mtrnkwas
    Там не 256 признаков, а 384 признака float32, 1536 байта на вектор. И схожесть по косинусу 0.56, по картинке видно. И чего вы так долго их считаете? Там же у вас всего 40 миллионов товаров. На моей одной видеокарте 1 миллион векторов по этой модели считается 4 минуты, итого 160 минут на весь ваш объем. За три часа спокойно можно сделать.
    • dmitry236
      что Максу сказали разрабы, то он и написал, чё ты пристаешь
      • mtrnkwas
        Про технические детали согласен. Макс не обязан это знать. Но вот про то, что посчитать 40 миллионов векторов это вообще не серьёзный объем, знать должен.
        • agidayte
          Зато какая точность (0,56), можно в принципе монетку подкидывать и конечный результат не сильно поменяется😂
          • mtrnkwas
            Это кстати хорошая точность для косинусной схожести. Не путайте с точным матчингом, это сходство по семантике, то есть по смыслу.
            • GroupAnonymousBot
              матчинг следующий шаг. через ИИ можно делать
              • mtrnkwas
                А зачем вам точный матчинг, есть вы уже организовали векторный поиск? Лучше через ИИ сделать описание товаров по картинке, чтобы потом полученный текст пихать в вектор. Тогда будет меньше вероятности, что поиск по векторам будет находить одновременно бальзам звёздочка и велосипедную звёздочку, как у вас сейчас. По-видимому, тексты в виде названий товаров слишком не информативные, поиску не за что зацепиться.
                • жеска
                • GroupAnonymousBot
                  1. мы делаем кластер похожих товаров через векторизацию
                  2. кидаем потом массив в ИИ с характеристиками
                  3. ИИ возвращает % схожести.
                  4. все что выше 0.85 - товар одинаков.
            • agidayte
              Ну т.е. общего только что и то и то монитор
            • интересная мысль - сектрора где в принципе не нужен точный поиск.
    • kirill_kolyshkin
      ну зачем ты? людям теперь работать придется
    • GroupAnonymousBot
      5 млн. товаров. эта библиотека возвращает 256 цифр. на 1 товар около 40 мс.
      • mtrnkwas
        Узнай у своих программистов, как они считают - на ЦПУ или на ГПУ. 40 мс это очень долго.
        • GroupAnonymousBot
          ЦПУ. у нас нет ускорителя.
          • mtrnkwas
            Неужели нет ни одной карты типа 3090 у кого-то взять на три часа?
            • GroupAnonymousBot
              зачем? нам это надо делать нон-стоп. но спешки то нет. за 3-4 дня обойдет все товары и сделаем вектора.
              • mtrnkwas
                Ну я бы купил за 700-800 долларов одну старую карту и считал мгновенно нон-стоп. Считать на ЦПУ это пытка, как по мне.
  • Lexxar
    Я тоже считаю эмбеддинги на CPU, потому что всё на хостинге, а GPU на хостингах дорогие