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 |
Тип данных векторов. float32 uint8 , , 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
результатов, так как результаты всегда отсортированы по порядку наиболее похожих (сначала) до наименее похожих (последний) на основе используемой метрики сходства. - Результат выражается как оценка сходства.