Funções do Cloud SQL

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

Funções de conversão vetorial

A tabela a seguir lista as funções que você pode usar para manipular informações vetoriais em uma instrução SELECT .

Função Descrição
vetor_para_string Entrada: VETOR

Saída: STRING

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

Entrada: um argumento do tipo VECTOR

Saída: uma string

Sintaxe:

vector_to_string( some_embedding )

string_para_vetor Entrada: STRING

Saída: VETOR

Converte uma string para um formato vetorial legível. Isso permite que você escreva os valores que deseja 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 você pode usar para calcular a distância do vetor KNN.

Função Tipo de dados Descrição
distância_vetorial Entrada: VETOR

Saída: REAL

Calcula a distância vetorial entre dois VECTOR s. Os dois VECTOR s devem ter as mesmas dimensões.

Entrada : obrigatória. Aceita dois valores vetoriais. Um terceiro argumento de string opcional indica a medida da distância. O padrão é `l²_squared_distance`. Outras opções incluem `cosine_distance` e `dot_product`.

Saída : 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');

distância_coseno Entrada: VETOR

Saída: REAL

Algoritmo para calcular o cosseno do ângulo entre dois vetores. Um valor menor indica maior similaridade entre os vetores.

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

Saída : 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;

produto escalar Entrada: VETOR

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;

distância_ao_quadrado_l2 Entrada: VETOR

Saída: REAL

Algoritmo que soma a distância quadrada 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 L2 ao quadrado 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 a seguir lista a função que você pode usar para calcular a distância vetorial.

Função Tipo de dados Descrição
distância_aproximada Entrada: VETOR

Saída: REAL

Encontra as K linhas mais próximas que satisfazem a medida de distância usando o algoritmo selecionado. Esta função consulta os vizinhos mais próximos aproximados de uma coluna vetorial para um valor constante. O tipo VECTOR das duas colunas incorporadas e a constante VECTOR devem ter as mesmas dimensões. Há alguns casos em que esta função retorna a uma pesquisa KNN (busca exata) em vez de uma pesquisa ANN. Você deve incluir um limite nas 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 vetor que incorpora o nome da coluna da tabela base.
  2. query_vector: Uma constante do tipo `VECTOR` que pode ser (mas não é obrigatória) a saída de string_to_vector .
  3. As opções de sequência de caracteres de pesquisa separadas por vírgula incluem o seguinte:
    • 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 analisadas para uma pesquisa de similaridade vetorial de RNA. Se você não especificar o número de folhas, o CloudSQL para MySQL 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 para uma boa qualidade e desempenho de pesquisa. Recomenda-se ajustar num_leaves_to_search com base na sua carga de trabalho e desempenho ou na compensação de 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 serem retornados (também conhecido como K principais).

    Saída : 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 vem a seguir