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


VectorDistance (запрос NoSQL)

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

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

Синтаксис

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

Аргументы

Параметр Описание
vector_expr_1 Массив float32 или меньше.
vector_expr_2 Массив float32 или меньше.
bool_expr Необязательный логический параметр, указывающий, как вычисляемое значение используется в выражении ORDER BY. Если trueиспользуется метод подбора. Значение использует любой индекс, определенный в свойстве вектора false , если он существует. Значение по умолчанию: false.
obj_expr Необязательный литерал отформатированного объекта JSON, используемый для указания параметров вычисления векторного расстояния. Допустимые элементы включают distanceFunction и , а dataTypeтакже searchListSizeMultiplier.

Поддерживаемые параметры для необязательного obj_expr

Параметр Описание
distanceFunction Метрика, используемая для вычисления расстояния или сходства.
dataType Тип данных векторов. float32uint8, , int8значения. Значение по умолчанию: float32.
searchListSizeMultiplier Целое число, указывающее размер списка поиска при проведении векторного поиска. Увеличение этого может повысить точность за счет затрат и задержки ЕЗ. Min=1, Default=5, Max=100.

Поддерживаемые метрики: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'})

Внимание

Всегда используйте TOP N предложение в SELECT инструкции запроса. В противном случае векторный поиск попытается вернуть гораздо больше результатов, и запрос будет стоить больше единиц запросов и иметь более высокую задержку, чем необходимо.

Замечания

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