- Catégories :
VECTOR_AVG¶
Calcule la moyenne élément par élément des vecteurs dans un agrégat. Renvoie un vecteur où chaque élément est la moyenne des éléments correspondants dans tous les vecteurs d’entrée. La sortie est toujours VECTOR(FLOAT, N) quel que soit le type d’entrée.
- Voir aussi :
VECTOR_SUM , VECTOR_MIN , VECTOR_MAX , AVG, Intégrations vectorielles
Syntaxe¶
VECTOR_AVG( <vector_column> )
Arguments¶
vector_columnColonne contenant les valeurs VECTOR. Tous les vecteurs de la colonne doivent avoir le même type d’élément et la même dimension.
Renvoie¶
Renvoie une valeur VECTOR(FLOAT, N) où N est la dimension des vecteurs d’entrée. Chaque élément du vecteur de résultat est la moyenne des éléments correspondants dans tous les vecteurs d’entrée.
Notes sur l’utilisation¶
Les valeurs NULL sont ignorées dans l’agrégation.
Si toutes les valeurs du groupe sont NULL, la fonction renvoie NULL.
Tous les vecteurs d’entrée de la colonne doivent avoir la même dimension et le même type d’élément.
La sortie est toujours VECTOR(FLOAT, N) quel que soit le type de l’entrée. Pour plus d’informations sur les nombres à virgule flottante dans Snowflake, voir Types de données à virgule flottante.
Les fonctions vectorielles sont optimisées de manière à réduire la précision des virgules flottantes. Les résultats de cette fonction présentent une marge d’erreur jusqu’à
1e-4.
Exemples¶
Cet exemple illustre le calcul de la moyenne élément par élément des vecteurs :
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] |
+----------+------------------+
Cet exemple montre une agrégation scalaire (sans GROUP BY) :
SELECT VECTOR_AVG(embedding) AS overall_avg
FROM vector_data;
+------------------+
| OVERALL_AVG |
+------------------+
| [2.5, 5.0, 7.5] |
+------------------+
Cet exemple montre comment les vecteurs entiers sont convertis en sortie flottante :
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] |
+-------------+