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

推荐订阅源

L
LangChain Blog
有赞技术团队
有赞技术团队
博客园_首页
IT之家
IT之家
爱范儿
爱范儿
量子位
小众软件
小众软件
Jina AI
Jina AI
WordPress大学
WordPress大学
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
The Cloudflare Blog
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
雷峰网
雷峰网
V
Visual Studio Blog
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
Last Week in AI
Last Week in AI
S
SegmentFault 最新的问题

博客园 - zhaofeng555

欧氏距离 vs 余弦相似度 相似度2-欧式距离 Oh-My-OpenCode介绍 OpenCode 里的 Atlas / Sisyphus / Prometheus区别 安装opencode langchain第二个小例子 langchain的第一个小例子 springai第二个例子使用配置类配置chatclient springai访问本地alloma第一个例子 springai访问本地alloma的qwen3报错 C/c++趣味程序百例 mac 安装stale disffusion笔记 mac 安装TA-Lib包 centos7 install docker CentOS7 内核升级从3.10升级到4.4(以kernel-lt 为例) 一个数组中有一个重复的数字,O(n) 找出来 找数组中重复的数字 mysql server 端命令 mac安装python3 pandas tushare
相似度1-余弦相似度
zhaofeng555 · 2026-04-04 · via 博客园 - zhaofeng555

余弦相似度

一、概念 

余弦相似度,就是把两个东西看成向量,计算它们夹角的余弦值,用来衡量两个对象的相似程度。

  • 取值范围:[-1, 1]
  • 越接近 1:两个东西越相似
  • 越接近 0:基本不相关
  • 越接近 -1:完全相反

二、原理(一句话)

两个向量方向越一致,夹角越小,余弦值越接近 1,相似度越高;

方向越相反,夹角越大,余弦值越小。

公式(二维):

cosθ=x12​+y12​​⋅x22​+y22​​x1​x2​+y1​y2​​

三、简单举例

例子 1:二维向量

向量 A = (1, 2)
向量 B = (2, 4)

计算:

  • 分子:1×2 + 2×4 = 2 + 8 = 10
  • 分母:√(1+4) × √(4+16) = √5 × √20 = √100 = 10
  • 余弦相似度 = 10 / 10 = 1

说明:A 和 B 方向完全一致,完全相似。

例子 2:推荐 / 文本场景(常用)

假设用关键词频率表示文章:

  • 文章 A:{苹果:2, 香蕉:1, 橙子:0} → 向量 (2, 1, 0)
  • 文章 B:{苹果:4, 香蕉:2, 橙子:1} → 向量 (4, 2, 1)

算出来相似度 ≈ 0.98,非常接近 1 → 两篇文章高度相似。

例子 3:完全相反

A=(1,0),B=(-1,0)
相似度 = -1 → 完全相反。

四、常见用途

  • 推荐系统:计算用户 / 物品相似度
  • NLP:文本相似度、去重、聚类
  • 图像检索:特征向量相似度
python实现余弦相似度:

import math def cosine_similarity(vec1, vec2): # 计算点积 dot_product = sum(a * b for a, b in zip(vec1, vec2)) # 计算两个向量的模长 norm1 = math.sqrt(sum(a ** 2 for a in vec1)) norm2 = math.sqrt(sum(b ** 2 for b in vec2)) if norm1 == 0 or norm2 == 0: return 0.0 return dot_product / (norm1 * norm2)