Funções do Cloud SQL

Esta página descreve as funções do Cloud SQL.

Funções de conversão de vetores

A tabela a seguir lista as funções que podem ser usadas para manipular informações vetoriais em uma instrução SELECT.

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

Saída: STRING

Converte um argumento em uma string em um formato de vetor legível por humanos.

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 em um formato vetorial legível. Isso permite que você escreva os valores que quer representar em um vetor.

Entrada:uma string

Sintaxe:

string_to_vector('some_embedding')

Saída:um valor do tipo vetor.

Funções de pesquisa

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

Funções KNN

A tabela a seguir lista as funções que podem ser usadas para calcular a distância do vetor KNN.

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

Saída: REAL

Calcula a distância entre dois vetores.VECTOR Os dois VECTORs precisam ter as mesmas dimensões.

Input: obrigatório. Recebe dois valores de vetor. Um terceiro argumento de string opcional indica a medida de distância. O padrão é "l2_squared_distance". Outras opções incluem "cosine_distance" e "dot_product".

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

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 menor indica maior semelhança entre os vetores.

Entrada: recebe dois valores de vetor. Eles podem ser nomes de colunas ou constantes.

Saída: a distância do cosseno entre os dois vetores.

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 de vetor. Eles podem ser nomes de colunas ou constantes.

Saída: o produto escalar dos dois vetores.

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 de vetor. Eles podem ser nomes de colunas ou constantes.

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

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 a seguir lista a função que pode ser usada para calcular a distância do vetor.

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

Saída: REAL

Encontra as K linhas mais próximas que atendem à medida de distância usando o algoritmo selecionado. Essa função consulta os vizinhos mais próximos aproximados de uma coluna de vetor para um valor constante. O tipo VECTOR das duas colunas de incorporação e a constante VECTOR precisam ter as mesmas dimensões. Em alguns casos, essa função volta a uma pesquisa KNN (pesquisa exata) em vez de uma pesquisa ANN. É necessário incluir um limite nas consultas que usam essa 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 embeddings de vetor da tabela base.
  2. query_vector: uma constante do tipo "VECTOR" que pode ser (mas não precisa ser) a saída de string_to_vector.
  3. As opções de string de pesquisa separadas por vírgulas incluem:
    • distance_measure: obrigatório. Usa um algoritmo para medir a distância entre vetores. Ele 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 serem pesquisadas para uma pesquisa de similaridade de vetor ANN. Se você não especificar o número de folhas, o CloudSQL para MySQL vai escolher um valor computado para num_leaves_to_search, que pode ser visualizado em information_schema.innodb_vector_indexes. O número computado geralmente é um bom ponto de partida com boa qualidade de pesquisa e desempenho. Recomendamos que você ajuste num_leaves_to_search com base na sua carga de trabalho e no desempenho ou na troca de qualidade.

    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 serem retornados (também conhecido como K principal).

    Saída: a distância aproximada das linhas mais próximas da parte de cima da tabela de base.

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

    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;

A seguir