Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к: 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действия базы данных.
Прежде чем использовать его, обязательно ознакомьтесь с текущими ограничениями .
Syntax
Соглашения о синтаксисе Transact-SQL
VECTOR_SEARCH(
TABLE = object [ AS source_table_alias ]
, COLUMN = vector_column
, SIMILAR_TO = query_vector
, METRIC = { 'cosine' | 'dot' | 'euclidean' }
, TOP_N = k
) [ AS result_table_alias ]
Arguments
TABLE = объект [AS source_table_alias]
Таблица, в которой выполняется поиск. Она должна быть базовой таблицей. Представления, временные таблицы, как локальные, так и глобальные, не поддерживаются.
СТОЛБЕЦ = vector_column
Векторный столбец, в котором выполняется поиск. Столбец должен быть типом векторных данных.
SIMILAR_TO = query_vector
Вектор, используемый для поиска. Это должна быть переменная или столбец типа вектора .
METRIC = { 'cosine' | "dot" | 'euclidean' }
Метрика расстояния, используемая для вычисления расстояния между вектором запроса и векторами в указанном столбце. Индекс ANN (Приблизительный ближайший сосед) используется только в том случае, если найден соответствующий индекс ANN с той же метрикой и на том же столбце. Если нет совместимых индексов ANN, возникает предупреждение и используется алгоритм KNN (k-Ближайший сосед).
TOP_N = <k>
Максимальное количество аналогичных векторов, которые должны быть возвращены. Это должно быть положительное целое число.
result_table_alias
Псевдоним используется для ссылки на результирующий набор.
Возврат результирующий набор
Результирующий набор, возвращаемый функцией VECTOR_SEARCH , включает:
Все столбцы из таблицы, указанной в аргументе
TABLE.Дополнительный столбец с именем
distance, который представляет расстояние между вектором в столбце, указаннымCOLUMNаргументом, и вектором, предоставленным в аргументеSIMILAR_TO.
Столбец расстояния создается VECTOR_SEARCH самой функцией, а все остальные столбцы приходят из таблицы, на которую ссылается TABLE аргумент.
При использовании псевдонима для таблицы в TABLE аргументе необходимо использовать тот же псевдоним, чтобы ссылаться на его столбцы в инструкции SELECT . Нельзя использовать псевдоним, назначенный VECTOR_SEARCH для ссылки на столбцы из таблицы, указанной в TABLE. Это поведение проще понять, если вы думаете о результирующем наборе, созданном, принимая выходные данные VECTOR_SEARCH и объединяя их с данными таблицы.
Если таблица, указанная в TABLE аргументе, уже содержит столбец с именем distance, поведение будет аналогично соединению SQL между двумя таблицами, которые совместно используют имя столбца. В таких случаях необходимо использовать псевдонимы таблиц для диамбигуации ссылок на столбцы. В противном случае возникает ошибка.
Limitations
Текущая предварительная версия имеет следующие ограничения:
Только после фильтрации
Поиск вектора происходит перед применением любого предиката. Дополнительные предикаты применяются только после возврата наиболее похожих векторов. В следующем примере возвращаются первые 10 строк с внедрением, наиболее похожими на вектор @qvзапроса, а затем применяет предикат, указанный в предложении WHERE . Если ни одна из 10 строк, связанных с векторами, возвращаемыми векторным поиском, не имеет accepted значения 1, результат пуст.
SELECT TOP (10) s.id,
s.title,
r.distance
FROM VECTOR_SEARCH(
TABLE = dbo.sessions AS s,
COLUMN = embedding,
SIMILAR_TO = @qv,
METRIC = 'cosine',
TOP_N = 10
) AS r
WHERE accepted = 1
ORDER BY r.distance;
VECTOR_SEARCH нельзя использовать в представлениях
VECTOR_SEARCH Нельзя использовать в тексте представления.
Examples
Пример 1
Следующий пример находит 10 наиболее похожих Pink Floyd music style статей в wikipedia_articles_embeddings таблице.
DECLARE @qv VECTOR(1536) = AI_GENERATE_EMBEDDING(N'Pink Floyd music style' USE MODEL Ada2Embeddings);
SELECT TOP (10) s.id,
s.title,
r.distance
FROM VECTOR_SEARCH(
TABLE = [dbo].[wikipedia_articles_embeddings] as t,
COLUMN = [content_vector],
SIMILAR_TO = @qv,
METRIC = 'cosine',
TOP_N = 10
) AS s
ORDER BY s.distance
Пример 2
Аналогично примеру 1, но на этот раз векторы запросов принимают из другой таблицы вместо переменной.
CREATE TABLE #t
(
id INT,
q NVARCHAR (MAX),
v VECTOR(1536)
);
INSERT INTO #t
SELECT id,
q,
AI_GENERATE_EMBEDDINGS(q USE MODEL Ada2Embeddings)
FROM (VALUES (1, N'four legged furry animal'),
(2, N'pink floyd music style')
) AS S(id, q);
SELECT TOP (10) t.id,
s.distance,
t.title
FROM #t AS qv
CROSS APPLY VECTOR_SEARCH(
TABLE = [dbo].[wikipedia_articles_embeddings] AS t,
COLUMN = [content_vector],
SIMILAR_TO = qv.v,
METRIC = 'cosine',
TOP_N = 10
) AS s
WHERE qv.id = 2
ORDER BY s.distance;
Пример 3
Базовый комплексный пример использования CREATE VECTOR INDEX и связанной VECTOR_SEARCH функции. Внедренные макеты издеваются. В реальном мире внедрение создается с помощью модели внедрения и AI_GENERATE_EMBEDDINGS или внешней библиотеки, например OpenAI SDK.
Следующий блок кода демонстрирует функцию VECTOR_SEARCH с макетами внедрения:
- Включает флаг трассировки, необходимый в текущей предварительной версии.
- Создайте пример таблицы
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
);
GO
-- 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]');
GO
-- Step 3: Create a vector index on the embedding column
CREATE VECTOR INDEX vec_idx ON Articles(embedding)
WITH (METRIC = 'cosine', TYPE = 'diskann');
GO
-- Step 4: Perform a vector similarity search
DECLARE @qv VECTOR(5) = '[0.3, 0.3, 0.3, 0.3, 0.3]';
SELECT TOP(3)
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;