返回 Ultralytics 词汇表
Cosine Similarity
了解余弦相似度如何在 AI 中衡量向量相似度。使用 Ultralytics YOLO26 计算视觉嵌入,并通过 Ultralytics Platform 进行扩展。
余弦相似度是一种基础的数学度量,用于机器学习 (ML) 和 人工智能 (AI) 中,旨在衡量两个多维数组或向量的相似程度,而不考虑它们的大小或量级。通过计算向量空间中两点之间的夹角,它能够确定它们是否指向大致相同的方向。这种基于角度的方法对于处理那些方向比整体长度更重要的数据至关重要,因此在比较诸如嵌入 (embeddings) 之类的抽象数据表示时非常有效。
Link to this section理解该度量背后的数学原理#
要计算此度量,你需要计算两个向量的点积,并将其除以它们各自量级(长度)的乘积。最终得分始终落在 -1 到 1 的固定范围内:
- 得分为 1 表示向量指向完全相同的方向,表明具有最大相似度。
- 得分为 0 表示向量完全正交(呈 90 度角),意味着没有方向上的相似性。
- 得分为 -1 表示它们指向完全相反的方向。
在许多专为计算机视觉 (CV) 设计的现代深度学习框架中,你可以轻松访问用于此数学运算的优化函数,例如 PyTorch 的功能模块 或 TensorFlow 指标。
Link to this section区分相关概念#
区分余弦相似度与其他常用的数据分析度量标准,有助于你理解何时使用它:
- 余弦距离:虽然两者密切相关,但这些术语是成反比的。余弦距离的计算方法很简单,即 1 减去余弦相似度。因此,较小的距离表示向量之间具有更高的相似度。
- 欧几里得距离:此度量衡量两点之间的直线物理距离,因此对向量的整体大小或量级非常敏感。相比之下,余弦相似度只关注角度。例如,在文本分析中,一篇长文档和一短句可能具有很大的欧几里得距离,但如果它们主题相同,它们的余弦相似度依然会很高。
Link to this section人工智能的实际应用#
余弦相似度是众多现代软件产品的核心引擎,在原始数据与人类意图之间架起了桥梁。
- 向量搜索与 RAG:在自然语言处理 (NLP) 应用(如聊天机器人)中,用户查询和内部文档会被转换为密集嵌入。系统会快速计算余弦相似度,以从向量数据库中检索出与上下文最相关的文档,这是检索增强生成 (RAG) 中的关键一步。
- 推荐系统:电子商务和流媒体服务利用 Scikit-learn 和 SciPy 等工具将用户偏好和目录项表示为向量。通过测量购物者个人资料与不同产品之间的相似度得分,系统可以准确地推荐在视觉或主题上相关的项目。
Link to this section使用 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 通过提供强大的数据标注、可扩展的云端训练和无缝的模型部署工具,简化了这一流程,确保你的底层嵌入尽可能准确且具有实际意义。






