Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к: Sql Server 2025 (17.x)
База данных
SQL Azure Управляемого экземпляра
SQL Azure в Microsoft Fabric
Функция VECTOR_DISTANCE вычисляет расстояние между двумя векторами с помощью указанной метрики расстояния. Расстояние вектора всегда точно и не использует векторный индекс, даже если он доступен. Чтобы использовать векторный индекс и таким образом выполнить приблизительный поиск векторов, необходимо использовать функцию VECTOR_SEARCH . Дополнительные сведения о том, как работает индексирование векторов и поиск векторов, а также различия между точным и приблизительным поиском, см. векторные индексы и векторные индексы в ядре СУБД SQL.
Note
VECTOR_DISTANCEдоступен в Управляемом экземпляре SQL Azure с политикой обновлениядаты sql Server 2025 или Always-up-to-date.
Syntax
Соглашения о синтаксисе Transact-SQL
VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )
Arguments
distance_metric
Строка с именем метрики расстояния, используемой для вычисления расстояния между двумя заданными векторами. Поддерживаются следующие метрики расстояния:
-
cosine- Косинус расстояние -
euclidean- Евклидеан расстояние -
dot- (Отрицательное) Dot product
vector1
Выражение, которое оценивает тип векторных данных.
vector2
Выражение, которое оценивает тип векторных данных.
Метрики расстояния
| Metric | Description | Range | Examples |
|---|---|---|---|
cosine |
Косинус (угловое) расстояние | [0, 2] |
0: идентичные векторы2: противоположные векторы |
euclidean |
Евклидеан расстояние | [0, +∞] |
0: идентичные векторы |
dot |
Точка на основе продукта указание расстояния, полученное путем вычисления отрицательного продукта dot |
[-∞, +∞] | Меньшие числа указывают на более похожие векторы |
Возвращаемое значение
Функция возвращает скалярное значение с плавающей запятой , представляющее расстояние между двумя векторами с помощью указанной метрики расстояния.
Ошибка возвращается, если distance_metric не является допустимой метрикой и если предоставленные векторы не являются типом векторов.
Examples
Сведения о базе данных, используемой в примере, можно найти на сайте GitHub: скачайте и импортируйте статью Википедии с векторными внедрениями.
В примерах предполагается наличие таблицы wikipedia_articles с именем столбца title_vector типа vector , в который хранятся встраивания заголовков статей Википедии.
title_vector Предполагается, что внедрение создается с помощью модели внедрения, например text-embedding-ada-002 или text-embedding-3-small, которая возвращает векторы с 1536 измерениями.
Дополнительные примеры, включая комплексные решения, см. в репозитории GitHub для векторного поиска базы данных SQL Azure.
А. Создание вектора из массива JSON
В следующем примере создается вектор с тремя измерениями из строки с массивом JSON.
DECLARE @v1 AS VECTOR(2) = '[1,1]';
DECLARE @v2 AS 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;
В. Возврат 10 аналогичных статей на основе названий
В следующем примере возвращаются самые похожие статьи из 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;
С. Возвращать аналогичные статьи на основе определенного векторного расстояния
В следующем примере возвращаются все аналогичные статьи для данной статьи, основанные на расстоянии косинуса между векторами заголовков, выбирая только заголовки с расстоянием менее 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;