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


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