NormalizeEmbedding

归一化嵌入向量。如有指定,维度参数会减少归一化前要使用的向量维度数量。

格式 

NormalizeEmbedding ( 数据 { ; 维度 } )

参数 

数据 - 包含嵌入向量的任何文本表达式、文本字段或容器字段。

维度 - 用于归一化的向量维度数。如果省略,或者值大于向量的实际维度大小或者小于或等于 0,则在计算中使用整个向量维度大小。

括号 { } 中的参数是可选的。

返回的数据类型 

文本、容器

原始版本 

22.0

说明 

该函数返回输入嵌入向量的归一化版本。向量归一化意味着缩放其值,使其长度(大小)变为 1。这通常是在进行余弦相似性等计算之前的必要步骤,因为它确保了相似度量仅基于向量的方向,而不是其大小。

如果数据参数是文本,它必须是包含浮点数字的 JSON 数组的形式——例如,[-0.1, 0.5, ...]。不过,通常使用嵌入向量作为二进制容器数据可以提高性能。

维度参数允许您仅根据其初始维度的指定数量对向量进行归一化。如果指定了维度,该函数仅使用第一个“维度”元素来计算大小,然后根据该大小缩放整个原始向量。返回的向量与输入向量具有相同的维度数,除非在归一化前使用维度参数来截断向量。

注释 

  • 大多数嵌入模型生成已经归一化(单位长度)的嵌入向量。在这种情况下,无需为这些向量调用 NormalizeEmbedding,而只需返回原始向量。通常,仅当您在处理由不输出归一化向量的模型生成的嵌入向量时,或者您特别需要根据向量维度的子集进行归一化时,才需要使用此函数。

  • 如果想使用更大向量的更小、固定尺寸表示,同时保持基于初始尺寸的可比性,使用可选的维度参数可能会很有用。

示例 1 

NormalizeEmbedding ( "[3, 4]" ) 返回 [0.5999999999999999778, 0.80000000000000004441],就说明而言,大约是 [0.6, 0.8]。原始向量 [3, 4] 的长度为 Sqrt(3^2 + 4^2) = 5。归一化向量 [0.6, 0.8] 的长度为 Sqrt(0.6^2 + 0.8^2) = 1。

示例 2 

NormalizeEmbedding ( Table::EmbeddingData; 256 ) 返回一个仅包含原始向量前 256 维的新向量,归一化使其长度为 1。嵌入向量存储在一个名为 Table::EmbeddingData 的容器字段中。如果您的嵌入模型产生大向量,但您只想使用较小的固定维度进行等位素相似性计算,并且需要将这些维度归一化,这非常有用。