- Kategorien:
VECTOR_AVG¶
Berechnet den elementweise Durchschnitt von -Vektoren in einem Aggregat Gibt einen Vektor zurück, bei dem jedes Element der Durchschnitt der entsprechenden Elemente über alle Eingabevektoren ist. Die Ausgabe ist immer VECTOR(FLOAT, N), unabhängig vom Eingabetyp.
- Siehe auch:
Syntax¶
VECTOR_AVG( <vector_column> )
Argumente¶
vector_columnEine Spalte mit VECTOR-Werten. Alle Vektoren in der Spalte müssen denselben Elementtyp und dieselbe Dimension aufweisen.
Rückgabewerte¶
Gibt einen VECTOR(FLOAT, N)-Wert zurück, wobei N die Dimension der Eingabevektoren ist. Jedes Element im Ergebnisvektor ist der Durchschnitt der entsprechenden Elemente über alle Eingabevektoren hinweg.
Nutzungshinweise¶
NULL-Werte werden in der Aggregation ignoriert.
Wenn alle Werte in der Gruppe NULL sind, gibt die Funktion NULL zurück.
Alle Eingabevektoren in der Spalte müssen die gleiche Dimension und den gleichen Elementtyp aufweisen.
Die Ausgabe ist immer VECTOR(FLOAT, N), unabhängig vom Typ der Eingabe. Weitere Informationen zu Fließkommazahlen in Snowflake finden Sie unter Fließkomma-Datentypen.
Vektorfunktionen werden so optimiert, dass die Genauigkeit der Gleitkommazahlen verringert werden kann. Die Ergebnisse dieser Funktion haben eine Fehlerspanne von bis zu
1e-4.
Beispiele¶
Dieses Beispiel zeigt die Berechnung des elementweisen Durchschnitts von Vektoren:
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] |
+----------+------------------+
Dieses Beispiel zeigt die skalare Aggregation (kein GROUP BY):
SELECT VECTOR_AVG(embedding) AS overall_avg
FROM vector_data;
+------------------+
| OVERALL_AVG |
+------------------+
| [2.5, 5.0, 7.5] |
+------------------+
Dieses Beispiel zeigt, wie Ganzzahlvektoren in eine Float-Ausgabe konvertiert werden:
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] |
+-------------+