Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: cosine similarity, dot product, vector space, similarity metrics, embedding

Чем cosine similarity отличается от dot product при поиске в векторном пространстве?

Вопрос проверяет понимание различий между косинусным сходством и скалярным произведением при измерении близости векторов, что важно для задач поиска и рекомендаций.

Короткий ответ

Косинусное сходство измеряет угол между векторами, игнорируя их длину, и возвращает значение от -1 до 1. Скалярное произведение учитывает как угол, так и длину векторов, поэтому может быть большим для длинных векторов. При поиске cosine similarity лучше подходит для сравнения направлений, а dot product — когда важна магнитуда.

Длинный ответ

Основное различие

Косинусное сходство (cosine similarity) и скалярное произведение (dot product) — это две метрики для сравнения векторов в многомерном пространстве. Cosine similarity вычисляет косинус угла между векторами, нормализуя их длины, поэтому результат всегда находится в диапазоне от -1 до 1. Dot product — это сумма произведений соответствующих координат, которая зависит как от угла, так и от длины векторов.

Когда что использовать

Cosine similarity идеально подходит для задач, где важна ориентация вектора, а не его длина — например, при сравнении текстовых эмбеддингов или профилей пользователей. Dot product чаще применяется в системах рекомендаций, где длина вектора может отражать популярность или интенсивность признака.

Пример на Python

import numpy as np

v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])

dot = np.dot(v1, v2)  # 32
cosine = dot / (np.linalg.norm(v1) * np.linalg.norm(v2))  # 0.974

# Если увеличить v1 в 10 раз:
v1_scaled = v1 * 10
dot_scaled = np.dot(v1_scaled, v2)  # 320
cosine_scaled = dot_scaled / (np.linalg.norm(v1_scaled) * np.linalg.norm(v2))  # 0.974

В примере видно, что dot product изменился в 10 раз, а cosine similarity остался тем же, так как направление вектора не изменилось.

Вывод

Cosine similarity лучше использовать, когда нужно сравнивать объекты по их относительному положению (например, семантическая близость текстов), а dot product — когда важна абсолютная величина (например, в коллаборативной фильтрации с учётом рейтингов).

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Python

    Python

  • Math

    Math

Ключевые слова

#cosine similarity

#dot product

#vector space

#similarity metrics

#embedding

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.