Funções do Cloud SQL

Estas páginas descrevem as funções do Cloud SQL.

Funções de conversão de vetores

A tabela seguinte apresenta as funções que pode usar para manipular informações de vetores numa declaração SELECT.

Função Descrição
vector_to_string Entrada: VECTOR

Saída: STRING

Converte um argumento numa string num formato de vetor legível.

Entrada: um argumento do tipo VECTOR

Saída: uma string

Sintaxe:

vector_to_string(some_embedding)

string_to_vector Entrada: STRING

Saída: VECTOR

Converte uma string num formato de vetor legível. Isto permite-lhe escrever os valores que quer representados num vetor.

Entrada: uma string

Sintaxe:

string_to_vector('some_embedding')

Resultado: um valor do tipo vetor.

Funções de pesquisa

Esta secção descreve as funções de pesquisa do Cloud SQL.

Funções KNN

A tabela seguinte apresenta as funções que pode usar para calcular a distância vetorial da KNN.

Função Tipo de dados Descrição
vector_distance Entrada: VECTOR

Saída: REAL

Calcula a distância vetorial entre dois VECTORs. Os dois VECTORs têm de ter as mesmas dimensões.

Entrada: obrigatório. Aceita dois valores vetoriais. Um terceiro argumento de string opcional indica a medida de distância. A predefinição é `l2_squared_distance. Outras opções incluem `cosine_distance` e `dot_product`.

Resultado: a distância entre os dois vetores.

Por exemplo:

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

cosine_distance Entrada: VECTOR

Saída: REAL

Algoritmo para calcular o cosseno do ângulo entre dois vetores. Um valor mais pequeno indica uma maior semelhança entre os vetores.

Entrada: recebe dois valores vetoriais. Podem ser nomes de colunas ou constantes.

Resultado: a distância do cosseno entre os dois vetores.

Por exemplo:

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

Saída: REAL

Algoritmo que executa a operação de produto escalar entre dois vetores de entrada para calcular e gerar um único valor escalar.

Entrada: recebe dois valores vetoriais. Podem ser nomes de colunas ou constantes.

Saída: o produto escalar dos dois vetores.

Por exemplo:

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

Saída: REAL

Algoritmo que adiciona a distância ao quadrado em cada dimensão entre dois vetores de entrada para medir a distância euclidiana entre eles.

Entrada: recebe dois valores vetoriais. Podem ser nomes de colunas ou constantes.

Saída: a distância ao quadrado L2 entre os dois vetores.

Por exemplo:

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;

Função ANN

A tabela seguinte lista a função que pode usar para calcular a distância vetorial.

Função Tipo de dados Descrição
approx_distance Entrada: VECTOR

Saída: REAL

Encontra as K linhas mais próximas que satisfazem a medida de distância através do algoritmo selecionado. Esta função consulta os vizinhos mais próximos aproximados de uma coluna de vetores para um valor constante. O VECTORtipo das duas colunas de incorporação e a constante VECTOR têm de ter as mesmas dimensões. Existem alguns casos em que esta função recorre a uma pesquisa KNN (pesquisa exata) em vez de uma pesquisa ANN. Tem de incluir um limite com consultas que usam esta função.

Sintaxe:

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

Entradas:

  1. embedding_name: um nome de coluna de incorporação de vetores da tabela base.
  2. query_vector: uma constante do tipo "VECTOR" que pode ser (mas não tem de ser) o resultado de string_to_vector.
  3. As opções de string de pesquisa separadas por vírgulas incluem o seguinte:
    • distance_measure: obrigatório. Usa um algoritmo para medir a distância entre vetores. Usa os seguintes literais de string:
      • L2_SQUARED
      • COSINE
      • DOT_PRODUCT

      Por exemplo: distance_measure=cosine

    • num_leaves_to_search: opcional. Especifica o número de folhas a sondar para uma pesquisa de similaridade de vetores ANN. Se não especificar o número de folhas, o CloudSQL for MySQL escolhe um valor calculado para num_leaves_to_search que pode ser visto em information_schema.innodb_vector_indexes. O número calculado é geralmente um bom ponto de partida com uma boa qualidade de pesquisa e desempenho. Recomendamos que ajuste o valor de num_leaves_to_search com base na sua carga de trabalho e no compromisso entre desempenho e qualidade.

    Por exemplo:

    'distance_measure=dot_product,
    num_leaves_to_search=100'

    Valor LIMIT obrigatório: o limite especificado é usado como o número de vizinhos a devolver (também conhecido como os K principais).

    Resultado: a distância aproximada das K linhas mais próximas na tabela base.

    Esta função só pode ser usada na lista ORDER BY ou SELECT.

    Por exemplo:

    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;

O que se segue?