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

Konvertiert ein Argument in einen String in einem menschenlesbaren 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 menschenlesbares 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-Vektorentfernung berechnen können.

Funktion Datentyp Beschreibung
vector_distance Eingabe: VECTOR

Ausgabe: REAL

Berechnet den Vektorabstand zwischen zwei VECTORs. 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 zur Berechnung 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. Dies 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 einen einzelnen Skalarwert ausgibt.

Eingabe: 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 Distanz für jede Dimension zwischen zwei Eingabevektoren addiert, um die euklidische Distanz zwischen ihnen zu messen.

Eingabe: 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

Sucht die K Zeilen, die dem Distanzmesswert am nächsten sind, mithilfe des ausgewählten Algorithmus. Diese Funktion fragt die ungefähren nächsten Nachbarn aus einer Vektorspalte zu einem konstanten Wert ab. 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 (exakte Suche) anstelle einer ANN-Suche zurück. Sie müssen ein Limit für Abfragen angeben, 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 der 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. Folgende Optionen für kommagetrennte Suchstrings sind verfügbar:
    • 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 geprüft 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 im Allgemeinen ein guter Ausgangspunkt mit guter 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 (auch als Top-K bezeichnet) verwendet.

    Ausgabe: Die ungefähre Entfernung der K Zeilen in der Basistabelle, die am nächsten liegen.

    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