Funciones de Cloud SQL

En esta página se describen las funciones de Cloud SQL.

Funciones de conversión de vectores

En la siguiente tabla se enumeran las funciones que puede usar para manipular información de vectores en una instrucción SELECT.

Función Descripción
vector_to_string Entrada: VECTOR

Salida: STRING

Convierte un argumento en una cadena con formato de vector legible por humanos.

Entrada: un argumento de tipo VECTOR

Salida: una cadena

Sintaxis:

vector_to_string(some_embedding)

string_to_vector Entrada: STRING

Salida: VECTOR

Convierte una cadena en un formato de vector legible por humanos. Esto te permite escribir los valores que quieres que se representen en un vector.

Entrada: una cadena

Sintaxis:

string_to_vector('some_embedding')

Salida: un valor de tipo vector.

Funciones de búsqueda

En esta sección se describen las funciones de búsqueda de Cloud SQL.

Funciones KNN

En la siguiente tabla se indican las funciones que puede usar para calcular la distancia del vector de KNN.

Función Data type (Dato) Descripción
vector_distance Entrada: VECTOR

Salida: REAL

Calcula la distancia vectorial entre dos VECTORs. Los dos VECTORs deben tener las mismas dimensiones.

Entrada: obligatoria. Toma dos valores de vector. Un tercer argumento de cadena opcional indica la medida de distancia. El valor predeterminado es `l2_squared_distance`. Otras opciones son `cosine_distance` y `dot_product`.

Salida: la distancia entre los dos vectores.

Por ejemplo:

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

cosine_distance Entrada: VECTOR

Salida: REAL

Algoritmo para calcular el coseno del ángulo entre dos vectores. Cuanto menor sea el valor, mayor será la similitud entre los vectores.

Entrada: toma dos valores de vector. Pueden ser nombres de columnas o constantes.

Salida: la distancia del coseno entre los dos vectores.

Por ejemplo:

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

Salida: REAL

Algoritmo que realiza la operación de producto escalar entre dos vectores de entrada para calcular y generar un único valor escalar.

Entrada: toma dos valores de vector. Pueden ser nombres de columna o constantes.

Salida: el producto escalar de los dos vectores.

Por ejemplo:

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

Salida: REAL

Algoritmo que añade la distancia al cuadrado en cada dimensión entre dos vectores de entrada para medir la distancia euclídea entre ellos.

Entrada: toma dos valores de vector. Pueden ser nombres de columna o constantes.

Salida: la distancia L2 al cuadrado entre los dos vectores.

Por ejemplo:

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;

Función ANN

En la siguiente tabla se indica la función que puede usar para calcular la distancia entre vectores.

Función Tipo de datos Descripción
approx_distance Entrada: VECTOR

Salida: REAL

Busca las K filas más cercanas que cumplan la medida de distancia mediante el algoritmo seleccionado. Esta función consulta los vecinos más próximos aproximados de una columna de vector a un valor constante. El tipo de la columna de las dos inserciones VECTOR y la constante VECTOR deben tener las mismas dimensiones. Hay algunos casos en los que esta función recurre a una búsqueda de KNN (búsqueda exacta) en lugar de a una búsqueda de ANN. Debes incluir un límite con las consultas que usen esta función.

Sintaxis:

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

Entradas:

  1. embedding_name: nombre de una columna de embedding de vectores de la tabla base.
  2. query_vector: una constante de tipo `VECTOR` que puede ser (pero no es obligatorio que lo sea) el resultado de string_to_vector.
  3. Las opciones de cadena de búsqueda separadas por comas son las siguientes:
    • distance_measure: obligatorio. Usa un algoritmo para medir la distancia entre vectores. Usa los siguientes literales de cadena:
      • L2_SQUARED
      • COSINE
      • DOT_PRODUCT

      Por ejemplo: distance_measure=cosine

    • num_leaves_to_search: opcional. Especifica el número de hojas que se deben sondear para una búsqueda de similitud de vectores ANN. Si no especificas el número de hojas, Cloud SQL para MySQL elige un valor calculado para num_leaves_to_search, que se puede ver en information_schema.innodb_vector_indexes. El número calculado suele ser un buen punto de partida con una buena calidad de búsqueda y rendimiento. Te recomendamos que ajustes num_leaves_to_search en función de tu carga de trabajo y del equilibrio entre rendimiento y calidad.

    Por ejemplo:

    'distance_measure=dot_product,
    num_leaves_to_search=100'

    Valor LIMIT obligatorio: el límite especificado se usa como número de vecinos que se devuelven (también conocido como los K principales).

    Salida: distancia aproximada de las K filas más cercanas de la tabla base.

    Esta función solo se puede usar en la lista ORDER BY o en la SELECT.

    Por ejemplo:

    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;

Siguientes pasos