Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к: SQL Server 2025 (17.x)
Azure SQL Database
SQL Database в Microsoft Fabric
Создайте приблизительный индекс в столбце векторов, чтобы повысить производительность поиска ближайших соседей. Дополнительные сведения о том, как работает индексирование векторов и поиск векторов, а также различия между точным и приблизительным поиском, см. векторные индексы и векторные индексы в ядре СУБД SQL.
База данных Azure SQL и база данных SQL в платформе Fabric
Эта функция находится в предварительном просмотре. Прежде чем использовать его, обязательно ознакомьтесь с текущими ограничениями .
Замечание
В отношении технологии (как предварительной версии функции), описанной в этой статье, действуют дополнительные условия использования предварительных версий Microsoft Azure.
Функция предварительного просмотра SQL Server 2025
В SQL Server 2025 эта функция находится в предварительном просмотре и может измениться. Чтобы использовать эту функцию, необходимо включить конфигурацию с областью PREVIEW_FEATURESдействия базы данных.
Прежде чем использовать его, обязательно ознакомьтесь с текущими ограничениями .
Синтаксис
Соглашения о синтаксисе Transact-SQL
CREATE VECTOR INDEX index_name
ON object ( vector_column )
[ WITH (
[ , ] METRIC = { 'cosine' | 'dot' | 'euclidean' }
[ [ , ] TYPE = 'DiskANN' ]
[ [ , ] MAXDOP = max_degree_of_parallelism ]
) ]
[ ON { filegroup_name | "default" } ]
[;]
Аргументы
index_name
Имя индекса. Имена индексов должны быть уникальными в таблице, но не должны быть уникальными в базе данных. Имена индексов должны соответствовать правилам идентификаторов.
объекта
Таблица, в которой создается индекс. Она должна быть базовой таблицей. Представления, временные таблицы, как локальные, так и глобальные, не поддерживаются.
vector_column
Столбец, используемый для создания векторного индекса. Он должен быть типом вектора .
МЕТРИЧЕСКИЙ
Строка с именем метрики расстояния, используемой для вычисления расстояния между двумя заданными векторами. Поддерживаются следующие метрики расстояния:
-
cosine- Косинус расстояние -
euclidean- Евклидеан расстояние -
dot- (Отрицательное) Dot product
TYPE
Тип алгоритма ANN , используемого для построения индекса. В настоящее время поддерживается только DiskANN. DiskANN — это значение по умолчанию.
MAXDOP
Переопределяет параметр конфигурации максимальной степени параллелизма для операции индекса. Дополнительные сведения см. в разделе Конфигурация сервера: максимальная степень параллелизма. Используйте MAXDOP, чтобы ограничить степень параллелизма и результирующее потребление ресурсов для операции сборки индекса.
Параметр max_degree_of_parallelism может иметь одно из следующих значений:
1Подавляет формирование параллельных планов.
>1
Ограничивает максимальную степень параллелизма, используемой в параллельной операции индекса, до указанного числа или меньше на основе текущей системной рабочей нагрузки.
0(по умолчанию)Использует степень параллелизма, указанного на уровне сервера, базы данных или группы рабочей нагрузки, если не уменьшается на основе текущей системной рабочей нагрузки.
Дополнительные сведения см. в разделе Настройка параллельных операций индексов.
Замечание
Параллельные операции индексов недоступны в каждом выпуске SQL Server. Список функций, поддерживаемых версиями SQL Server, смотрите раздел «Редакции и поддерживаемые функции SQL Server 2022 » или «Редакции и поддерживаемые функции SQL Server 2025».
Ограничения
Текущая предварительная версия имеет следующие ограничения:
Векторный индекс нельзя секционировать. Нет поддержки секций.
Таблица должна иметь один столбец, целое число, кластеризованный первичный ключ.
Векторные индексы не реплицируются подписчикам.
Таблица с векторным индексом становится доступной только для чтения. Изменение данных не допускается, пока векторный индекс отсутствует в таблице.
В Azure SQL Database и SQL Database в Microsoft Fabric можно установить
ALLOW_STALE_VECTOR_INDEXконфигурацию базы данных с ограничением ,ONчто позволяет снова записывать таблицу.Замечание
Опция конфигурации с ограничением
ALLOW_STALE_VECTOR_INDEXбазы данных в настоящее время недоступна в SQL Server 2025 (17.x).Векторный индекс не обновляется при добавлении или обновлении новых данных в таблице. Чтобы обновить векторный индекс, нужно выбросить и воссоздать его.
Известные проблемы
Дополнительные сведения см. в статье "Известные проблемы".
Разрешения
Пользователь должен иметь ALTER разрешение на таблицу.
Примеры
Подробные сведения о базе данных, используемой в примере, можно найти здесь: скачайте и импортируйте статью Википедии с векторными внедрениями.
В примерах предполагается наличие таблицы wikipedia_articles с именем столбца title_vector типа vector , в который хранятся встраивания заголовков статей Википедии.
title_vector предполагается, что внедрение создается с помощью модели внедрения, такой как text-embedding-ada-002 или text-embedding-3-small, которая возвращает векторы с 1536 измерениями.
Дополнительные примеры, включая комплексные решения, см. в репозитории GitHub для векторного поиска базы данных SQL Azure.
Пример 1
В следующем примере создается векторный индекс столбца title_vectorcosine с помощью метрики.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'COSINE', TYPE = 'DISKANN');
Пример 2
В следующем примере создается векторный индекс столбца title_vector с помощью (отрицательной) dot метрики продукта, ограничения параллелизма до 8 и хранения вектора в файловой SECONDARY группе.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'DOT', TYPE = 'DISKANN', MAXDOP = 8)
ON [SECONDARY];
Пример 3
Базовый комплексный пример использования CREATE VECTOR INDEX и связанной VECTOR_SEARCH функции. Внедренные макеты издеваются. В реальном мире внедрение создается с помощью модели внедрения и AI_GENERATE_EMBEDDINGS или внешней библиотеки, например OpenAI SDK.
В следующем блоке кода создаются макеты внедрения с помощью следующих действий:
- Включает флаг трассировки, необходимый в текущей предварительной версии.
- Создайте пример таблицы
dbo.Articlesсо столбцомembeddingс вектором типа данных(5). - Вставка примеров данных с макетом внедренных данных.
- Создайте векторный индекс в
dbo.Articles.embedding. - Продемонстрировать поиск сходства векторов с функцией
VECTOR_SEARCH().
-- Step 0: Enable Preview Feature
ALTER DATABASE SCOPED CONFIGURATION
SET PREVIEW_FEATURES = ON;
GO
-- Step 1: Create a sample table with a VECTOR(5) column
CREATE TABLE dbo.Articles
(
id INT PRIMARY KEY,
title NVARCHAR(100),
content NVARCHAR(MAX),
embedding VECTOR(5) -- mocked embeddings
);
-- Step 2: Insert sample data
INSERT INTO Articles (id, title, content, embedding)
VALUES
(1, 'Intro to AI', 'This article introduces AI concepts.', '[0.1, 0.2, 0.3, 0.4, 0.5]'),
(2, 'Deep Learning', 'Deep learning is a subset of ML.', '[0.2, 0.1, 0.4, 0.3, 0.6]'),
(3, 'Neural Networks', 'Neural networks are powerful models.', '[0.3, 0.3, 0.2, 0.5, 0.1]'),
(4, 'Machine Learning Basics', 'ML basics for beginners.', '[0.4, 0.5, 0.1, 0.2, 0.3]'),
(5, 'Advanced AI', 'Exploring advanced AI techniques.', '[0.5, 0.4, 0.6, 0.1, 0.2]');
-- Step 3: Create a vector index on the embedding column
CREATE VECTOR INDEX vec_idx ON Articles(embedding)
WITH (metric = 'cosine', type = 'diskann');
-- Step 4: Perform a vector similarity search
DECLARE @qv VECTOR(5) = '[0.3, 0.3, 0.3, 0.3, 0.3]';
SELECT
t.id,
t.title,
t.content,
s.distance
FROM
VECTOR_SEARCH(
table = Articles AS t,
column = embedding,
similar_to = @qv,
metric = 'cosine',
top_n = 3
) AS s
ORDER BY s.distance, t.title;