Compartir a través de


VectorDistance (consulta NoSQL)

SE APLICA A: NoSQL

Devuelve la puntuación de similitud entre dos vectores especificados.

Sintaxis

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

Argumentos

Parámetro Descripción
vector_expr_1 Una matriz de float32 o menor.
vector_expr_2 Una matriz de float32 o menor.
bool_expr Valor booleano opcional que especifica cómo se usa el valor calculado en una expresión ORDER BY. Si es true, se usa por fuerza bruta. Un valor de false usa cualquier índice definido en la propiedad vectorial, si existe. El valor predeterminado es false.
obj_expr Literal de objeto con formato JSON opcional que se usa para especificar opciones para el cálculo de distancia vectorial. Los elementos válidos incluyen distanceFunction y dataTypey searchListSizeMultiplier.

Parámetros admitidos para el opcional obj_expr

Parámetro Descripción
distanceFunction Métrica que se usa para calcular la distancia o similitud.
dataType El tipo de datos de los vectores. float32, int8, uint8 valores. El valor predeterminado es float32.
searchListSizeMultiplier Entero que especifica el tamaño de la lista de búsqueda al realizar una búsqueda vectorial. Aumentar esto puede mejorar la precisión a costa del costo y la latencia de RU. Min=1, Default=5, Max=100.

Las métricas admitidas para distanceFunction son:

  • cosine, que tiene valores de -1 (menos similares) a +1 (más similares).
  • dotproduct, que tiene valores de -∞ (-inf) (menos similares) a +∞ () (+infmás similares).
  • euclidean, que tiene valores de 0 (más similares) a +∞ () (+infmenos similares).

Tipos de valores devueltos

Devuelve una expresión numérica que enumera la puntuación de similitud entre dos expresiones.

Ejemplos

En este primer ejemplo se muestra una consulta de búsqueda vectorial superior de 10 con solo los argumentos necesarios. Se proyecta una propiedad, junto con la puntuación devuelta por VectorDistance. A continuación, se usa una ORDER BY cláusula para ordenar VectorDistance las puntuaciones en orden de la mayoría similar a la mínima.

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

En este ejemplo siguiente también se incluyen argumentos opcionales 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

Use siempre una cláusula TOP N en la instrucción SELECT de una consulta. De lo contrario, los vectores de búsqueda intentará devolver muchos más resultados y la consulta costará más RU y tendrá una mayor latencia de lo necesario.

Comentarios

  • Esta función requiere habilitar la característica NoSQL Vector Search de Azure Cosmos DB.
  • Esta función se beneficia de un índice vectorial.
  • Si false se da como opcional bool_expr, se usa el índice de vector definido en la ruta de acceso, si existe uno. Si no se define ningún índice en la ruta de acceso vectorial, esta función se revierte al examen completo e incurre en cargos de RU más altos y mayor latencia que si se usa un índice vectorial.
  • Cuando VectorDistance se usa en una ORDER BY cláusula , no es necesario especificar ninguna dirección para , ya ORDER BY que los resultados siempre se ordenan en orden de la mayoría de los similares (primero) a los menos similares (último) en función de la métrica de similitud utilizada.
  • El resultado se expresa como una puntuación de similitud.