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

Résultat: STRING

Convertit un argument en chaîne au format vectoriel lisible.

Entrée:un argument de type VECTOR

Résultat:une chaîne

Syntaxe :

vector_to_string(some_embedding)

string_to_vector Entrée: STRING

Résultat: VECTOR

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

Entrée:chaîne

Syntaxe :

string_to_vector('some_embedding')

Résultat: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

Résultat: RÉEL

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

Input (Entrée) : obligatoire. Prend deux valeurs vectorielles. Un troisième argument de chaîne facultatif indique la mesure de la distance. La valeur par défaut est "l2_squared_distance". Vous pouvez également utiliser les options "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

Résultat: RÉEL

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

Entrée: prend en compte 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

Résultat: RÉEL

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

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

Résultat: 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

Résultat: RÉEL

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 en compte deux valeurs vectorielles. Il peut s'agir de noms de colonnes ou de constantes.

Résultat: la 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

Résultat: RÉEL

Recherche les K premières lignes les plus proches qui répondent à la mesure de distance à l'aide de l'algorithme sélectionné. Cette fonction interroge les voisins les plus proches approximatifs d'une colonne de vecteurs par rapport à une valeur constante. Le type VECTOR des deux colonnes d'embedding et la constante VECTOR doivent avoir les mêmes dimensions. Dans certains cas, cette fonction utilise 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 obligée de l'être) la sortie de string_to_vector.
  3. Les options de chaîne de recherche séparées par des virgules sont les suivantes :
    • 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

      Par exemple : distance_measure=cosine

    • num_leaves_to_search : Facultatif. Spécifie le nombre de feuilles à vérifier pour une recherche de similarité vectorielle ANN. Si vous ne spécifiez pas le nombre de feuilles, Cloud SQL 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 qualité et des performances de recherche satisfaisantes. Nous vous recommandons d'ajuster num_leaves_to_search en fonction de votre charge de travail et du compromis entre performances et qualité.

    Exemple :

    'distance_measure=dot_product,
    num_leaves_to_search=100'

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

    Sortie: distance approximative des K premières lignes les plus proches dans le tableau 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