返回 Ultralytics 术语表
Cosine Similarity
了解余弦相似度如何衡量 AI 中的向量相似性。使用 Ultralytics YOLO26 计算视觉嵌入,并通过 Ultralytics Platform 扩展应用规模。
余弦相似度是机器学习(ML)和人工智能(AI)中一项基础数学指标,用于衡量两个多维数组或向量之间的相似程度,而不受其大小或模长影响。通过计算向量空间中两点之间的夹角,可以判断它们是否大致指向同一方向。这种角度度量方法对于处理方向比整体长度更重要的数据至关重要,因此非常适合比较嵌入等抽象数据表示。
了解该指标背后的数学原理#
要计算该指标,先求两个向量的点积,再除以各自模长(长度)的乘积。最终得分始终处于 -1 到 1 的固定范围内:
- 得分为 1 表示向量指向完全相同的方向,说明相似度最高。
- 得分为 0 表示向量完全正交(夹角为 90 度),也就是说方向上没有相似性。
- 得分为 -1 表示它们指向完全相反的方向。
在许多面向计算机视觉(CV)的现代深度学习框架中,你可以轻松使用针对这一数学运算优化过的函数,例如 PyTorch 的函数式模块或 TensorFlow 指标。
区分相关概念#
区分余弦相似度与其他常用的数据分析度量指标,有助于你了解何时该使用它:
- 余弦距离:这两个术语关系密切,但成反比。余弦距离的计算方法很简单,即用 1 减去余弦相似度。因此,距离越小,向量之间的相似度就越高。
- 欧氏距离:该指标衡量两点之间的直线物理距离,因此对向量的整体大小或模长非常敏感。相比之下,余弦相似度只关注夹角。例如,在文本分析中,一篇长文档和一个短句之间的欧氏距离可能很大,但如果它们讨论的是同一主题,余弦相似度仍会很高。
AI 领域的现实应用#
余弦相似度是许多现代软件产品的核心引擎,连接原始数据与人的意图。
- 向量搜索和 RAG:在聊天机器人等自然语言处理(NLP)应用中,用户查询和内部文档会被转换为稠密嵌入。系统会快速计算余弦相似度,从向量数据库中检索上下文最相关的文档,这是检索增强生成(RAG)的关键步骤。
- 推荐系统:电子商务和流媒体服务会使用 Scikit-learn 和 SciPy 等工具,将用户偏好和目录条目表示为向量。通过衡量购物者个人资料与不同商品之间的相似度得分,系统可以准确推荐视觉或主题相关的内容。
使用 Ultralytics 衡量视觉相似度#
你可以使用最先进的视觉模型,直接从视觉数据中提取高维特征向量。以下 Python 代码演示了如何加载一个用于图像分类的 Ultralytics YOLO26 模型,为两张图像生成嵌入,并计算余弦相似度来衡量它们的视觉相似程度。
import torch
import torch.nn.functional as F
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Generate embedding vectors for two separate images
results = model.embed(["bus.jpg", "car.jpg"])
# Calculate the cosine similarity between the two visual embeddings
similarity = F.cosine_similarity(torch.tensor(results[0]), torch.tensor(results[1]), dim=0)
print(f"Visual Similarity Score: {similarity.item():.4f}")对于希望扩展这些语义搜索能力的开发者来说,训练精度高的基础模型至关重要。Ultralytics Platform通过提供强大的数据标注、可扩展的云端训练和无缝的模型部署工具,简化了整个流程,确保底层嵌入尽可能准确且有意义。









