SubtractEmbeddings

从 v1 中减去嵌入向量 v2,并将结果作为归一化向量返回。

格式 

SubtractEmbeddings ( v1 ; v2 )

参数 

v1v2 - 包含相同维度的嵌入向量的任何文本表达式、文本字段或容器字段。

返回的数据类型 

文本、容器

原始版本 

22.0

说明 

该函数在两个嵌入向量上执行向量减法 (v1 - v2),并将结果作为归一化向量返回。归一化将生成的向量集中于其语义方向,而不是其大小,这是比较或操纵嵌入的标准做法。

使用此函数通过从一个向量 (v1) 中删除另一个向量 (v2) 的含义来隔离或修改语义概念。例如,从“冬季”的向量中减去“寒冷”的向量可能会导致一个代表“与寒冷无关的冬季方面”的向量,而倾向于“温和的冬季”或简单的“季节”等概念。一个著名的类比是,“国王”的向量减去“男人”的向量加上“女人”的向量,结果是一个非常接近“女王”的向量。

如果 v1v2 是文本,则必须为 JSON 数组的形式。不过,通常使用嵌入向量作为二进制容器数据可以提高性能。

注释 

  • 嵌入向量必须从同一模型生成,以确保兼容性和性能;不支持混合来自不同模型的嵌入向量。

  • 该函数在以下情况下返回 "?":

    • 如果 v1v2 具有不同的维度

    • 或者结果是零向量(如果 v1 和 v2 相同,就会发生这种情况),因为该函数不能归一化零向量

示例 1 

SubtractEmbeddings ( "[1, 2, 3]" ; "[4, 5, 6]" ) 返回 [-0.57735026918962573106, -0.57735026918962573106, -0.57735026918962573106]。减法是 [1-4, 2-5, 3-6] = [-3, -3, -3]。然后,该函数将此向量归一化,并将其作为 JSON 数组返回,因为两个输入都是文本。

示例 2 

SubtractEmbeddings ( Concepts::Winter_Embedding ; Concepts::Cold_Embedding ) 返回一个容器对象,其中包含表示“冬季”概念的归一化向量,并删除了“冷”的概念。

本示例假设 Concepts::Winter_Embedding 包含“冬季”的嵌入向量,Concepts::Cold_Embedding 包含“冷”的嵌入向量。生成的向量可以与执行语义查找脚本步骤一起使用,在寒冷不是主要焦点的上下文中(例如,冬季时尚、寒假)查找讨论冬季的记录。

示例 3 

为了演示“国王-男人+女人≈女王”的类比,您可以结合使用 SubtractEmbeddings 和 AddEmbeddings。假设有一个概念表,其中有包含“国王”、“男人”、“女人”和“女王”的嵌入的 ConceptName 和 ConceptVector 字段。

复制
设置变量 [ $kingMinusMan ; 值: SubtractEmbeddings ( Concepts::King_Embedding ; Concepts::Man_Embedding ) ]
设置变量 [ $queenAnalogyEmbedding ; 值: AddEmbeddings ( $kingMinusMan ; Concepts::Woman_Embedding ) ]

变量 $queenAnalogyEmbedding 现在包含一个具有类比计算产生的归一化向量的容器对象。然后,您可以使用以下方式测试类比:

CosineSimilarity ( $queenAnalogyEmbedding ; Concepts::Vector_Queen )

接近 1 的结果将表明该类比对所使用的嵌入模型很有效。