Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2025 (17.x) Preview
Maak een geschatte index op een vectorkolom om de prestaties van dichtstbijzijnde buren te verbeteren. Raadpleeg vectorzoekopdrachten en vectorindexen in de SQL Database Engine voor meer informatie over hoe vectorindexering en vectorzoekopdrachten werken, en de verschillen tussen exacte en geschatte zoekopdrachten.
Previewfunctie
Deze functie is in preview en kan worden gewijzigd. Als u deze functie wilt gebruiken, moet u de configuratie van het PREVIEW_FEATURESdatabasebereik inschakelen.
Zorg ervoor dat u de huidige beperkingen bekijkt voordat u deze gebruikt.
Syntaxis
Transact-SQL syntaxis-conventies
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" } ]
[;]
Argumenten
index_name
De naam van de index. Indexnamen moeten uniek zijn binnen een tabel, maar hoeven niet uniek te zijn binnen een database. Indexnamen moeten de regels van id's volgen.
object
Tabel waarop de index wordt gemaakt. Het moet een basistabel zijn. Weergaven, tijdelijke tabellen, zowel lokaal als globaal, worden niet ondersteund.
vector_column
Kolom die moet worden gebruikt om de vectorindex te maken. Het moet van vectortype zijn.
METRIEK
Een tekenreeks met de naam van de metrische afstand die moet worden gebruikt om de afstand tussen de twee opgegeven vectoren te berekenen. De volgende metrische gegevens over afstand worden ondersteund:
-
cosine- Cosinusafstand -
euclidean- Euclidische afstand -
dot- (Negatief) Dot-product
TYPE
Het type ANN-algoritme dat wordt gebruikt om de index te bouwen. Alleen DiskANN wordt momenteel ondersteund. DiskANN is de standaardwaarde.
MAXDOP
Overschrijft de maximale mate van parallelle uitvoering configuratieoptie voor de indexbewerking. Zie Serverconfiguratie: maximale mate van parallelle uitvoeringvoor meer informatie. Gebruik MAXDOP om de mate van parallelle uitvoering en het resulterende resourceverbruik voor een indexbuildbewerking te beperken.
max_degree_of_parallelism kan het volgende zijn:
1Onderdrukt het genereren van parallelle plannen.
>1
Hiermee beperkt u de maximale mate van parallelle uitvoering die wordt gebruikt in een parallelle indexbewerking tot het opgegeven getal of minder op basis van de huidige systeemworkload.
0(standaard)Maakt gebruik van de mate van parallelle uitvoering die is opgegeven op server-, database- of workloadgroepsniveau, tenzij verminderd op basis van de huidige systeemworkload.
Zie Parallelle indexbewerkingen configurerenvoor meer informatie.
Opmerking
Parallelle indexbewerkingen zijn niet beschikbaar in elke editie van SQL Server. Zie Edities en ondersteunde functies van SQL Server 2022 of Edities en ondersteunde functies van SQL Server 2022 en ondersteunde functies van SQL Server 2025 Preview voor een lijst met functies die worden ondersteund door de edities van SQL Server.
Beperkingen
De huidige preview heeft de volgende beperkingen:
- Vectorindex kan niet worden gepartitioneerd. Geen partitieondersteuning.
- De tabel moet één kolom, geheel getal, geclusterde primaire sleutelindex hebben.
- Een tabel met een vectorindex wordt alleen-lezen. Er is geen gegevenswijziging toegestaan terwijl de vectorindex aanwezig is in de tabel.
- Vectorindexen worden niet gerepliceerd naar abonnees.
Bekende problemen
Wanneer u momenteel een vectorindex voor sommige gegevenssets maakt, kan dit de volgende fouten retourneren:
- Fout 9829:
STRING_AGG aggregation result exceeded the limit of 8000 bytes. Use LOB types to avoid result truncation. - 42234:
Internal SQL error during DiskANN graph build
Raadpleeg bekende problemen voor meer informatie.
Machtigingen
De gebruiker moet gemachtigd zijn ALTER voor de tabel.
Voorbeelden
Details van de database die in het voorbeeld wordt gebruikt, vindt u hier: Download en importeer het Wikipedia-artikel met Vector Embeddings.
In voorbeelden wordt ervan uitgegaan dat er een tabel bestaat met wikipedia_articles een kolom title_vector van het type vector waarin de insluitingen van Wikipedia-artikelen van de titel worden opgeslagen.
title_vector wordt ervan uitgegaan dat het een insluitingsmodel is dat wordt gegenereerd met een insluitmodel, zoals tekst-embedding-ada-002 of tekst-insluiten-3-klein, dat vectoren retourneert met 1536 dimensies.
Voor meer voorbeelden, waaronder end-to-end-oplossingen, gaat u naar de GitHub-opslagplaats Met voorbeelden van Azure SQL Database Vector Search.
Voorbeeld 1
In het volgende voorbeeld wordt een vectorindex voor de title_vector kolom gemaakt met behulp van de cosine metrische waarde.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'COSINE', TYPE = 'DISKANN');
Voorbeeld 2
In het volgende voorbeeld wordt een vectorindex voor de title_vector kolom gemaakt met behulp van de (negatieve) dot productmetrie, waardoor de parallelle uitvoering wordt beperkt tot 8 en de vector in de SECONDARY bestandsgroep wordt opgeslagen.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'DOT', TYPE = 'DISKANN', MAXDOP = 8)
ON [SECONDARY];
Voorbeeld 3
Een eenvoudig end-to-end-voorbeeld met behulp van CREATE VECTOR INDEX en de gerelateerde VECTOR_SEARCH functie. De insluitingen worden gesimuleerd. In een praktijkscenario worden insluitingen gegenereerd met behulp van een insluitmodel en AI_GENERATE_EMBEDDINGS, of een externe bibliotheek zoals OpenAI SDK.
In het volgende codeblok worden gesimuleerde insluitingen gemaakt met de volgende stappen:
- Hiermee schakelt u de traceringsvlag in die nodig is in de huidige preview.
- Maak een voorbeeldtabel
dbo.Articlesmet een kolomembeddingmet gegevenstypevector (5). - Voeg voorbeeldgegevens in met gesimuleerde insluitingsgegevens.
- Maak een vectorindex op
dbo.Articles.embedding. - Demonstreert de vector-overeenkomstenzoekopdracht met de
VECTOR_SEARCH()functie.
-- 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;