惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
量子位
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
Google DeepMind News
Google DeepMind News
小众软件
小众软件
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
雷峰网
雷峰网
Jina AI
Jina AI
酷 壳 – CoolShell
酷 壳 – CoolShell

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Векторы по косинусу считают. Косинусное сходство, альтерн...
beeline_cloud · 2026-06-07 · via Все публикации подряд на Хабре

Векторы по косинусу считают. Косинусное сходство, альтернативы, плюс — фановые проекты с эмбеддингами

7 мин

3.4K

Недавно мы в Beeline Cloud делали подборку руководств и обучающих материалов по теме эмбеддингов. Сегодня решили поговорить о распространенном подходе к семантическому поиску на основе косинусного расстояния, а также альтернативных методах. Заодно посмотрим на несколько любопытных проектов, использующих векторные представления на практике — среди них, например, сервис, позволяющий сравнить свои технологические предпочтения с интересами известных разработчиков вроде Линуса Торвальдса.

Изображение: Tim Mossholder (Unsplash License)

Изображение: Tim Mossholder (Unsplash License)

Не все так просто с векторами

Косинусное сходство подразумевает расчет косинуса угла между двумя векторами. Чем ближе результат к единице, тем выше семантическая близость — например, высокое значение могут иметь эмбеддинги синонимов «кино» и «фильм». Обычно, если показатель стремится к нулю, это говорит об отсутствии выраженной смысловой близости. Также метрика способна принимать отрицательные значения, что может указывать на смысловую противоположность векторизованных объектов. Так, отрицательное значение косинусной близости могут иметь антонимы («хороший» и «плохой»). Косинусное сходство используют для анализа текста и построения рекомендательных систем. Подход не требует большого количества ресурсов, и его можно реализовать с помощью таких распространенных библиотек, как 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, в зависимости от похожести. Но у такого метода есть ограничения — в частности, он уступает эмбеддингам в вопросе универсальности, так как требует адаптации под разные языки.

Поиграться с векторами (и позлить фанатов Тейлор Свифт)

Поделимся несколькими любопытными проектами на основе эмбеддингов, которые можно «покрутить» на досуге, если выдалась свободная минутка.

Изображение: BoliviaInteligente (Unsplash License)

Изображение: BoliviaInteligente (Unsplash License)

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-платформе «вАЙТИ»: