Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: 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;