Cloud SQL-Funktionen

Auf dieser Seite werden Cloud SQL-Funktionen beschrieben.

Funktionen für die Vektorkonvertierung

In der folgenden Tabelle sind die Funktionen aufgeführt, mit denen Sie Vektorinformationen in einer SELECT-Anweisung bearbeiten können.

Funktion Beschreibung
vector_to_string Eingabe: VECTOR

Ausgabe: STRING

Konvertiert ein Argument in einen String in einem für Menschen lesbaren Vektorformat.

Eingabe:ein Argument vom Typ VECTOR

Ausgabe:ein String

Syntax:

vector_to_string(some_embedding)

string_to_vector Eingabe: STRING

Ausgabe: VECTOR

Konvertiert einen String in ein für Menschen lesbares Vektorformat. So können Sie die Werte eingeben, die in einem Vektor dargestellt werden sollen.

Eingabe:ein String

Syntax:

string_to_vector('some_embedding')

Ausgabe:Ein Wert vom Typ „vector“.

Suchfunktionen

In diesem Abschnitt werden die Cloud SQL-Suchfunktionen beschrieben.

KNN-Funktionen

In der folgenden Tabelle sind die Funktionen aufgeführt, mit denen Sie die KNN-Vektordistanz berechnen können.

Funktion Datentyp Beschreibung
vector_distance Eingabe: VECTOR

Ausgabe: REAL

Berechnet den Vektorabstand zwischen zwei VECTORs. Die beiden VECTORs müssen dieselben Abmessungen haben.

Eingabe: erforderlich. Verwendet zwei Vektorwerte. Ein optionales drittes String-Argument gibt das Distanzmaß an. Der Standardwert ist „l2_squared_distance“. Weitere Optionen sind `cosine_distance` und `dot_product`.

Ausgabe: Der Abstand zwischen den beiden Vektoren.

Beispiel:

SELECT vector_distance(string_to_vector('[1,-2,3]'), string_to_vector('[1,2,3]'), 'Distance_Measure=dot_product');

cosine_distance Eingabe: VECTOR

Ausgabe: REAL

Algorithmus zum Berechnen des Kosinus des Winkels zwischen zwei Vektoren. Ein kleinerer Wert weist auf eine größere Ähnlichkeit zwischen den Vektoren hin.

Eingabe: Nimmt zwei Vektorwerte an. Das können Spaltennamen oder Konstanten sein.

Ausgabe: Die Kosinus-Distanz zwischen den beiden Vektoren.

Beispiel:

SELECT cosine_distance(string_to_vector('[1,2,3]'), string_to_vector('[1,1,1]'));

SELECT id FROM t1 ORDER BY cosine_distance(string_to_vector('[1,2,3]'), embedding_column_name) LIMIT 10;

dot_product Eingabe: VECTOR

Ausgabe: REAL

Algorithmus, der das Skalarprodukt zwischen zwei Eingabevektoren berechnet und ausgibt.

Eingabe: Nimmt zwei Vektorwerte an. Das können Spaltennamen oder Konstanten sein.

Ausgabe: Das Skalarprodukt der beiden Vektoren.

Beispiel:

SELECT dot_product(string_to_vector('[1,2,3]'), string_to_vector('[1,1,1]'));

SELECT id FROM t1 ORDER BY dot_product(string_to_vector('[1,2,3]'), embbeding_column_name) LIMIT 10;

l2_squared_distance Eingabe: VECTOR

Ausgabe: REAL

Algorithmus, der die quadrierte Distanz in jeder Dimension zwischen zwei Eingabevektoren addiert, um die euklidische Distanz zwischen ihnen zu messen.

Eingabe: Nimmt zwei Vektorwerte an. Das können Spaltennamen oder Konstanten sein.

Ausgabe: Die quadrierte euklidische Distanz zwischen den beiden Vektoren.

Beispiel:

SELECT l2_squared_distance(string_to_vector('[1,2,3]'), string_to_vector('[1,1,1]'));

SELECT id FROM t1 ORDER BY l2_squared_distance(string_to_vector('[1,2,3]'), embbeding_column_name) LIMIT 10;

ANN-Funktion

In der folgenden Tabelle sind die Funktionen aufgeführt, mit denen Sie die Vektordistanz berechnen können.

Funktion Datentyp Beschreibung
approx_distance Eingabe: VECTOR

Ausgabe: REAL

Sucht die K nächstgelegenen Zeilen, die den Distanzmesswert mit dem ausgewählten Algorithmus erfüllen. Mit dieser Funktion werden die ungefähren nächsten Nachbarn aus einer Vektorspalte für einen konstanten Wert abgefragt. Der VECTOR-Typ der beiden Spalten für Einbettungen und die Konstante VECTOR müssen dieselben Dimensionen haben. In einigen Fällen wird für diese Funktion anstelle der ANN-Suche eine KNN-Suche (genaue Suche) verwendet. Abfragen, in denen diese Funktion verwendet wird, müssen ein Limit enthalten.

Syntax:

approx_distance(embedding_name,
query_vector,
'distance_measure=algorithm_name
[, num_leaves_to_search=value]'

Eingaben:

  1. embedding_name: Der Name einer Spalte mit Vektoreinbettungen aus der Basistabelle.
  2. query_vector: Eine Konstante vom Typ „VECTOR“, die (aber nicht unbedingt) die Ausgabe von string_to_vector sein kann.
  3. Die durch Kommas getrennten Suchstring-Optionen umfassen Folgendes:
    • distance_measure: erforderlich. Verwendet einen Algorithmus, um die Distanz zwischen Vektoren zu messen. Dabei werden die folgenden Stringliterale verwendet:
      • L2_SQUARED
      • COSINE
      • DOT_PRODUCT

      Beispiel: distance_measure=cosine

    • num_leaves_to_search: Optional. Gibt die Anzahl der Blätter an, die für eine ANN-Vektorähnlichkeitssuche untersucht werden sollen. Wenn Sie die Anzahl der Blätter nicht angeben, wählt CloudSQL for MySQL einen berechneten Wert für „num_leaves_to_search“ aus, der in information_schema.innodb_vector_indexes angezeigt werden kann. Die berechnete Zahl ist in der Regel ein guter Ausgangspunkt für eine gute Suchqualität und ‑leistung. Es wird empfohlen, num_leaves_to_search an Ihre Arbeitslast und den Kompromiss zwischen Leistung und Qualität anzupassen.

    Beispiel:

    'distance_measure=dot_product,
    num_leaves_to_search=100'

    Erforderlicher LIMIT-Wert:Das angegebene Limit wird als Anzahl der zurückzugebenden Nachbarn verwendet (auch als „Top K“ bezeichnet).

    Ausgabe: Die ungefähre Distanz der K nächstgelegenen Zeilen in der Basistabelle.

    Diese Funktion kann nur in der Liste ORDER BY oder SELECT verwendet werden.

    Beispiel:

    SELECT id, approx_distance(embedding_column_name
    string_to_vector('[1,1,1]'),
    'distance_measure=cosine') dist from t1
    ORDER BY dist LIMIT 10;

    SELECT id
    FROM t1
    ORDER BY
    approx_distance(
    embedding_column_name
    string_to_vector('[1,1,1]'),
    'distance_measure=dot_product,num_leaves_to_search=100) LIMIT 4;

Nächste Schritte