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 的容器字段中。如果您的嵌入模型产生大向量,但您只想使用较小的固定维度进行等位素相似性计算,并且需要将这些维度归一化,这非常有用。