Fonctions Cloud SQL

Cette page décrit les fonctions Cloud SQL.

Fonctions de conversion de vecteurs

Le tableau suivant répertorie les fonctions que vous pouvez utiliser pour manipuler des informations vectorielles dans une instruction SELECT.

Fonction Description
vector_to_string Entrée : VECTOR

Sortie : STRING

Convertit un argument en chaîne dans un format vectoriel lisible par un humain.

Entrée : un argument de type VECTOR

Sortie : une chaîne

Syntaxe :

vector_to_string(some_embedding)

string_to_vector Entrée : STRING

Sortie : VECTOR

Convertit une chaîne en format vectoriel lisible par un humain. Cela vous permet d'écrire les valeurs que vous souhaitez représenter dans un vecteur.

Entrée : une chaîne

Syntaxe :

string_to_vector('some_embedding')

Sortie : une valeur de type vecteur.

Fonctions recherche

Cette section décrit les fonctions de recherche Cloud SQL.

Fonctions KNN

Le tableau suivant répertorie les fonctions que vous pouvez utiliser pour calculer la distance vectorielle KNN.

Fonction Type de données Description
vector_distance Entrée : VECTOR

Sortie : REAL

Calcule la distance vectorielle entre deux VECTOR. Les deux VECTOR doivent avoir les mêmes dimensions.

Entrée : obligatoire. Prend deux valeurs vectorielles. Un troisième argument de chaîne facultatif indique la mesure de distance. La valeur par défaut est `l2_squared_distance`. Les autres options incluent `cosine_distance` et `dot_product`.

Sortie : distance entre les deux vecteurs.

Exemple :

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

cosine_distance Entrée : VECTOR

Sortie : REAL

Algorithme permettant de calculer le cosinus de l'angle entre deux vecteurs. Une valeur plus petite indique une plus grande similitude entre les vecteurs.

Entrée : prend deux valeurs vectorielles. Il peut s'agir de noms de colonnes ou de constantes.

Sortie : distance cosinus entre les deux vecteurs.

Exemple :

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 Entrée : VECTOR

Sortie : REAL

Algorithme qui effectue l'opération de produit scalaire entre deux vecteurs d'entrée pour calculer et générer une seule valeur scalaire.

Entrée : prend deux valeurs vectorielles. Il peut s'agir de noms de colonnes ou de constantes.

Sortie : produit scalaire des deux vecteurs.

Exemple :

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 Entrée : VECTOR

Sortie : REAL

Algorithme qui ajoute la distance au carré sur chaque dimension entre deux vecteurs d'entrée pour mesurer la distance euclidienne entre eux.

Entrée : prend deux valeurs vectorielles. Il peut s'agir de noms de colonnes ou de constantes.

Sortie : distance L2 au carré entre les deux vecteurs.

Exemple :

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;

Fonction ANN

Le tableau suivant répertorie la fonction que vous pouvez utiliser pour calculer la distance vectorielle.

Fonction Type de données Description
approx_distance Entrée : VECTOR

Sortie : REAL

Recherche les K premières lignes les plus proches qui satisfont la mesure de distance à l'aide de l' algorithme sélectionné. Cette fonction interroge les voisins les plus proches approximatifs d'une colonne vectorielle par rapport à une valeur constante. Le type des deux colonnes d'embeddings VECTOR et la constante VECTOR doivent avoir les mêmes dimensions. Dans certains cas, cette fonction revient à une recherche KNN (recherche exacte) au lieu d'une recherche ANN. Vous devez inclure une limite avec les requêtes qui utilisent cette fonction.

Syntaxe :

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

Entrées :

  1. embedding_name : nom d'une colonne d'embeddings vectoriels de la table de base.
  2. query_vector : constante de type `VECTOR` qui peut être (mais n'est pas obligatoire) la sortie de string_to_vector.
  3. Les options de chaîne de recherche séparées par une virgule incluent les éléments suivants :
    • distance_measure : obligatoire. Utilise un algorithme pour mesurer la distance entre les vecteurs. Il utilise les littéraux de chaîne suivants :
      • L2_SQUARED
      • COSINE
      • DOT_PRODUCT

      Exemple : distance_measure=cosine

    • num_leaves_to_search : facultatif. Spécifie le nombre de feuilles à sonder pour une recherche de similarité vectorielle ANN. Si vous ne spécifiez pas le nombre de feuilles, CloudSQL pour MySQL choisit une valeur calculée pour num_leaves_to_search, qui peut être consultée dans information_schema.innodb_vector_indexes. Le nombre calculé est généralement un bon point de départ avec une bonne qualité de recherche et de bonnes performances. Nous vous recommandons d'ajuster num_leaves_to_search en fonction de votre charge de travail et de votre compromis entre performances et qualité.

    Exemple :

    'distance_measure=dot_product,
    num_leaves_to_search=100'

    Valeur LIMIT requise : la limite spécifiée est utilisée comme nombre de voisins à renvoyer (également appelé K premiers).

    Sortie : distance approximative des K premières lignes les plus proches de la table de base.

    Cette fonction ne peut être utilisée que dans la liste ORDER BY ou SELECT.

    Exemple :

    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;

Étape suivante