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 de0
(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 opcionalbool_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 umaORDER BY
cláusula, nenhuma direção precisa ser especificada para oORDER 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.