Поделиться через


VectorDistance (запрос NoSQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Возвращает оценку сходства между двумя указанными векторами.

Синтаксис

VectorDistance(<vector_expr1>, <vector_expr2>, [<bool_expr>], [<obj_expr>])  

Аргументы

Description
spatial_expr_1 Массив float32 или меньше.
spatial_expr_2 Массив float32 или меньше.
bool_expr Логическое значение, указывающее, как вычисляемое значение используется в выражении ORDER BY. Если trueиспользуется метод подбора. Значение использует любой индекс, определенный в свойстве вектора false , если он существует. Значение по умолчанию: false.
obj_expr Форматированный литерал объекта JSON, используемый для указания параметров вычисления векторного расстояния. Допустимые элементы включают distanceFunction и dataType.
distanceFunction Метрика, используемая для вычисления расстояния или сходства.
dataType Тип данных векторов. float32uint8, , int8значения. Значение по умолчанию: float32.

Поддерживаемые метрики:distanceFunction

  • cosine, который имеет значения от -1 (наименее похожих) к +1 (наиболее похожим).
  • dotproduct, который имеет значения от -∞ () (-infнаименее похожие) на +∞ () (+infнаиболее похожие).
  • euclidean, который имеет значения из (наиболее похожих) на 0 +∞ (+inf) (наименее похожий).

Типы возвращаемых данных

Возвращает числовое выражение, которое перечисляет оценку сходства между двумя выражениями.

Примеры

В первом примере показан векторный запрос верхнего 10 векторного поиска только с необходимыми аргументами. Одно свойство проецируется вместе с оценкой, возвращаемой VectorDistance. Затем мы будем использовать ORDER BY предложение, чтобы сортировать оценки по порядку VectorDistance от наиболее похожих на наименьший.

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

В следующем примере также содержатся необязательные аргументы для 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',})

Замечания

  • Для этой функции требуется регистрация в предварительной версии функции поиска векторных векторов Azure Cosmos DB.
  • Эта функция получает преимущества от векторного индекса
  • Если false он указан как необязательный bool_expr, используется индекс вектора, определенный в пути, если он существует. Если индекс не определен в пути вектора, эта функция возвращается к полному сканированию и вызывает более высокие затраты на ЕЗ и более высокую задержку, чем при использовании векторного индекса.
  • Если VectorDistance используется в ORDER BY предложении, направление не должно быть указано для ORDER BY результатов, так как результаты всегда отсортированы по порядку наиболее похожих (сначала) до наименее похожих (последний) на основе используемой метрики сходства.
  • Результат выражается как оценка сходства.