Compartilhar via


VectorDistance (consulta NoSQL)

APLICA-SE A: NoSQL

Retorna a pontuação de similaridade entre dois vetores especificados.

Sintaxe

VectorDistance(<vector_expr_1>, <vector_expr_2>, <bool_expr>, <obj_expr>)  

Argumentos

Parâmetro Descrição
vector_expr_1 Uma matriz de float32 ou menor.
vector_expr_2 Uma matriz de float32 ou menor.
bool_expr Um booleano opcional que especifica como o valor calculado é usado em uma expressão ORDER BY. Se true, a força bruta será usada. Um valor de false usa qualquer índice definido na propriedade vector, se ele existir. O valor padrão é false.
obj_expr Um literal de objeto formatado JSON opcional usado para especificar opções para o cálculo da distância do vetor. Os itens válidos incluem distanceFunction e dataType, e searchListSizeMultiplier.

Parâmetros suportados para o opcional obj_expr

Parâmetro Descrição
distanceFunction A métrica usada para calcular a distância/similaridade.
dataType O tipo de dados dos vetores. float32, int8, uint8 valores. O valor padrão é float32.
searchListSizeMultiplier Um número inteiro que especifica o tamanho da lista de pesquisa ao realizar uma pesquisa vetorial. Aumentar isso pode melhorar a precisão às custas do custo e da latência da RU. Mín = 1, Padrão = 5, Máx = 100.

As métricas distanceFunction suportadas são:

  • cosine, que tem valores de -1 (menos semelhante) a +1 (mais semelhante).
  • dotproduct, que tem valores de -∞ (-inf) (menos semelhante) a +∞ (+inf) (mais semelhante).
  • euclidean, que tem valores de 0 (mais semelhante) a +∞ (+inf) (menos semelhante).

Tipos de retorno

Retorna uma expressão numérica que enumera a pontuação de similaridade entre duas expressões.

Exemplos

Este primeiro exemplo mostra uma consulta de pesquisa vetorial top 10 com apenas os argumentos necessários. Uma propriedade é projetada, juntamente com a pontuação retornada por VectorDistance. Em seguida, usamos uma ORDER BY cláusula para classificar VectorDistance as pontuações da mais semelhante para a menor.

SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>)
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>)

Este próximo exemplo também inclui argumentos opcionais para VectorDistance

SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>, true, {'distanceFunction':'cosine', 'dataType':'float32'})
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>, true, {'distanceFunction':'cosine', 'dataType':'float32'})

Importante

Sempre use uma TOP N cláusula na instrução SELECT de uma consulta. Caso contrário, a busca em vetores tentará retornar muito mais resultados e a consulta custará mais RUs e terá uma latência maior do que o necessário.

Comentários

  • Essa função requer a habilitação do recurso de Pesquisa de Vetor NoSQL do Azure Cosmos DB.
  • Essa função do sistema se beneficia de um índice de vetor
  • Se false for dado como opcional bool_expr, então o índice vetorial definido no caminho é usado, se houver. Se nenhum índice for definido no caminho do vetor, essa função será revertida para a verificação completa e incorrerá em cobranças de RU mais altas e latência mais alta do que se estiver usando um índice de vetor.
  • Quando VectorDistance é usado em uma ORDER BY cláusula, nenhuma direção precisa ser especificada para o ORDER BY como os resultados são sempre classificados na ordem do mais semelhante (primeiro) para o menos semelhante (último) com base na métrica de similaridade usada.
  • O resultado é expresso como uma pontuação de similaridade.