Referência de assistência vetorial

Esta página fornece informações detalhadas sobre todas as funções de assistência vetorial disponíveis e os parâmetros obrigatórios e opcionais delas.

vector_assist.define_spec

Define uma nova especificação de vetor, ou especificação de vetor, e retorna recomendações necessárias para aumentar a carga de trabalho de vetor. Essa função aplica as especificações fornecidas pelo usuário para gerar as recomendações.

Função

CREATE OR REPLACE FUNCTION vector_assist.define_spec(
    spec_id TEXT DEFAULT NULL,
    table_name TEXT,
    schema_name TEXT DEFAULT NULL,
    vector_column_name TEXT DEFAULT NULL,
    text_column_name TEXT DEFAULT NULL,
    vector_index_type TEXT DEFAULT NULL, -- Allowed: 'hnsw', 'ivfflat'
    embeddings_available BOOL DEFAULT NULL,
    embedding_model TEXT DEFAULT NULL,
    num_vectors INT DEFAULT NULL,
    dimensionality INT DEFAULT NULL,
    distance_func TEXT DEFAULT NULL, -- Allowed: 'cosine', 'ip', 'l2', 'l1'
    quantization TEXT DEFAULT NULL, -- Allowed: 'none', 'halfvec', 'bit'
    prefilter_column_names TEXT[] DEFAULT NULL,
    memory_budget_kb INT DEFAULT NULL, -- In KB
    target_recall FLOAT DEFAULT NULL,
    target_top_k INT DEFAULT NULL,
    tune_vector_index BOOL DEFAULT FALSE, -- Set to true if target_recall is set
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;

Parâmetros

Parâmetro Obrigatório? Descrição
spec_id Obrigatório (gerado automaticamente) Um ID exclusivo para a especificação de vetor definida por você.
table_name Obrigatório? O nome da tabela a ser usado na configuração da carga de trabalho de vetor.
schema_name Opcional O esquema que contém a tabela a ser usada na carga de trabalho de vetor. O esquema é inferido automaticamente com base no caminho de pesquisa do esquema.
vector_column_name Opcional ou obrigatório O nome da coluna que contém os embeddings de vetor.

Essa coluna é obrigatória se você estiver usando mais de uma coluna de vetor e o text_column_name não estiver declarado. Se você estiver usando apenas uma coluna de vetor, esse parâmetro será opcional.
text_column_name Opcional ou obrigatório O nome da coluna de texto. Se a carga de trabalho de vetor exigir a geração de incorporações de uma coluna de texto, esse parâmetro será obrigatório.

Essa coluna é obrigatória se o parâmetro vector_column_name for NULL e não houver outras colunas de vetor.

Esse parâmetro usa a extensão google_ml_integration para gerar embeddings da coluna de texto especificada.
vector_index_type Opcional O tipo do índice vetorial. Os valores aceitáveis são:
  • HNSW
  • IVFFlat
  • SCANN
embeddings_available Opcional Um booleano que verifica se os embeddings de vetor existem na tabela selecionada. Esse campo será definido como FALSE se nenhuma coluna de vetor for detectada e o parâmetro text_column_name for definido.
embedding_model Opcional ou obrigatório O ID do modelo de google_ml.models a ser usado para gerar os embeddings. Esse campo é opcional, a menos que o parâmetro embeddings_available seja FALSE ou NULL.
num_vectors Opcional O número de vetores na tabela.
dismensionality Opcional A dimensão dos vetores fornecidos.
distance_func Opcional A função de distância a ser usada para comparar vetores. Os valores aceitáveis incluem cosine, ip, l2 ou l1.
quantization Opcional A quantização para os índices de vetor. Os valores aceitáveis incluem none, halfvec ou bit.
prefilter_column_names Opcional Cria um índice para a coluna especificada para pré-filtragem. Isso pode ajudar a melhorar o desempenho de consultas com um filtro de alta seletividade na coluna.
memory_budget_kb Opcional A memória máxima (em KB) para a criação de índices.
target_recall Opcional O recall de destino para consultas vetoriais padrão.
target_top_k Opcional Os principais valores correspondentes a serem extraídos para o cálculo de recall. Esse valor será usado se o parâmetro target_recall for especificado.
tune_vector_index Opcional Ajusta os índices de vetores na sua carga de trabalho. Se ativada, a assistência de vetor ajusta automaticamente o índice de vetor ou a consulta de pesquisa usando a especificação de vetor e calcula os parâmetros ideais de banco de dados e índice. Os valores aceitáveis incluem TRUE ou FALSE.

Valor de retorno

Retorna uma tabela de recomendações que precisam ser aplicadas para configurar a carga de trabalho de vetor solicitada. Cada linha é uma única recomendação que contém uma consulta SQL executável e uma explicação detalhada de por que aplicar a recomendação. A recomendação pode ser aplicada usando a função apply_recommendation().

A tabela de recomendações contém as seguintes colunas:

Nome da coluna Tipo Descrição
recommendation_id Texto O ID da recomendação. A recomendação é aplicada usando esse ID.
vector_spec_id Texto O ID da especificação de vetor associada à recomendação.
table_name Texto O nome da tabela associada à recomendação.
schema_name Texto O nome do esquema que contém a tabela especificada.
query Texto A consulta SQL executável que será executada para alcançar o resultado da recomendação.
recommendation Texto A explicação da recomendação, incluindo o resultado esperado depois que ela for aplicada. Essa coluna também contém o motivo e a justificativa da recomendação. Use esse contexto para ajustar a consulta conforme necessário e gerar recomendações novamente.
applied Booleano Mostra se a recomendação foi aplicada.
modified Booleano Mostra se a recomendação foi modificada pelo usuário.
created_at Carimbo de data/hora com fuso horário O momento em que a recomendação foi gerada no formato timestamp with time zone. Por exemplo, 2024-07-18 09:00:00-08.

vector_assist.list_specs

Retorna a especificação de vetor atual para uma determinada tabela e coluna.

Função

CREATE OR REPLACE FUNCTION vector_assist.list_specs(
  table_name      TEXT,
  column_name     TEXT DEFAULT NULL
)
RETURNS SETOF vector_assist.VECTOR_SPECS

Parâmetros

Parâmetro Obrigatório? Descrição
table_name Obrigatório? O nome da tabela para que a especificação do vetor é recuperada.
column_name Opcional O nome da coluna para filtrar a tabela antes de retornar a especificação. Se o nome da coluna for especificado, as especificações que contêm nomes de colunas de texto ou vetor que correspondem a esse nome serão retornadas.

Valor de retorno

Retorna uma tabela de especificações para a tabela e, opcionalmente, o nome da coluna.

vector_assist.modify_spec

Modifica uma especificação de vetor atual. Quando a especificação de vetor é modificada, as recomendações associadas são regeneradas com base nas novas especificações.

Função

CREATE OR REPLACE FUNCTION vector_assist.modify_spec(
  spec_id                TEXT,
  table_name             TEXT DEFAULT NULL,
  schema_name            TEXT DEFAULT NULL,
  vector_column_name     TEXT DEFAULT NULL,
  text_column_name       TEXT DEFAULT NULL,
  vector_index_type      TEXT DEFAULT NULL,
  embeddings_available   BOOL DEFAULT NULL,
  num_vectors            INT DEFAULT NULL,
  dimensionality         INT DEFAULT NULL,
  embedding_model        TEXT DEFAULT NULL,
  prefilter_column_names TEXT[] DEFAULT NULL,
  distance_func          TEXT DEFAULT NULL,
  quantization           TEXT DEFAULT NULL,
  memory_budget_kb       INT DEFAULT NULL,
  target_recall          FLOAT DEFAULT NULL,
  target_top_k           INT DEFAULT NULL,
  tune_vector_index      BOOL DEFAULT NULL
)
RETURNS SETOF vector_assist.RECOMMENDATIONS

Parâmetros

Parâmetro Obrigatório? Descrição
spec_id Obrigatório (gerado automaticamente) Um ID exclusivo para a especificação de vetor definida por você.
table_name Obrigatório? O nome da tabela a ser usado na configuração da carga de trabalho de vetor.
schema_name Opcional O esquema que contém a tabela a ser usada na carga de trabalho de vetor. O esquema é inferido automaticamente com base no caminho de pesquisa do esquema.
vector_column_name Opcional ou obrigatório O nome da coluna que contém os embeddings de vetor.

Essa coluna é obrigatória se você estiver usando mais de uma coluna de vetor e o text_column_name não estiver declarado. Se você estiver usando apenas uma coluna de vetor, esse parâmetro será opcional.
text_column_name Opcional ou obrigatório O nome da coluna de texto. Se a carga de trabalho de vetor exigir a geração de incorporações de uma coluna de texto, esse parâmetro será obrigatório.

Essa coluna é obrigatória se o parâmetro vector_column_name for NULL e não houver outras colunas de vetor.

Esse parâmetro usa a extensão google_ml_integration para gerar embeddings da coluna de texto especificada.
vector_index_type Opcional O tipo do índice vetorial. Os valores aceitáveis são:
  • HNSW
  • IVFFlat
  • SCANN
embeddings_available Opcional Um booleano que verifica se os embeddings de vetor existem na tabela selecionada. Esse campo será definido como FALSE se nenhuma coluna de vetor for detectada e o parâmetro text_column_name for definido.
embedding_model Opcional ou obrigatório O ID do modelo de google_ml.models a ser usado para gerar os embeddings. Esse campo é opcional, a menos que o parâmetro embeddings_available seja FALSE ou NULL.
num_vectors Opcional O número de vetores na tabela.
dismensionality Opcional A dimensão dos vetores fornecidos.
distance_func Opcional A função de distância a ser usada para comparar vetores. Os valores aceitáveis incluem cosine, ip, l2 ou l1.
quantization Opcional A quantização para os índices de vetor. Os valores aceitáveis incluem none, halfvec ou bit.
prefilter_column_names Opcional Identifica as colunas que são disponibilizadas para pré-filtragem em consultas de pesquisa vetorial.
memory_budget_kb Opcional A memória máxima (em KB) para a criação de índices.
target_recall Opcional O recall de destino para consultas vetoriais padrão.
target_top_k Opcional Os principais valores correspondentes a serem extraídos para o cálculo de recall. Esse valor será usado se o parâmetro target_recall for especificado.
tune_vector_index Opcional Ajusta os índices de vetores na sua carga de trabalho. Se ativada, a assistência de vetor ajusta automaticamente o índice de vetor ou a consulta de pesquisa usando a especificação de vetor e calcula os parâmetros ideais de banco de dados e índice. Os valores aceitáveis incluem TRUE ou FALSE.

Valor de retorno

Retorna uma tabela atualizada de recomendações que precisam ser aplicadas para configurar a carga de trabalho de vetor solicitada. Cada linha é uma única recomendação que contém uma consulta SQL executável e uma explicação detalhada de por que aplicar a recomendação. A recomendação pode ser aplicada usando a função apply_recommendation().

A tabela de recomendações contém as seguintes colunas:

Nome da coluna Tipo Descrição
recommendation_id Texto O ID da recomendação. A recomendação é aplicada usando esse ID.
vector_spec_id Texto O ID da especificação de vetor associada à recomendação.
table_name Texto O nome da tabela associada à recomendação.
schema_name Texto O nome do esquema que contém a tabela especificada.
query Texto A consulta SQL executável que será executada para alcançar o resultado da recomendação.
recommendation Texto A explicação da recomendação, incluindo o resultado esperado depois que ela for aplicada. Essa coluna também contém o motivo e a justificativa da recomendação. Use esse contexto para ajustar a consulta conforme necessário e gerar recomendações novamente.
applied Booleano Mostra se a recomendação foi aplicada.
modified Booleano Mostra se a recomendação foi modificada pelo usuário.
created_at Carimbo de data/hora com fuso horário O horário em que a recomendação foi gerada.

vector_assist.get_recommendations

Retorna recomendações associadas a um vetor spec_id específico.

Função

CREATE OR REPLACE FUNCTION vector_assist.get_recommendations (
    spec_id TEXT
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;

Parâmetros

Parâmetro Obrigatório? Descrição
spec_id Obrigatório? Recebe recomendações para o vetor spec_id especificado.

Valor de retorno

Retorna uma tabela de recomendações solicitadas.

A tabela de recomendações contém as seguintes colunas:

Nome da coluna Tipo Descrição
recommendation_id Texto O ID da recomendação. A recomendação é aplicada usando esse ID.
vector_spec_id Texto O ID da especificação de vetor associada à recomendação.
table_name Texto O nome da tabela associada à recomendação.
schema_name Texto O nome do esquema que contém a tabela especificada.
query Texto A consulta SQL executável que será executada para alcançar o resultado da recomendação.
recommendation Texto A explicação da recomendação, incluindo o resultado esperado depois que ela for aplicada. Essa coluna também contém o motivo e a justificativa da recomendação. Use esse contexto para ajustar a consulta conforme necessário e gerar recomendações novamente.
applied Booleano Mostra se a recomendação foi aplicada.
modified Booleano Mostra se a recomendação foi modificada pelo usuário.
created_at Carimbo de data/hora com fuso horário O horário em que a recomendação foi gerada.

vector_assist.apply_recommendation

Aplica uma única recomendação usando o recommendation_id.

Função

CREATE OR REPLACE FUNCTION vector_assist.get_recommendations (
    spec_id TEXT
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;

Parâmetros

Parâmetro Obrigatório? Descrição
recommenation_id Obrigatório? O ID da recomendação de vetor a ser aplicada.

Valor de retorno

Retorna um booleano que confirma se uma recomendação foi aplicada com sucesso e atualiza a coluna applied da tabela vector_assist.RECOMMENDATIONS para TRUE.

Se o Vector Assist não conseguir aplicar a recomendação, uma mensagem de erro será exibida.

vector_assist.apply_spec

Aplica todas as recomendações associadas a um vetor spec_id ou nome de tabela específico. Essa função passa por todas as recomendações e executa a função vector_assist.apply_recommendation em cada uma delas.

É necessário especificar um spec_id ou table_name para executar a função.

Função

CREATE OR REPLACE FUNCTION vector_assist.apply_spec(
    spec_id TEXT DEFAULT NULL,
    table_name TEXT DEFAULT NULL,
    schema_name TEXT DEFAULT NULL,
    column_name TEXT DEFAULT NULL -- text_column_name or vector_column_name
)
RETURNS BOOLEAN;

Parâmetros

Parâmetro Obrigatório? Descrição
spec_id Opcional Aplica todas as recomendações ao vetor spec_id especificado.
table_name Opcional Aplica todas as recomendações à tabela especificada.
schema_name Opcional O esquema que contém a tabela especificada.
column_name Opcional Identifica o text_column_name ou vector_column_name a ser usado se a tabela contiver várias especificações de vetor.

Valor de retorno

Retorna um booleano que confirma se todas as recomendações foram aplicadas com sucesso e define o valor na coluna da tabela vector_assist.RECOMMENDATIONS applied como TRUE para todas as recomendações.

Se o Vector Assist não conseguir aplicar a recomendação, uma mensagem de erro será exibida.

vector_assist.modify_recommendation

Modifica a consulta de uma recomendação específica e define o campo modified na tabela vector_assist.RECOMMENDATIONS da recomendação associada como TRUE.

Função

CREATE OR REPLACE FUNCTION vector_assist.modify_recommendation(
    recommendation_id TEXT,
    modified_query TEXT
)
RETURNS BOOLEAN;

Parâmetros

Parâmetro Obrigatório? Descrição
recommendation_id Obrigatório? O ID da recomendação a ser modificada.
modified_query Obrigatório? Uma consulta SQL modificada pelo usuário para a recomendação.

Valor de retorno

Retorna um booleano que confirma se uma recomendação foi atualizada e define a coluna modified da tabela vector_assist.RECOMMENDATIONS como TRUE.

Se a assistência de vetor não conseguir atualizar a recomendação, uma mensagem de erro será exibida.

vector_assist.generate_query

Gera uma consulta de pesquisa de vetor otimizada com base na especificação de vetor definida e nos parâmetros de pesquisa. Essa função pode ajustar o valor ef_search para atender ao target_recall definido, se aplicável.

Função

CREATE OR REPLACE FUNCTION vector_assist.generate_query(
    spec_id TEXT DEFAULT NULL,
    table_name TEXT DEFAULT NULL,
    schema_name TEXT DEFAULT NULL,
    column_name TEXT DEFAULT NULL, -- text_column_name or vector_column_name of the spec
    search_text TEXT DEFAULT NULL,
    search_vector VECTOR DEFAULT NULL, -- e.g. '[1.0,2.0,3.0]'::vector
   output_column_names TEXT[] DEFAULT NULL, -- Columns to retrieve, NULL for SELECT *
    top_k INT DEFAULT NULL,
    filter_expressions TEXT[] DEFAULT NULL,
    target_recall FLOAT DEFAULT NULL, -- Inherited from spec, can be overridden
    iterative_index_search BOOL DEFAULT NULL
)
RETURNS TEXT; -- Returns the text representing the search query

Parâmetros

Parâmetro Obrigatório? Descrição
spec_id Opcional Especifica o spec_id para gerar a consulta.
table_name Opcional Especifica o nome da tabela para gerar a consulta de pesquisa se o spec_id não for fornecido. Se uma tabela tiver várias especificações, o parâmetro vai retornar um erro.
column_name Opcional Especifica o nome da coluna para gerar a consulta de pesquisa se o spec_id não for fornecido. Se a coluna tiver várias especificações, o parâmetro vai retornar um erro. O column_name pode ser o text_column_name ou o vector_column_name.
output_column_name Opcional Os nomes das colunas a serem recuperadas na consulta de saída. Para recuperar todas as colunas, defina esse parâmetro como NULL.
search_text Opcional O texto de pesquisa para gerar embeddings. Exige o embedding_model na especificação do vetor. O embedding é gerado usando o modelo da especificação. Só é possível definir o parâmetro search_text ou search_vector.
search_vector Opcional O vetor da consulta de pesquisa. Só é possível definir o parâmetro search_text ou search_vector.
top_k Opcional O número de vizinhos mais próximos a serem retornados.
filter_expressions Opcional As expressões de filtro a serem aplicadas na consulta de pesquisa. Os filtros podem ser aplicados a campos na tabela, como preço < 100.
iterative_index_search Opcional Define se uma pesquisa iterativa de índice será realizada para consultas filtradas.Esse parâmetro substitui as configurações na especificação do vetor.
target_recall Opcional A meta de recall apenas para a consulta de pesquisa. Esse parâmetro substitui as configurações na especificação do vetor e ajusta ef_search.

Valor de retorno

Retorna um texto que contém a consulta de pesquisa vetorial para os parâmetros especificados. Essa consulta pode ser executada ou salva para ser executada mais tarde.

vector_assist.evaluate_query_recall

Avalia o recall do índice de vetor para uma determinada consulta. Essa função usa as configurações de banco de dados e índice em uma string JSON como entradas.

Função

CREATE OR REPLACE FUNCTION vector_assist.evaluate_query_recall(
  IN ann_query text,
  IN vector_search_configurations json DEFAULT NULL,
  OUT recall float,
  OUT ann_execution_time float,
  OUT ground_truth_execution_time float,
  OUT index_type text)
RETURNS RECORD

Parâmetros

Parâmetro Obrigatório? Descrição
ann_query Obrigatório? A consulta SQL para a qual o recall precisa ser avaliado. Essa consulta precisa ser uma consulta de ANN pgvector.
vector_search_configurations Opcional As configurações que podem ser definidas para a consulta de ANN. Esse parâmetro precisa estar no formato JSON.

Valor de retorno

Retorna uma tabela que avalia o recall do índice vetorial para a consulta especificada.

A tabela contém as seguintes colunas:

Nome da coluna Tipo Descrição
recall Ponto flutuante A porcentagem de vetores que o índice retorna, que são verdadeiros vizinhos mais próximos. Essa métrica é usada para quantificar a qualidade da pesquisa. Com essa função, é possível ajustar os parâmetros para retornar os resultados esperados de recall da consulta de vetor.
ann_execution_time Ponto flutuante O tempo que uma consulta de vetor leva para ser executada usando verificações de índice.
ground_truth_execution_time Ponto flutuante O tempo que leva para a consulta ser executada usando uma verificação sequencial.

Exemplo

O exemplo a seguir avalia o recall de um índice HNSW e substitui o parâmetro de configuração HNSW.ef_search:

SELECT * FROM vector_assist.evaluate_query_recall(
  ann_query => 'SELECT id FROM items ORDER BY embedding <=> ''[1,2,3]'' LIMIT 10',
  vector_search_configurations => '{"hnsw.ef_search": 30}'
);