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

推荐订阅源

Engineering at Meta
Engineering at Meta
人人都是产品经理
人人都是产品经理
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
量子位
腾讯CDC
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
The Hacker News
The Hacker News
T
The Exploit Database - CXSecurity.com
B
Blog
S
SegmentFault 最新的问题
P
Privacy & Cybersecurity Law Blog
T
Threatpost
博客园 - 聂微东
T
Tailwind CSS Blog
The Last Watchdog
The Last Watchdog
C
Check Point Blog
N
Netflix TechBlog - Medium
D
DataBreaches.Net
爱范儿
爱范儿
IT之家
IT之家
S
Secure Thoughts
M
MIT News - Artificial intelligence
NISL@THU
NISL@THU
C
Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
有赞技术团队
有赞技术团队
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
Spread Privacy
Spread Privacy
Schneier on Security
Schneier on Security
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
雷峰网
雷峰网
Project Zero
Project Zero
博客园 - Franky
H
Heimdal Security Blog
A
About on SuperTechFans
Security Latest
Security Latest
Webroot Blog
Webroot Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Векторы по косинусу считают. Косинусное сходство, альтернативы, плюс — фановые проекты с эмбеддингами
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-платформе «вАЙТИ»: