VECTOR_DISTANCE (Transact-SQL) (предварительная версия)
Применимо к: База данных SQL Azure Управляемый экземпляр SQL Azure
Примечание.
Этот тип данных находится в предварительной версии и подлежит изменению. Обязательно ознакомьтесь с условиями использования предварительной версии в документе соглашения об уровне обслуживания (SLA) для веб-служб .
Вычисляет расстояние между двумя векторами с помощью указанной метрики расстояния.
Синтаксис
Соглашения о синтаксисе Transact-SQL
VECTOR_DISTANCE ( distance_metric, vector1, vector2 )
Аргументы
distance_metric
Строка с именем метрики расстояния, используемой для вычисления расстояния между двумя заданными векторами. Поддерживаются следующие метрики расстояния:
cosine
- Косинус расстояниеeuclidean
- Евклидеан расстояниеdot
- (Отрицательное) Dot product
vector1
Выражение, которое оценивает вектор в двоичном формате.
vector2
Выражение, которое оценивает вектор в двоичном формате.
Метрики расстояния
Метрическая | Description | Диапазон | Примеры |
---|---|---|---|
cosine |
Косинус (угловое) расстояние | [0, 2] | 0 : идентичные векторы 2 : противоположные векторы |
euclidean |
Евклидеан расстояние | [-∞, +∞] | 0 : идентичные векторы |
dot |
Точка на основе продукта указание расстояния, полученное путем вычисления отрицательного продукта dot |
[-∞, +∞] | Меньшие числа указывают на более похожие векторы |
Возвращаемое значение
Функция возвращает скалярное значение с плавающей запятой , представляющее расстояние между двумя векторами с помощью указанной метрики расстояния.
Ошибка возвращается, если distance_metric не является допустимой метрикой и если указанные двоичные значения не представляют допустимых векторов.
Примеры
Просмотрите репозиторий GitHub База данных SQL Azure векторного поиска, чтобы получить комплексные рабочие примеры.
В примерах предполагается наличие таблицы wikipedia_articles
с именем столбца title_vector
типа vector
, в который хранятся встраивания заголовков статей Википедии. title_vector
Предполагается, что внедрение создается с помощью модели внедрения, такой как text-embedding-ada-002 или text-embedding-3-small , который возвращает векторы с 1536 измерениями.
Пример 1
В следующем примере создается вектор с тремя измерениями из строки с массивом JSON.
DECLARE @v1 VECTOR(2) = '[1,1]';
DECLARE @v2 VECTOR(2) = '[-1,-1]';
SELECT
VECTOR_DISTANCE('euclidean', @v1, @v2) AS euclidean,
VECTOR_DISTANCE('cosine', @v1, @v2) AS cosine,
VECTOR_DISTANCE('dot', @v1, @v2) AS negative_dot_product;
Пример 2
В следующем примере возвращаются самые похожие статьи из 10 самых похожих статей для данной статьи на основе расстояния между их векторами заголовка. Подробные сведения о базе данных, используемой в примере, см. здесь: скачивание и импорт статьи Википедии с векторными внедрениями
DECLARE @v AS VECTOR(1536);
SELECT @v = title_vector FROM [dbo].[wikipedia_articles] WHERE title = 'Alan Turing';
SELECT TOP(10)
id,
title,
VECTOR_DISTANCE('cosine', @v, title_vector) AS distance
FROM
[dbo].[wikipedia_articles]
ORDER BY
distance
Пример 3
В следующем примере возвращаются все аналогичные статьи для данной статьи, основанные на расстоянии косинуса между векторами заголовков, выбирая только те, у которых расстояние меньше 0,3.
DECLARE @v AS VECTOR(1536);
SELECT @v = title_vector FROM [dbo].[wikipedia_articles] WHERE title = 'Alan Turing';
SELECT
id,
title,
VECTOR_DISTANCE('cosine', @v, title_vector) AS distance
FROM
[dbo].[wikipedia_articles]
WHERE
VECTOR_DISTANCE('cosine', @v, title_vector) < 0.3
ORDER BY
distance