VectorDistance (consulta NoSQL)
APLICA-SE A: NoSQL
Devolve a pontuação de semelhança entre dois vetores especificados.
Sintaxe
VectorDistance(<vector_expr_1>, <vector_expr_2>, <bool_expr>, <obj_expr>)
Argumentos
Parâmetro | Description |
---|---|
vector_expr_1 |
Uma matriz de float32 ou menor. |
vector_expr_2 |
Uma matriz de float32 ou menor. |
bool_expr |
Um booleano opcional especificando como o valor calculado é usado em uma expressão ORDER BY. Se true , então a força bruta é usada. Um valor de false usa qualquer índice definido na propriedade vetor, se existir. O valor predefinido é false . |
obj_expr |
Um literal de objeto formatado JSON opcional usado para especificar opções para o cálculo de distância vetorial. Os itens válidos incluem distanceFunction e dataType , e searchListSizeMultiplier . |
Parâmetros suportados para o opcional obj_expr
Parâmetro | Description |
---|---|
distanceFunction |
A métrica usada para calcular a distância/similaridade. |
dataType |
O tipo de dados dos vetores. float32 , int8 , uint8 valores. O valor predefinido é float32 . |
searchListSizeMultiplier |
Um inteiro especificando 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. Min=1, Padrão=5, Max=100. |
As métricas suportadas são distanceFunction
:
cosine
, que tem valores de-1
(menos semelhantes) a+1
(mais semelhantes).dotproduct
, que tem valores de-∞
(-inf
) (menos semelhante) a+∞
(+inf
) (mais semelhante).euclidean
, que tem valores de0
(mais semelhantes) a+∞
(+inf
menos semelhantes).
Tipos de devolução
Retorna uma expressão numérica que enumera a pontuação de semelhança 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 em ordem 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 SELECT
instrução de uma consulta. Caso contrário, a pesquisa vetorial tentará retornar muito mais resultados e a consulta custará mais RUs e terá latência maior do que o necessário.
Observações
- Esta função requer a ativação do recurso Azure Cosmos DB NoSQL Vetor Search.
- Esta função beneficia de um índice vetorial
- Se
false
for dado como opcionalbool_expr
, então o índice vetorial definido no caminho é usado, se existir. Se nenhum índice for definido no caminho do vetor, essa função será revertida para verificação completa e incorrerá em cobranças de RU mais altas e latência mais alta do que se estiver usando um índice vetorial. - Quando
VectorDistance
é usado em umaORDER BY
cláusula, nenhuma direção precisa ser especificada para oORDER BY
como os resultados são sempre classificados em ordem de mais semelhante (primeiro) para menos semelhante (último) com base na métrica de similaridade usada. - O resultado é expresso como um escore de similaridade.