Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: Förhandsversion av SQL Server 2025 (17.x)
Skapa ett ungefärligt index för en vektorkolumn för att förbättra prestanda för närmsta grannsökning. Mer information om hur vektorindexering och vektorsökning fungerar och skillnaderna mellan exakt och ungefärlig sökning finns i Vektorsökning och vektorindex i SQL Database Engine.
Förhandsfunktion
Den här funktionen är i förhandsversion och kan komma att ändras. För att kunna använda den här funktionen måste du aktivera PREVIEW_FEATURESden databasomfångsbegränsade konfigurationen.
Kontrollera de aktuella begränsningarna innan du använder den.
Syntax
Transact-SQL syntaxkonventioner
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" } ]
[;]
Argumentpunkter
index_name
Namnet på indexet. Indexnamn måste vara unika i en tabell men behöver inte vara unika i en databas. Indexnamn måste följa reglerna för identifierare.
objekt
Tabell där indexet skapas. Det måste vara en bastabell. Vyer, temporära tabeller, både lokala och globala, stöds inte.
vector_column
Kolumn som ska användas för att skapa vektorindexet. Den måste vara av vektortyp .
METRISK
En sträng med namnet på det avståndsmått som ska användas för att beräkna avståndet mellan de två angivna vektorerna. Följande avståndsmått stöds:
-
cosine- Cosinnavstånd -
euclidean- Euklidiska avstånd -
dot- (Negativ) Punktprodukt
TYPE
Typen av ANN-algoritm som används för att skapa indexet. Endast DiskANN stöds för närvarande. DiskANN är standardvärdet.
MAXDOP
Åsidosätter maximal grad av parallellitet konfigurationsalternativ för indexåtgärden. Mer information finns i Server-konfiguration: maximal grad av parallellitet. Använd MAXDOP för att begränsa graden av parallellitet och den resulterande resursförbrukningen för en indexgenereringsåtgärd.
max_degree_of_parallelism kan vara:
1Undertrycker parallell plangenerering.
>1
Begränsar den maximala grad av parallellitet som används i en parallell indexåtgärd till det angivna talet eller mindre baserat på den aktuella systemarbetsbelastningen.
0(standardinställning)Använder den grad av parallellitet som anges på server-, databas- eller arbetsbelastningsgruppsnivå, såvida den inte minskas baserat på den aktuella systemarbetsbelastningen.
Mer information finns i Konfigurera parallella indexåtgärder.
Anmärkning
Parallella indexåtgärder är inte tillgängliga i varje version av SQL Server. En lista över funktioner som stöds av utgåvorna av SQL Server finns i Utgåvor och funktioner som stöds i SQL Server 2022 eller Utgåvor och funktioner som stöds i SQL Server 2025 Preview.
Begränsningar
Den aktuella förhandsversionen har följande begränsningar:
- Vektorindex kan inte partitioneras. Inget partitionsstöd.
- Tabellen måste ha en enda kolumn, heltal, primärnyckelklustrerat index.
- En tabell med ett vektorindex blir skrivskyddad. Ingen dataändring tillåts när vektorindexet finns i tabellen.
- Vektorindex replikeras inte till prenumeranter.
Kända problemområden
När du skapar ett vektorindex för vissa datauppsättningar kan det för närvarande returnera följande fel:
- Fel 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
Mer information finns i Kända problem.
Behörigheter
Användaren måste ha ALTER behörighet i tabellen.
Exempel
Information om databasen som används i exemplet finns här: Ladda ned och importera Wikipedia-artikeln med vektorinbäddningar.
Exempel förutsätter att det finns en tabell med namnet wikipedia_articles med en kolumn title_vector av typen vector som lagrar rubrikens inbäddningar av Wikipedia-artiklar.
title_vector antas vara en inbäddning som genereras med en inbäddningsmodell som text-embedding-ada-002 eller text-embedding-3-small, som returnerar vektorer med 1 536 dimensioner.
Om du vill ha fler exempel, inklusive lösningar från slutpunkt till slutpunkt, går du till GitHub-lagringsplatsen Azure SQL Database Vector Search Samples.
Exempel 1
I följande exempel skapas ett vektorindex i title_vector kolumnen med hjälp av måttet cosine .
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'COSINE', TYPE = 'DISKANN');
Exempel 2
I följande exempel skapas ett vektorindex i title_vector kolumnen med hjälp av produktmåttet (negativ), dot vilket begränsar parallelliteten till 8 och lagrar vektorn i SECONDARY filgruppen.
CREATE VECTOR INDEX vec_idx
ON [dbo].[wikipedia_articles] ([title_vector])
WITH (METRIC = 'DOT', TYPE = 'DISKANN', MAXDOP = 8)
ON [SECONDARY];
Exempel 3
Ett grundläggande exempel från slutpunkt till slutpunkt med hjälp av CREATE VECTOR INDEX och den relaterade VECTOR_SEARCH funktionen. Inbäddningarna hånas. I ett verkligt scenario genereras inbäddningar med hjälp av en inbäddningsmodell och AI_GENERATE_EMBEDDINGS, eller ett externt bibliotek som OpenAI SDK.
Följande kodblock skapar falska inbäddningar med följande steg:
- Aktiverar spårningsflaggan, som krävs i den aktuella förhandsversionen.
- Skapa en exempeltabell
dbo.Articlesmed en kolumnembeddingmed datatypsvektor(5). - Infoga exempeldata med falska inbäddningsdata.
- Skapa ett vektorindex på
dbo.Articles.embedding. - Demonstrera vektorlikhetssökningen
VECTOR_SEARCH()med funktionen.
-- 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;