Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
SQL Server 2025 (17.x) Vorschau
Suchen Sie nach Vektoren, die einem bestimmten Abfragevektor ähneln, mithilfe eines ungefähren Nächstenvektorsuchalgorithmus. Weitere Informationen zur Funktionsweise der Vektorindizierung und Vektorsuche sowie der Unterschiede zwischen exakter und ungefährer Suche finden Sie unter Vektoren im SQL-Datenbankmodul.
Vorschaufunktion
Hinweis
Diese Funktion befindet sich in der Vorschau und kann geändert werden. Lesen Sie die Vorschaunutzungsbedingungen in Service Level Agreements (SLA) für Onlinedienste.
Dieses Feature befindet sich in der Vorschau. Um dieses Feature verwenden zu können, müssen Sie die folgenden Ablaufverfolgungskennzeichnungen aktivieren:
DBCC TRACEON(466, 474, 13981, -1)
Überprüfen Sie die aktuellen Einschränkungen , bevor Sie sie verwenden.
Syntax
Transact-SQL-Syntaxkonventionen
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]
Argumente
TABLE = Objekt [AS source_table_alias]
Tabelle, in der die Suche ausgeführt wird. Es muss sich um eine Basistabelle sein. Ansichten, temporäre Tabellen, sowohl lokal als auch global, werden nicht unterstützt.
COLUMN = vector_column
Die Vektorspalte, in der die Suche ausgeführt wird. Die Spalte muss ein Vektordatentyp sein.
SIMILAR_TO = query_vector
Der für die Suche verwendete Vektor. Es muss sich um eine Variable oder eine Spalte vom Vektortyp sein.
METRIC = { 'Kosinus' | 'dot' | 'euklidan' }
Die Entfernungsmetrik, die zum Berechnen des Abstands zwischen dem Abfragevektor und den Vektoren in der angegebenen Spalte verwendet wird. Ein ANN-Index (Näherste Nachbar) wird nur verwendet, wenn ein übereinstimmender ANN-Index mit derselben Metrik und in derselben Spalte gefunden wird. Wenn keine kompatiblen ANN-Indizes vorhanden sind, wird eine Warnung ausgelöst, und der KNN-Algorithmus (k-Nearest Neighbor) wird verwendet.
TOP_N = <k>
Die maximale Anzahl ähnlicher Vektoren, die zurückgegeben werden müssen. Es muss eine positive ganze Zahl sein.
result_table_alias
Der Alias wird verwendet, um auf das Resultset zu verweisen.
Ergebnissatz zurückgeben
Das zurückgegebene Resultset weist alle Spalten aus der tabelle auf, die im ARGUMENT TABLE angegeben ist, sowie die zusätzliche distance
Spalte. Die distance
Spalte enthält den Abstand zwischen dem angegebenen Vektor im ARGUMENT COLUMN und dem in SIMILAR_TO Argument angegebenen Vektor.
Einschränkungen
Die aktuelle Vorschau hat die folgenden Einschränkungen:
Nur nach dem Filtern
Die Vektorsuche erfolgt vor dem Anwenden eines Prädikats. Zusätzliche Prädikate werden erst angewendet, nachdem die meisten ähnlichen Vektoren zurückgegeben wurden. Im folgenden Beispiel werden die obersten 10 Zeilen mit Einbettungen zurückgegeben, die dem Abfragevektor @qv
am ähnlichsten sind. Anschließend wird das in der WHERE
Klausel angegebene Prädikat angewendet. Wenn keine der 10 Zeilen, die den von der Vektorsuche zurückgegebenen Vektoren zugeordnet sind, die accepted
Spalte 1 aufweist, ist das Ergebnis leer.
SELECT
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 kann nicht in Ansichten verwendet werden.
VECTOR_SEARCH
kann nicht im Textkörper einer Ansicht verwendet werden.
Beispiele
Beispiel 1
Im folgenden Beispiel werden die 10 ähnlichsten Artikel in der Pink Floyd music style
wikipedia_articles_embeddings
Tabelle gefunden.
DECLARE @qv VECTOR(1536) = AI_GENERATE_EMBEDDING(N'Pink Floyd music style' USE MODEL Ada2Embeddings);
SELECT
t.id, s.distance, t.title
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
Beispiel 2
Identisch mit Beispiel 1, aber diesmal werden die Abfragevektoren aus einer anderen Tabelle anstelle einer Variablen verwendet.
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')
) S(id, q)
;
SELECT
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
Beispiel 3
Ein einfaches End-to-End-Beispiel mit CREATE VECTOR INDEX
und der zugehörigen VECTOR_SEARCH
Funktion. Die Einbettungen werden simuliert. In einem realen Szenario werden Einbettungen mithilfe eines Einbettungsmodells und AI_GENERATE_EMBEDDINGS oder einer externen Bibliothek wie dem OpenAI SDK generiert.
Der folgende Codeblock veranschaulicht die VECTOR_SEARCH
Funktion mit simulierten Einbettungen:
- Aktiviert die Ablaufverfolgungskennzeichnung, die in der aktuellen Vorschau erforderlich ist.
- Erstellen Sie eine Beispieltabelle
dbo.Articles
mit einer Spalteembedding
mit Datentypvektor(5). - Fügen Sie Beispieldaten mit simulierten Einbettungsdaten ein.
- Erstellen Sie einen Vektorindex für
dbo.Articles.embedding
. - Veranschaulichen Sie die Vektor-Ähnlichkeitssuche mit der
VECTOR_SEARCH
Funktion.
-- Step 0: Enable Preview Feature
DBCC TRACEON(466, 474, 13981, -1);
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;