Cloud SQL-Funktionen

Auf dieser Seite werden Cloud SQL-Funktionen beschrieben.

Vektorkonvertierungsfunktionen

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

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

Eingabe:ein Argument vom Typ VECTOR

Ausgabe: String

Syntax:

vector_to_string(some_embedding)

string_to_vector Eingabe: STRING

Ausgabe: VECTOR

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

Eingabe: String

Syntax:

string_to_vector('some_embedding')

Ausgabe:Ein Wert vom Typ „Vektor“.

Suchfunktionen

In diesem Abschnitt werden die Suchfunktionen von Cloud SQL 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 VECTOR. Die beiden VECTORs müssen dieselben Abmessungen haben.

Input: Erforderlich. Nimmt zwei Vektorwerte an. Ein optionales drittes Stringargument gibt das Maß für die Entfernung 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. Je kleiner der Wert, desto ähnlicher sind die Vektoren.

Input: Nimmt zwei Vektorwerte an. Dies können Spaltennamen oder Konstanten sein.

Ausgabe: Der Kosinusabstand 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 Punktprodukt-Berechnung zwischen zwei Eingabevektoren durchführt, um einen einzelnen Skalarwert zu berechnen und auszugeben.

Input: Nimmt zwei Vektorwerte an. Dies 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 Entfernung in jeder Dimension zwischen zwei Eingabevektoren addiert, um die euklidische Entfernung zwischen ihnen zu messen.

Input: Nimmt zwei Vektorwerte an. Dies 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 ist die Funktion aufgeführt, mit der Sie den Vektorabstand berechnen können.

Funktion Datentyp Beschreibung
approx_distance Eingabe: VECTOR

Ausgabe: REAL

Hiermit werden die K nächstgelegenen Zeilen ermittelt, die mithilfe des ausgewählten Algorithmus die Distanzmessung erfüllen. Mit dieser Funktion werden die ungefähren nächsten Nachbarn aus einer Vektorspalte zu einem konstanten Wert abgefragt. Der VECTOR-Typ der beiden Einbettungsspalten und die Konstante VECTOR müssen dieselben Dimensionen haben. In einigen Fällen greift diese Funktion auf eine KNN-Suche (genaue Suche) zurück, anstatt eine ANN-Suche durchzuführen. Sie müssen Abfragen, in denen diese Funktion verwendet wird, ein Limit hinzufügen.

Syntax:

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

Eingaben:

  1. embedding_name: Name einer Spalte für die Vektoreinbettung aus der Basistabelle.
  2. query_vector: Eine Konstante vom Typ „VECTOR“, die die Ausgabe von string_to_vector sein kann (muss aber nicht).
  3. Zu den Optionen für den kommagetrennten Suchstring gehören:
    • distance_measure: erforderlich. Hier wird ein Algorithmus verwendet, um die Entfernung 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 geprüft 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 wird. Die berechnete Anzahl ist in der Regel ein guter Ausgangspunkt mit guter Suchqualität und Leistung. Wir empfehlen, num_leaves_to_search anhand Ihrer Arbeitslast und der gewünschten Leistung oder Qualität zu optimieren.

    Beispiel:

    'distance_measure=dot_product,
    num_leaves_to_search=100'

    Erforderlicher LIMIT-Wert:Das angegebene Limit wird als Anzahl der Nachbarn verwendet, die zurückgegeben werden sollen (auch als Top-K bezeichnet).

    Ausgabe: Der ungefähre Abstand der K nächsten 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