Cloud SQL-Funktionen

Auf dieser Seite werden Cloud SQL-Funktionen beschrieben.

Vektor-Konvertierungsfunktionen

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 schreiben, die in einem Vektor dargestellt werden sollen.

Eingabe:ein String

Syntax:

string_to_vector('some_embedding')

Ausgabe:ein Wert vom Typ Vektor.

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 die Vektordistanz zwischen zwei VECTOR-Werten. Die beiden VECTORs müssen dieselben Dimensionen haben.

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

Ausgabe: die Distanz 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 deutet auf eine größere Ähnlichkeit zwischen den Vektoren hin.

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

Ausgabe: die Kosinusdistanz 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 die Skalarproduktoperation zwischen zwei Eingabe Vektoren ausführt, um einen einzelnen Skalarwert zu berechnen und auszugeben.

Eingabe: verwendet zwei Vektorwerte. 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 quadratische Distanz in jeder Dimension zwischen zwei Eingabevektoren addiert, um die euklidische Distanz zwischen ihnen zu messen.

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

Ausgabe: die quadratische L2-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 ist die Funktion aufgeführt, mit der Sie die Vektordistanz berechnen können.

Funktion Datentyp Beschreibung
approx_distance Eingabe: VECTOR

Ausgabe: REAL

Sucht mit dem ausgewählten Algorithmus die K nächsten Zeilen, die das Distanzmaß erfüllen. Diese Funktion fragt die ungefähren nächsten Nachbarn aus einer Vektorspalte zu einem konstanten Wert ab. Der Typ der beiden Einbettungsspalten VECTOR und die Konstante VECTOR müssen die gleichen Dimensionen haben. In einigen Fällen greift diese Funktion auf eine KNN (genaue Suche) anstelle einer ANN-Suche zurück. Sie müssen ein Limit in Abfragen einfügen, die diese Funktion verwenden.

Syntax :

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

Eingaben :

  1. embedding_name: Ein Name einer Vektoreinbettungsspalte aus der Basistabelle.
  2. query_vector: Eine Konstante vom Typ `VECTOR`, die die Ausgabe von string_to_vector sein kann, aber nicht muss.
  3. Die kommagetrennten Optionen für den Suchstring umfassen:
    • 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 Cloud SQL 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 basierend auf Ihrer Arbeitslast und dem 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ächsten Zeilen in der Basistabelle.

    Diese Funktion kann nur in der ORDER BY oder SELECT Liste 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