Скалярное произведение двух векторов, деленное на произведение их длин. Принимает значения от минус единицы до единицы и измеряет совпадение направления, а не величины.
Возьмем короткое описание и длинное описание одного и того же приложения. У длинного все веса больше просто потому, что текста больше, и по абсолютной величине оно «перевесит» любой короткий текст. Деление на длину вектора убирает этот эффект. Остается вопрос о том, насколько совпадает профиль признаков, а не о том, чей текст объемнее. Значение около единицы означает почти совпадающее направление. Косинусное расстояние это единица минус косинусная близость. Для нулевого вектора мера не определена, и это одна из типичных причин появления NaN в расчетах.
Читать: cosine_similarity в scikit-learn; Introduction to Information Retrieval, глава 6