- Categorias:
VECTOR_AVG¶
Calcula a média elemento a elemento dos vetores :doc:` </user-guide/snowflake-cortex/vector-embeddings>` em um agregado. Retorna um vetor em que cada elemento é a média dos elementos correspondentes em todos os vetores de entrada. A saída é sempre VECTOR(FLOAT, N), independentemente do tipo de entrada.
- Consulte também:
VECTOR_SUM , VECTOR_MIN , VECTOR_MAX , AVG, Incorporações de vetor
Sintaxe¶
VECTOR_AVG( <vector_column> )
Argumentos¶
vector_columnUma coluna contendo valores VECTOR. Todos os vetores na coluna devem ter o mesmo tipo de elemento e dimensão.
Retornos¶
Retorna um valor VECTOR(FLOAT, N), em que N é a dimensão dos vetores de entrada. Cada elemento no vetor de resultado é a média dos elementos correspondentes em todos os vetores de entrada.
Notas de uso¶
Os valores NULL são ignorados na agregação.
Se todos os valores no grupo forem NULL, a função retornará NULL.
Todos os vetores de entrada na coluna devem ter o mesmo tipo de dimensão e elemento.
A saída é sempre VECTOR(FLOAT, N), independentemente do tipo de entrada. Para obter informações sobre números de ponto flutuante no Snowflake, consulte Tipos de dados de ponto flutuante.
As funções vetoriais são otimizadas de forma a reduzir a precisão do ponto flutuante. Os resultados dessa função têm uma margem de erro de até
1e-4.
Exemplos¶
Este exemplo demonstra o cálculo da média elemento a elemento de vetores:
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;
+----------+------------------+
| CATEGORY | AVG_VECTOR |
+----------+------------------+
| A | [3.0, 6.0, 9.0] |
| B | [2.0, 4.0, 6.0] |
+----------+------------------+
Este exemplo mostra a agregação escalar (sem GROUP BY):
SELECT VECTOR_AVG(embedding) AS overall_avg
FROM vector_data;
+------------------+
| OVERALL_AVG |
+------------------+
| [2.5, 5.0, 7.5] |
+------------------+
Este exemplo mostra como vetores inteiros são convertidos em saída de ponto flutuante:
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;
+-------------+
| AVG_RESULT |
+-------------+
| [1.5, 3.5] |
+-------------+