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

Salida: STRING

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

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 en un formato de vector 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 del vector del KNN.

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

Resultado: REAL

Calcula la distancia vectorial entre dos VECTOR. Los dos VECTORs 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 más bajo indica una mayor similitud entre los vectores.

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

Salida: La distancia de 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 escalar entre dos vectores de entrada para calcular y generar un solo valor escalar.

Entrada: Toma dos valores de vectores. Pueden ser nombres de columnas 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

Resultado: REAL

Algoritmo que agrega la distancia al cuadrado en cada dimensión entre dos vectores de entrada para medir la distancia euclidiana entre ellos.

Entrada: Toma dos valores de vectores. Pueden ser nombres de columnas 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 puedes usar para calcular la distancia entre vectores.

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 en 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 el nombre de una columna de embedding de vectores de la tabla base.
  2. query_vector: Es 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 incluyen las siguientes:
    • distance_measure: Obligatorio. Utiliza 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 deben sondear 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 y rendimiento de la búsqueda. Te recomendamos que ajustes num_leaves_to_search según tu carga de trabajo y el equilibrio entre rendimiento y 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 devolverán (también conocido como los K principales).

    Resultado: Es la distancia aproximada de las primeras 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?