Funzioni Cloud SQL

Questa pagina descrive le funzioni di Cloud SQL.

Funzioni di conversione vettoriale

La tabella seguente elenca le funzioni che puoi utilizzare per manipolare le informazioni sui vettori in un'istruzione SELECT.

Funzione Descrizione
vector_to_string Input: VECTOR

Output: STRING

Converte un argomento in una stringa in un formato vettoriale leggibile.

Input: un argomento di tipo VECTOR

Output: una stringa

Sintassi:

vector_to_string(some_embedding)

string_to_vector Input: STRING

Output: VECTOR

Converte una stringa in un formato vettoriale leggibile. In questo modo puoi scrivere i valori che vuoi rappresentare in un vettore.

Input: una stringa

Sintassi:

string_to_vector('some_embedding')

Output: un valore di tipo vettore.

Funzioni di ricerca

Questa sezione descrive le funzioni di ricerca di Cloud SQL.

Funzioni KNN

La tabella seguente elenca le funzioni che puoi utilizzare per calcolare la distanza vettoriale KNN.

Funzione Tipo di dati Descrizione
vector_distance Input: VECTOR

Output: REAL

Calcola la distanza vettoriale tra due VECTOR. I due VECTOR devono avere le stesse dimensioni.

Input: obbligatorio. Accetta due valori vettoriali. Un terzo argomento stringa facoltativo indica la misura della distanza. Il valore predefinito è `l2_squared_distance. Altre opzioni includono `cosine_distance` e `dot_product`.

Output: la distanza tra i due vettori.

Ad esempio:

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

cosine_distance Input: VECTOR

Output: REAL

Algoritmo per calcolare il coseno dell'angolo tra due vettori. Un valore più piccolo indica una maggiore somiglianza tra i vettori.

Input: accetta due valori vettoriali. Questi possono essere nomi di colonne o costanti.

Output: la distanza del coseno tra i due vettori.

Ad esempio:

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 Input: VECTOR

Output: REAL

Algoritmo che esegue l'operazione di prodotto scalare tra due vettori di input per calcolare e restituire un singolo valore scalare.

Input: accetta due valori vettoriali. Questi possono essere nomi di colonne o costanti.

Output: il prodotto scalare dei due vettori.

Ad esempio:

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 Input: VECTOR

Output: REAL

Algoritmo che aggiunge la distanza al quadrato su ogni dimensione tra due vettori di input per misurare la distanza euclidea tra loro.

Input: accetta due valori vettoriali. Questi possono essere nomi di colonne o costanti.

Output: la distanza al quadrato L2 tra i due vettori.

Ad esempio:

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;

Funzione ANN

La tabella seguente elenca la funzione che puoi utilizzare per calcolare la distanza vettoriale.

Funzione Tipo di dati Descrizione
approx_distance Input: VECTOR

Output: REAL

Trova le prime K righe più vicine che soddisfano la misura della distanza utilizzando l' algoritmo selezionato. Questa funzione esegue query sui vicini più prossimi approssimativi da una colonna vettoriale a un valore costante. Il tipo VECTOR delle due colonne di embedding e la costante VECTOR devono avere le stesse dimensioni. In alcuni casi, questa funzione esegue una ricerca KNN (ricerca esatta) anziché una ricerca ANN. Devi includere un limite con query che utilizzano questa funzione.

Sintassi:

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

Input:

  1. embedding_name: il nome di una colonna di embedding vettoriale della tabella di base.
  2. query_vector: una costante di tipo `VECTOR` che può essere (ma non è obbligatorio) l'output di string_to_vector.
  3. Le opzioni della stringa di ricerca separate da virgole includono le seguenti:
    • distance_measure: obbligatorio. Utilizza un algoritmo per misurare la distanza tra i vettori. Utilizza i seguenti valori letterali stringa:
      • L2_SQUARED
      • COSINE
      • DOT_PRODUCT

      Ad esempio: distance_measure=cosine

    • num_leaves_to_search: facoltativo. Specifica il numero di foglie da analizzare per una ricerca di somiglianza vettoriale ANN. Se non specifichi il numero di foglie, Cloud SQL per MySQL sceglie un valore calcolato per num_leaves_to_search che può essere visualizzato in information_schema.innodb_vector_indexes. Il numero calcolato è in genere un buon punto di partenza con una buona qualità e un buon rendimento della ricerca. Ti consigliamo di ottimizzare num_leaves_to_search in base al tuo workload e al compromesso tra rendimento e qualità.

    Ad esempio:

    'distance_measure=dot_product,
    num_leaves_to_search=100'

    Valore LIMIT richiesto: il limite specificato viene utilizzato come numero di vicini da restituire (noto anche come top K).

    Output: la distanza approssimativa delle prime K righe più vicine nella tabella di base.

    Questa funzione può essere utilizzata solo nell'elenco ORDER BY o SELECT.

    Ad esempio:

    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;

Passaggi successivi