Funzioni Cloud SQL

Questa pagina descrive le funzioni Cloud SQL.

Funzioni di conversione di vettori

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

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

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. Prende due valori vettore. Un terzo argomento facoltativo della stringa indica la misura della distanza. Il valore predefinito è `l2_squared_distance. Altre opzioni sono "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 minore indica una maggiore somiglianza tra i vettori.

Input: accetta due valori di vettore. Possono essere nomi di colonne o costanti.

Output: la distanza di 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 produrre un singolo valore scalare.

Input: accetta due valori di vettore. 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 in ogni dimensione tra due vettori di input per misurare la distanza euclidea tra di loro.

Input: accetta due valori di vettore. 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ù vicini approssimativi da una colonna di vettori a un valore costante. Il tipo VECTOR delle due colonne di incorporamento e la costante VECTOR devono avere le stesse dimensioni. In alcuni casi, questa funzione ricorre a una ricerca KNN (ricerca esatta) anziché a una ricerca ANN. Devi includere un limite con le 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 incorporamento vettoriale della tabella di base.
  2. query_vector: una costante di tipo "VECTOR" che può essere (ma non è obbligatoriamente) l'output di string_to_vector.
  3. Le opzioni della stringa di ricerca separate da virgole includono:
    • distance_measure: obbligatorio. Utilizza un algoritmo per misurare la distanza tra i vettori. Utilizza i seguenti valori letterali di 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 di vettori ANN. Se non specifichi il numero di elementi, CloudSQL 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 carico di lavoro e al compromesso tra rendimento o qualità.

    Ad esempio:

    'distance_measure=dot_product,
    num_leaves_to_search=100'

    Valore LIMIT obbligatorio: 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