用于向量比较的距离度量(余弦相似度与 L2 (欧几里得) 距离)的选择,很大程度上取决于嵌入模型的训练方式。嵌入模型经过优化,可以以与特定距离度量对齐的方式构建其输出向量。例如,使用余弦相似度目标(例如,Siamese 网络中的对比损失)训练的模型,会学习强调向量之间的角度关系,使其嵌入在方向上更具意义。相比之下,使用基于 L2 的损失(例如,带有欧几里得边距的三元组损失)训练的模型,则专注于最小化相似项目之间的绝对距离。如果检索系统使用的度量标准与模型的训练目标不匹配,则嵌入之间的几何关系可能无法反映它们的语义相似性,从而导致检索准确性降低。
例如,考虑一个旨在最大化相关文本片段之间余弦相似度的模型。此类嵌入将位于超球体中,其中方向(角度)比幅度更重要。在此处使用 L2 距离可能会有问题,因为角度小但幅度大的向量(例如,由于 TF-IDF 类嵌入中的罕见词项)可能显得比实际更远。反之,使用 L2 目标训练的模型可能会生成方向和幅度都具有意义的嵌入(例如,像素强度重要的图像嵌入中)。在此处使用余弦相似度可能会忽略模型学习到的基于幅度的模式。一个典型的失配示例是将 OpenAI 的 text-embedding-ada-002(通常与余弦配对使用)与 L2 结合使用:由于模型将嵌入归一化到单位长度,L2 变得等同于余弦相似度,但这并非所有模型都普遍如此。
为了避免次优结果,开发者应首先查看模型的文档或训练设置。例如,Sentence-BERT 模型通常使用余弦相似度进行微调,因此使用该度量能发挥最佳性能。如果模型的训练目标不明确,可以在验证集上同时试验两种度量,以帮助确定更好的选择。此外,归一化(将向量缩放到单位长度)有时可以调和这两种度量,因为归一化向量之间的 L2 距离会简化为余弦相似度的函数。然而,归一化并非总是合适的——对于幅度具有意义的模型(例如,表示置信度分数的嵌入),强制单位长度可能会丢弃有用信息。总之,模型的設計與度量之間的對齊至關重要,不匹配可能導致检索任务的性能顯著下降。