返回 Ultralytics 词汇表
Cosine Similarity
了解余弦相似度如何在 AI 中衡量向量相似度。使用 Ultralytics YOLO26 计算视觉嵌入,并通过 Ultralytics Platform 进行扩展。
余弦相似度是机器学习 (ML)和人工智能 (AI)中常用的基础数学指标,用于衡量两个多维数组或向量的相似程度,而与其大小或量级无关。通过计算向量空间中两个点之间的夹角,它可以确定它们是否指向大致相同的方向。这种角度方法对于处理方向比总体长度更重要的数据至关重要,因此在比较嵌入等抽象数据表示时非常高效。
理解该度量背后的数学原理#
要计算此指标,你需要计算两个向量的点积,然后将其除以它们各自的模长(长度)的乘积。得出的分数总是落在 -1 到 1 的固定范围内:
- 得分为 1 表示向量指向完全相同的方向,表明具有最大相似度。
- 得分为 0 意味着向量完全正交(呈 90 度角),表示不存在方向相似性。
- 得分为 -1 表示它们指向完全相反的方向。
在许多专为计算机视觉 (CV)设计的现代深度学习框架中,你可以轻松访问针对此数学运算优化的函数,例如PyTorch 的 functional 模块或TensorFlow 指标。
区分相关概念#
了解何时使用余弦相似度时,将其与其它常用的数据分析测量方法区分开来会很有帮助:
- 余弦距离:虽然密切相关,但这些术语成反比。余弦距离的计算方法很简单,即 1 减去余弦相似度。因此,较小的距离表示向量之间具有较高的相似度。
- 欧几里得距离:此度量衡量两点之间的直线物理距离,因此对向量的整体大小或量级非常敏感。相比之下,余弦相似度只关注角度。例如,在文本分析中,一篇长文档和一短句可能具有很大的欧几里得距离,但如果它们主题相同,它们的余弦相似度依然会很高。
人工智能的实际应用#
余弦相似度是众多现代软件产品的核心引擎,在原始数据与人类意图之间架起了桥梁。
- 向量搜索和 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 平台通过提供强大的数据标注工具、可扩展的云端训练和无缝的模型部署来简化此流程,确保你的底层嵌入尽可能准确和有意义。






