Kategorien:

Vector functions, Aggregatfunktionen

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:

VECTOR_SUM, VECTOR_MIN, VECTOR_MAX, AVG, Vektoreinbettungen

Syntax

VECTOR_AVG( <vector_column> )
Copy

Argumente

vector_column

Eine 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;
Copy
+----------+------------------+
| 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;
Copy
+------------------+
| 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;
Copy
+-------------+
| AVG_RESULT  |
+-------------+
| [1.5, 3.5]  |
+-------------+