类别:

Vector functions聚合函数

VECTOR_AVG

在汇总中计算 向量 的按元素平均值。返回一个向量,其中每个元素是所有输入向量对应元素平均值。无论输入类型如何,输出始终为 VECTOR(FLOAT, N)。

另请参阅:

VECTOR_SUM , VECTOR_MIN , VECTOR_MAX , AVG, 向量嵌入

语法

VECTOR_AVG( <vector_column> )
Copy

实参

vector_column

包含 VECTOR 值的列。列中的所有向量必须具有相同的元素类型和维度。

返回

返回一个 VECTOR(FLOAT, N) 值,其中 N 是输入向量的维度。结果向量中的每个元素都是所有输入向量中对应元素的平均值。

使用说明

  • 聚合中会忽略 NULL 值。

  • 如果组中的所有值均为 NULL,则函数返回 NULL。

  • 列中的所有输入向量必须具有相同的维度和元素类型。

  • 无论输入类型如何,输出始终为 VECTOR(FLOAT, N)。有关 Snowflake 中浮点数的信息,请参阅 浮点数据类型

  • 向量函数的优化方式可能会降低浮点精度。此函数的结果误差幅度高达 1e-4

示例

此示例演示计算向量的逐元素平均值:

CREATE OR REPLACE TABLE vector_data (
  id INT,
  category VARCHAR,
  embedding VECTOR(FLOAT, 3)
);

INSERT INTO vector_data
SELECT 1, 'A', [2.0, 4.0, 6.0]::VECTOR(FLOAT, 3)
UNION ALL SELECT 2, 'A', [4.0, 8.0, 12.0]::VECTOR(FLOAT, 3)
UNION ALL SELECT 3, 'B', [1.0, 2.0, 3.0]::VECTOR(FLOAT, 3)
UNION ALL SELECT 4, 'B', [3.0, 6.0, 9.0]::VECTOR(FLOAT, 3);

-- Compute average for each category
SELECT category, VECTOR_AVG(embedding) AS avg_vector
  FROM vector_data
  GROUP BY category
  ORDER BY category;
Copy
+----------+------------------+
| CATEGORY | AVG_VECTOR       |
+----------+------------------+
| A        | [3.0, 6.0, 9.0] |
| B        | [2.0, 4.0, 6.0] |
+----------+------------------+

此示例显示标量聚合(无 GROUPBY):

SELECT VECTOR_AVG(embedding) AS overall_avg
  FROM vector_data;
Copy
+------------------+
| OVERALL_AVG      |
+------------------+
| [2.5, 5.0, 7.5]  |
+------------------+

此示例显示了如何将整数向量转换为浮点输出:

CREATE OR REPLACE TABLE int_vector_data (
  id INT,
  vec VECTOR(INT, 2)
);

INSERT INTO int_vector_data
SELECT 1, [1, 3]::VECTOR(INT, 2)
UNION ALL SELECT 2, [2, 4]::VECTOR(INT, 2);

SELECT VECTOR_AVG(vec) AS avg_result
  FROM int_vector_data;
Copy
+-------------+
| AVG_RESULT  |
+-------------+
| [1.5, 3.5]  |
+-------------+
语言: 中文