Недавно мы в Beeline Cloud делали подборку руководств и обучающих материалов по теме эмбеддингов. Сегодня решили поговорить о распространенном подходе к семантическому поиску на основе косинусного расстояния, а также альтернативных методах. Заодно посмотрим на несколько любопытных проектов, использующих векторные представления на практике — среди них, например, сервис, позволяющий сравнить свои технологические предпочтения с интересами известных разработчиков вроде Линуса Торвальдса.
Не все так просто с векторами
Косинусное сходство подразумевает расчет косинуса угла между двумя векторами. Чем ближе результат к единице, тем выше семантическая близость — например, высокое значение могут иметь эмбеддинги синонимов «кино» и «фильм». Обычно, если показатель стремится к нулю, это говорит об отсутствии выраженной смысловой близости. Также метрика способна принимать отрицательные значения, что может указывать на смысловую противоположность векторизованных объектов. Так, отрицательное значение косинусной близости могут иметь антонимы («хороший» и «плохой»). Косинусное сходство используют для анализа текста и построения рекомендательных систем. Подход не требует большого количества ресурсов, и его можно реализовать с помощью таких распространенных библиотек, как NumPy и SciPy.
Кстати, подобный подход применялся более тридцати лет назад для фильтрации новостной ленты Usenet. Система SIFT (Scalable Information Filtering Technology) использовала косинусное сходство и алгоритмы кластеризации для поиска релевантных групп и статей. Пользовательский профиль и публикации представлялись в виде взвешенных векторов, после чего вычислялась степень их близости.
Но как это часто бывает, производительность идет рука об руку с некоторыми ограничениями и нюансами. Сравниваемые тексты могут быть разной длины, но, если их содержание похоже, косинусное сходство будет высоким. Так, короткая заметка про автобус и энциклопедическая статья об общественном транспорте могут оказаться близкими с точки зрения косинусного сходства, несмотря на разную «насыщенность», а художественный роман о «попаданце» во времена Великой французской революции — почти идентичным серьезному историческому исследованию потому, что оба текста используют схожий набор тематических слов и понятий.
Проблему точности оценки описали специалисты из южнокорейского научно-исследовательского института, занимающегося морской инженерией и освоением океана. Они исследовали возможность применения косинусного сходства для задач мониторинга и обслуживания ветряных установок, расположенных в открытом море. В рамках эксперимента ученые рассчитывали косинусное расстояние между значениями матрицы оценки повреждений (DEM), где фиксировались данные о характере и локализации возможных дефектов, и векторами повреждений (DRV), отражающими их особенности. Результаты показали, что корректное обнаружение поломок возможно только в случаях, когда их структура почти идентична примерам из эталонной базы.
Специалисты из Netflix в своей научной работе также отмечают некоторые ограничения, связанные с различными методами регуляризации при обучении глубоких моделей — они могут непреднамеренно влиять на степень подобия эмбеддингов. А разработчик Python-библиотеки для визуализации livelossplot Петр Мигдал указывает, что, по его опыту, аналитики нередко используют косинусное сходство почти автоматически, интерпретируя его как универсальную «меру смысла», хотя на практике все гораздо сложнее. Косинусная близость в 0,82 вовсе не означает «82% похожести». Более того, отрицательные значения метрики далеко не всегда говорят о смысловой противоположности объектов. Как отмечает Мигдал, в большинстве случаев противоположностью осмысленного текста оказывается вовсе не антоним, а просто бессмысленный набор данных или «шум».
Не косинусным сходством единым
Разумеется, помимо косинусного сходства, для сравнения векторов применяют и другие подходы. Большинство из них хорошо изучено, например:
-
Евклидово расстояние представляет линию между двумя точками в векторном пространстве. Метрику можно использовать для измерения дрейфа данных эмбеддингов в моделях компьютерного зрения и системах обработки естественного языка.
-
Скалярное произведение векторов показывает, насколько два вектора сонаправлены и используется для нахождения длин векторов и углов между ними. Скалярное произведение является базовой операцией «под капотом» систем векторного поиска.
-
Манхэттенское расстояние обозначает сумму модулей разностей координат между двумя точками. Метрика используется чаще всего при работе с наборами данных, содержащими компактные или изолированные кластеры (когда точки находятся близко друг к другу или их легко разделить на группы).
Они показывают похожие результаты с точки зрения производительности и точности. В 2024 году ведущий инженер-программист одного из крупнейших банков мира J.P. Morgan провел эксперимент: сгенерировал векторные представления для заголовков 79 публикаций из его блога и 98 поисковых запросов из тестового датасета, а затем сравнил полученные векторы, используя вышеописанные методы. Расчет скалярного произведения занял 0,07 мс, косинусного сходства — 0,12 мс, а евклидова и манхэттенского расстояний — 0,08 и 0,10 мс соответственно. При этом результаты сравнения получились практически идентичными.
Однако сообщество предлагает и более необычные варианты для реализации семантического поиска. Например, специалист, который занимался настройкой систем выдачи результатов в Reddit и Shopify, отмечает, что можно реализовать векторный поиск вообще без эмбеддингов — на основе иерархически управляемых таксономий.
Идея состоит в том, чтобы сопоставлять запросы и контент с иерархией понятий в рамках языка предметной области. Эту иерархию можно представить как дерево папок в файловой системе и попросить языковую модель классифицировать необходимые объекты по соответствующим директориям. Так, если пользователь ищет «лошадку на палке», то прямое совпадение может находиться на пути: Для детей / Детские игрушки / Домашние игрушки / Деревянные лошадки. Аналогичным образом выявляются дочерние категории, которые принадлежат к одной родительской: Для детей / Детские игрушки / Домашние игрушки / Куклы. Степень сходства определяется на основе того, насколько близко расположены те или иные категории на дереве. Ранее этот подход был сложен в реализации и требовал вручную составлять таксономии для сопоставления, но большие языковые модели упростили эту задачу.
Еще один метод предложил исследователь из Университета Пассау в 2024 году. Вместо того чтобы использовать косинусное расстояние, автор предлагает предсказывать семантическое сходство регрессионной моделью. Исследователь представил модель STSScore на базе RoBERTa, которую дообучил на задачах из бенчмарка STS-B (эти тесты проверяют, насколько разные метрики семантического сходства идентичны человеческим оценкам — люди оценивают пары предложений по степени схожести по шкале от 0 до 5). Чтобы не сравнивать между собой векторы, на вход модели подаются два текста. Затем она выдает число от 0 до 1, в зависимости от похожести. Но у такого метода есть ограничения — в частности, он уступает эмбеддингам в вопросе универсальности, так как требует адаптации под разные языки.
Поиграться с векторами (и позлить фанатов Тейлор Свифт)
Поделимся несколькими любопытными проектами на основе эмбеддингов, которые можно «покрутить» на досуге, если выдалась свободная минутка.
GitStars. Автор проекта исходил из предположения о том, что пользователи GitHub используют звезды в качестве закладок: «О, нужно не забыть потом почитать про это подробнее». На основе этих «лайков» энтузиаст создал систему рекомендаций: что нравится тому или иному пользователю, как его предпочтения соотносятся с увлечениями других завсегдатаев площадки (для построения эмбеддингов он использовал более 300 тыс. репозиториев).
К примеру, сервис позволяет сравнить свои интересы с предпочтениями известных разработчиков вроде Линуса Торвальдса. Сейчас его профиль показывает, что он в большей степени специализируется на системном и низкоуровневом программировании, тогда как кроссплатформы выходят за пределы его интересов. Релевантными для Торвальдса являются репозитории Linux, Git и 16-битной операционной системы MikeOS. Наиболее схожи с профилем Торвальдса страницы одного из ключевых Linux-разработчиков Грега Кроа-Хартмана и автора языка Python Гвидо ван Россума.
Кстати, предположение автора проекта, что иногда GitHub-звезды используют в качестве закладок, оказалось верным, и с помощью GitStars пользователи начали отыскивать интересные репозитории, про которые ранее забыли или не могли найти.
Развлекаемся с ИИ-эмбеддингами на языке Go. Бывший техлид Docker Hub, будучи поклонником тяжелой музыки, удивлялся феномену популярности Тейлор Свифт. В одной из бесед с фанатами певицы он задумался о том, как относительно объективно сравнить тексты исполнителей из совершенно разных музыкальных жанров. В 2024 году это вылилось в пет-проект, где он использовал эмбеддинги для сравнения лирики поп-артиста и метал-группы.
Для сбора текстов он воспользовался фреймворком gocolly, а для построения векторных представлений — моделью OpenAI Ada. Более того, автор проекта решил анализировать тексты не только песен, но и альбомов целиком (для этого он вычислил усредненные эмбеддинги по трекам каждого релиза). В результате были получены 1000-мерные эмбеддинги, которые проецировались в двумерное и трехмерное пространство с помощью PCA и t-SNE.
Визуализация показала, например, что тексты Тейлор Свифт выглядят более однородными по структуре по сравнению с лирикой его любимой группы Masterplan. Дополнительно модель позволила интерпретировать песни через эмбеддинги эмоций — таких как радость, гнев, страх и другие. В частности, у Свифт сильнее проявлялись эмоции радости и удивления, тогда как для метал-группы (очевидно) более характерными оказались тревожность и напряжение.
Сборник языковых игр. Это компактный набор мини-игр (проект под лицензией MIT), которые можно запустить в терминале. В общих чертах геймплей каждой заключается в том, чтобы угадывать слова по различным семантическим подсказкам. За основу вопросов в приложении взяты эмбеддинги GloVe. Автором проекта является инженер-программист из компании Oracle.
Всего в наборе восемь игр. К примеру, одна из них представляет собой классическую «угадайку» в духе горячо/холодно. Приложение дает подсказку, а игрок должен за десять попыток дойти до нужного слова — каждый введенный ответ оценивается по степени косинусного сходства. Ознакомиться со всеми мини-играми можно в репозитории проекта — там есть как скриншоты, так и GIF-файлы с записью геймплея.
Beeline Cloud — безопасный облачный провайдер. Разрабатываем облачные решения, чтобы вы предоставляли клиентам лучшие сервисы.
О чем еще рассказываем в нашем блоге на Хабре и на DIY-платформе «вАЙТИ»:
-
Выходные — для развития: Пара открытых ресурсов для погружения в инженерию данных
-
Новые векторные СУБД и другие инструменты для эмбеддингов и RAG
-
Прогнозатор «Ванга»: как мы автоматизировали предсказание будущего
-
Spring AI: феноменология цифрового сознания, или Как я перестал бояться и полюбил облачные модели
ссылка на оригинал статьи https://habr.com/ru/articles/1044592/