广告
您当前的位置: 首页 >  技术 >  AI探索

深入理解嵌入向量(Embeddings)与相似度度量标准

作者:XiaoZhang 时间:2026-06-12 阅读数:6人阅读

向量数据库,其存储的核心对象都是嵌入向量(Embeddings),检索的唯一依据也是向量之间的相似度度量(Similarity Metrics)。然而,许多初学者在不理解底层数学原理的情况下混用距离度量方式,往往导致检索召回率极低或耗费了不必要的计算资源。

本文将为您揭开 Embeddings 的本质,并深入剖析余弦相似度、内积和欧氏距离的异同与最佳实践。


1. 什么是嵌入向量(Embeddings)?

在数学上,嵌入向量是一个将高维离散的语义对象(例如一个单词、一句话、一张图或一段音频)映射到低维连续实数空间的密集实数向量(Dense Vector)

例如,OpenAI 的新一代文本嵌入模型 text-embedding-3-small 可以把一段文本转化为一个 $1536$ 维的浮点数数组。这个数组并不是杂乱无章的,而是捕捉了文本的语义特征。两个在语义上相似的实体,在这个高维空间中的相对距离会非常短。


2. 三大主流相似度度量标准

向量数据库通常提供三种距离度量计算方式,它们在数学公式及应用场景上有着明显的区别:

2.1 欧氏距离(L2 / Euclidean Distance)

计算多维空间中两个点之间的直线距离。

  • 数学公式
    $$D(x, y) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2}$$
  • 特点:距离越小说明越相似。欧氏距离受向量的**绝对长度(幅值)**影响极大。如果两个文档语义相同但其中一个长度是另一个的数倍,导致其向量长度不同,欧氏距离可能会非常大。
  • 适用场景:常用于图像检索、声纹匹配等对物理量绝对大小敏感的场景。

2.2 余弦相似度(Cosine Similarity)

计算两个向量夹角的余弦值。

  • 数学公式
    $$\text{Similarity}(x, y) = \frac{x \cdot y}{|x| |y|} = \frac{\sum x_i y_i}{\sqrt{\sum x_i^2} \sqrt{\sum y_i^2}}$$
  • 特点:余弦值范围在 $[-1, 1]$ 之间。夹角为 0 时余弦值为 1(完全相同),夹角为 90 度时余弦值为 0(正交,无关联)。它只关注方向上的相似度,而忽略向量的长度。
  • 适用场景:NLP 文本相似度检索、推荐系统、情感分析。

2.3 内积(Inner Product / Dot Product)

计算两个向量对应元素乘积的和。

  • 数学公式
    $$\text{Similarity}(x, y) = x \cdot y = \sum_{i=1}^n x_i y_i$$
  • 特点:如果向量没有经过归一化,内积值范围是无界的。内积同时受方向和向量长度影响。
  • 适用场景:在大规模工业检索中,内积通常是最受欢迎的度量方式,但前提是必须进行归一化(L2 Normalization)

3. 为什么向量归一化(Normalization)是黄金定律?

如果我们将所有的 Embedding 向量在存入数据库前,全部执行 L2 归一化(即使得向量的模长 $|x| = 1$),我们会得到一个神奇的数学简化:

当 $|x| = 1$ 且 $|y| = 1$ 时,余弦相似度公式简化为:
$$\text{Similarity}(x, y) = x \cdot y = \text{内积}$$

这意味着:归一化后,余弦相似度在数值上完全等同于内积!

归一化的性能优势:

  • 计算速度翻倍:计算内积仅需要执行一次乘加累加(FMA)指令,而计算余弦相似度则需要计算开平方根和除法(极其耗费 CPU 时钟周期)。
  • 对硬件更友好:SIMD(单指令多数据)和 GPU 架构能够以极高的吞吐量运行向量乘加运算,从而大幅提升 QPS。

因此,在向量数据库的日常开发中,**“先归一化,再选内积(IP)作为度量标准”**是业内公认的最佳实践。

本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。

评论交流 (0)

正在加载评论...
头像

XiaoZhang

当你还撑不起你的梦想时,就要去奋斗。如果缘分安排我们相遇,请不要让她擦肩和过。我们一起奋斗!

微信