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.
Gilt für: SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
Erstellen Sie einen ungefähren Index für eine Vektorspalte, um die Leistung der nächsten Nachbarnsuche zu verbessern. Weitere Informationen zur Funktionsweise der Vektorindizierung und Vektorsuche sowie der Unterschiede zwischen exakter und ungefährer Suche finden Sie unter Vektorsuche und Vektorindizes im SQL-Datenbankmodul.
Azure SQL-Datenbank und SQL-Datenbank in Fabric
Die Funktion ist noch in der Vorschau. Überprüfen Sie die aktuellen Einschränkungen , bevor Sie sie verwenden.
Hinweis
Als Previewfunktion unterliegt die in diesem Artikel vorgestellte Technologie den zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauen.
SQL Server 2025 Vorschaufunktion
In SQL Server 2025 befindet sich diese Funktion in der Vorschau und kann sich ändern. Um dieses Feature verwenden zu können, müssen Sie die PREVIEW_FEATURESDatenbankbereichskonfiguration aktivieren.
Überprüfen Sie die aktuellen Einschränkungen , bevor Sie sie verwenden.
Syntax
Transact-SQL-Syntaxkonventionen
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" } ]
[;]
Argumente
index_name
Der Name des Index. Indexnamen müssen innerhalb einer Tabelle eindeutig sein, müssen aber nicht innerhalb einer Datenbank eindeutig sein. Indexnamen müssen den Regeln von Bezeichnern entsprechen.
Objekt-
Tabelle, auf der der Index erstellt wird. Es muss sich um eine Basistabelle sein. Ansichten, temporäre Tabellen, sowohl lokal als auch global, werden nicht unterstützt.
vector_column
Spalte, die zum Erstellen des Vektorindex verwendet werden soll. Er muss vom Vektortyp sein.
METRIK
Eine Zeichenfolge mit dem Namen der Entfernungsmetrik, die zum Berechnen des Abstands zwischen den beiden angegebenen Vektoren verwendet werden soll. Die folgenden Entfernungsmetriken werden unterstützt:
-
cosine- Kosinusabstand -
euclidean- Euklidischer Abstand -
dot- (Negativ) Punktprodukt
TYPE
Der Typ des ANN-Algorithmus , der zum Erstellen des Indexes verwendet wird. Derzeit wird nur DiskANN unterstützt. DiskANN ist der Standardwert.
MAXDOP
Überschreibt den maximalen Grad an Parallelität Konfigurationsoption für den Indexvorgang. Weitere Informationen finden Sie unter Serverkonfiguration: max. Grad der Parallelität. Verwenden Sie MAXDOP, um den Grad der Parallelität und den resultierenden Ressourcenverbrauch für einen Indexbuildvorgang zu begrenzen.
max_degree_of_parallelism kann folgende Werte haben:
1Unterdrückt das Generieren paralleler Pläne.
>1
Schränkt den maximalen Grad der Parallelität ein, der in einem parallelen Indexvorgang auf die angegebene Zahl oder weniger basierend auf der aktuellen Systemauslastung verwendet wird.
0(Standardwert)Verwendet den Grad der Parallelität, die auf Server-, Datenbank- oder Workloadgruppenebene angegeben ist, es sei denn, dies ist auf der Grundlage der aktuellen Systemauslastung reduziert.
Weitere Informationen finden Sie unter Konfigurieren von parallelen Indexvorgängen.
Hinweis
Parallele Indexvorgänge sind nicht in jeder Edition von SQL Server verfügbar. Eine Liste der Funktionen, die von den Editionen von SQL Server unterstützt werden, finden Sie unter Editions und unterstützte Funktionen von SQL Server 2022 oder Editions sowie unterstützte Funktionen von SQL Server 2025.
Einschränkungen
Die aktuelle Vorschau hat die folgenden Einschränkungen:
Der Vektorindex kann nicht partitioniert werden. Keine Partitionsunterstützung.
Die Tabelle muss über eine einzelne Spalte, eine ganze Zahl, einen Primärschlüssel (gruppierter Index) verfügen.
Vektorindizes werden nicht für Abonnenten repliziert.
Eine Tabelle mit einem Vektorindex wird schreibgeschützt. Es ist keine Datenänderung zulässig, während der Vektorindex in der Tabelle vorhanden ist.
In Azure SQL Database und SQL Database in Microsoft Fabric kann man die
ALLOW_STALE_VECTOR_INDEXDatenbank-Scoped Konfiguration aufONsetzen, was die Tabelle wieder beschreibbar macht.Hinweis
Die
ALLOW_STALE_VECTOR_INDEXDatenbank-Scoped-Konfigurationsoption ist derzeit in SQL Server 2025 (17.x) nicht verfügbar.Der Vektorindex wird nicht aktualisiert, wenn neue Daten eingefügt oder in die Tabelle aktualisiert werden. Um den Vektorindex zu aktualisieren, müssen Sie ihn entfernen und neu erstellen.
Bekannte Probleme
Weitere Informationen hierzu können Sie unter " Bekannte Probleme" überprüfen.
Erlaubnisse
Der Benutzer muss über die Berechtigung für die Tabelle verfügen ALTER .
Beispiele
Details zur im Beispiel verwendeten Datenbank finden Sie hier: Laden Sie den Wikipedia-Artikel mit Vector Embeddings herunter und importieren Sie sie.
Beispiele gehen davon aus, dass eine Mit einer Spalte wikipedia_articles vom Typ title_vector benannte vector Tabelle vorhanden ist, in der die Einbettungen von Wikipedia-Artikeln des Titels gespeichert werden.
title_vector wird angenommen, dass es sich um eine einbettung handelt, die mit einem Einbettungsmodell wie text-embedding-ada-002 oder text-embedding-3-small generiert wird, das Vektoren mit 1.536 Dimensionen zurückgibt.
Weitere Beispiele, einschließlich End-to-End-Lösungen, finden Sie im GitHub-Repository für Azure SQL-Datenbankvektorsuchbeispiele.
Beispiel 1
Im folgenden Beispiel wird mithilfe der title_vector Metrik ein Vektorindex für die cosine Spalte erstellt.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'COSINE', TYPE = 'DISKANN');
Beispiel 2
Im folgenden Beispiel wird ein Vektorindex für die title_vector Spalte mit der (negativen) dot Produktmetrik erstellt, wobei die Parallelität auf 8 beschränkt und der Vektor in der SECONDARY Dateigruppe gespeichert wird.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'DOT', TYPE = 'DISKANN', MAXDOP = 8)
ON [SECONDARY];
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 erstellt simulierte Einbettungen mit den folgenden Schritten:
- Aktiviert die Ablaufverfolgungskennzeichnung, die in der aktuellen Vorschau erforderlich ist.
- Erstellen Sie eine Beispieltabelle
dbo.Articlesmit einer Spalteembeddingmit 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
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;