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 puedes usar para manipular la información de vectores en una sentencia SELECT.

Función Descripción
vector_to_string Entrada: VECTOR

Resultado: STRING

Convierte un argumento en una cadena en un formato vectorial legible por humanos.

Entrada: Un argumento de tipo VECTOR

Resultado: Una cadena

Sintaxis:

vector_to_string(some_embedding)

string_to_vector Entrada: STRING

Salida: VECTOR

Convierte una cadena a un formato vectorial legible. Esto te permite escribir los valores que deseas representar en un vector.

Entrada: Una cadena

Sintaxis:

string_to_vector('some_embedding')

Resultado: Un valor de tipo vector.

Funciones de búsqueda

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

Funciones de KNN

En la siguiente tabla, se enumeran las funciones que puedes usar para calcular la distancia vectorial de KNN.

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

Resultado: REAL

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

Input: Obligatorio. 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 incluyen "cosine_distance" y "dot_product".

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

Resultado: REAL

Algoritmo para calcular el coseno del ángulo entre dos vectores. Un valor menor indica una mayor similitud entre los vectores.

Entrada: Toma dos valores vectoriales. Pueden ser nombres de columnas o constantes.

Resultado: La distancia 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

Resultado: REAL

Es un algoritmo que realiza la operación de producto punto entre dos vectores de entrada para calcular y mostrar un solo valor escalar.

Entrada: Toma dos valores vectoriales. Pueden ser nombres de columnas o constantes.

Resultado: El producto punto 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

Resultado: REAL

Es un algoritmo que suma la distancia al cuadrado en cada dimensión entre dos vectores de entrada para medir la distancia euclidiana entre ellos.

Entrada: Toma dos valores vectoriales. Pueden ser nombres de columnas o constantes.

Resultado: La distancia de 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 enumera la función que puedes usar para calcular la distancia del vector.

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

Resultado: REAL

Encuentra las K filas más cercanas que satisfacen la medida de distancia con el algoritmo seleccionado. Esta función consulta los vecinos más cercanos aproximados de una columna de vectores a un valor constante. El tipo VECTOR de las dos columnas de incorporación y la constante VECTOR deben tener las mismas dimensiones. En algunos casos, esta función recurre a una búsqueda de KNN (búsqueda exacta) en lugar de una búsqueda de ANN. Debes incluir un límite con las consultas que usan esta función.

Sintaxis:

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

Entradas:

  1. embedding_name: Es un nombre de columna de incorporación de vectores de la tabla base.
  2. query_vector: Es una constante de tipo "VECTOR" que puede ser (pero no es obligatorio que sea) el resultado de string_to_vector.
  3. Las opciones de cadenas de búsqueda separadas por comas incluyen 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: es opcional. Especifica la cantidad de hojas que se sondearán para una búsqueda de similitud de vectores de ANN. Si no especificas la cantidad de hojas, CloudSQL 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 un buen rendimiento. Te recomendamos que configures num_leaves_to_search en función de tu carga de trabajo y el equilibrio entre rendimiento o calidad.

    Por ejemplo:

    'distance_measure=dot_product,
    num_leaves_to_search=100'

    Valor de LIMIT obligatorio: El límite especificado se usa como la cantidad de vecinos que se mostrarán (también conocido como K superior).

    Resultado: Es la distancia aproximada de las K filas más cercanas en la tabla base.

    Esta función solo se puede usar en la lista ORDER BY o 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;

¿Qué sigue?