CREATE VECTOR INDEX (Transact-SQL)

Gäller för: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Skapa ett ungefärligt index på en vektorkolumn för att förbättra prestandan i närmaste granne-sökningar. För att lära dig mer om hur vektorindexering och vektorsökning fungerar, samt skillnaderna mellan exakt och approximativ sökning, se Vektorsökning och vektorindex i SQL Database Engine.

Tillgänglighet av funktioner

  • Vector index och VECTOR_SEARCH är allmänt tillgängliga (GA) i Azure SQL Database, SQL-databas i Microsoft Fabric och Azure SQL Managed Instance med policyn för alltid uppdateringup-todatum.
  • Vector index och VECTOR_SEARCH är förhandsvisningsfunktioner i SQL Server 2025 (17.x) och i Azure SQL Managed Instance med SQL Server 2025-uppdateringspolicyn.

Varning

Avskrivningsmeddelande: Vektorindex skapade med en tidigare datastruktur stöds i den nuvarande versionen men kommer att tas bort i en framtida version. För att säkerställa framtida kompatibilitet och tillgång till de senaste vektorsökningsfunktionerna, migrera befintliga vektorindex genom att använda stegen i avsnittet Migrering från tidigare vektorindexversioner .

SQL Server 2025 förhandsgranskningsfunktion

I SQL Server 2025 och Azure SQL Managed Instance i SQL Server 2025-uppdateringspolicyn är vektorindex och funktionen VECTOR_SEARCH i förhandsvisning och kan ändras. För att använda denna funktion måste du aktivera PREVIEW_FEATURESdatabasens scoped-konfiguration.

Kontrollera de nuvarande begränsningarna innan du använder den.

Anmärkning

Den senaste versionen av vektorindex finns i Azure SQL Database, SQL-databas i Microsoft Fabric och Azure SQL Managed Instance med policyn för alltidup-todatumuppdatering.

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:

  • 1

    Undertrycker 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.

    Parallella indexåtgärder är inte tillgängliga i varje version av SQL Server. För en lista över funktioner som stöds av utgåvorna i SQL Server, se Utgåvor och stödda funktioner i SQL Server 2025.

Uppgradera vektorindex till den senaste versionen

Viktigt!

Avvecklingsmeddelande: Den nuvarande versionen stöder vektorindex skapade med en tidigare datastruktur, men en framtida version kommer att pensionera det stödet. För att säkerställa framtida kompatibilitet och tillgång till de senaste vektorsökningsfunktionerna, migrera befintliga vektorindex genom att använda följande steg.

Nyligen skapade vektorindex använder automatiskt den senaste datastrukturen, vilket ger:

  • Fullständigt DML-stöd: Tar bort den tidigare begränsningen som gjorde vektorindexerade tabeller skrivskyddade när indexet skapades. Du kan nu utföra INSERT, UPDATE, DELETE, och MERGE operationer samtidigt som du behåller vektorindexfunktionalitet med automatisk, realtidsindexunderhåll.
  • Iterativ filtrering: Applicerar predikat i klausulen WHERE under vektorsökningsprocessen, inte efter hämtning.
  • Optimerarstyrt: Frågeoptimeraren avgör automatiskt om DiskANN-indexet eller kNN-sökningen ska användas baserat på frågeegenskaper.
  • Avancerad kvantisering: Integrerar vektorkvantiseringstekniker för att ge bättre lagringseffektivitet och snabbare frågeprestanda. Dessa optimeringar är transparenta för användarna.

För detaljer om tidigare begränsningar i vektorindexversioner, se avsnittet Begränsningar och överväganden.

Migrera från tidigare vektorindexversioner

För att aktivera de senaste funktionerna måste du ta bort och återskapa vektorindex som använder en tidigare version. I det här avsnittet beskrivs hur du identifierar, migrerar och verifierar vektorindexversioner.

Steg 1: Identifiera befintliga vektorindex

Använd följande fråga för att identifiera vektorindex som kräver migrering:

SELECT
    i.name AS index_name,
    t.name AS table_name,
    JSON_VALUE(v.build_parameters, '$.Version') AS index_version,
    CASE
        WHEN JSON_VALUE(v.build_parameters, '$.Version') >= '3'
            THEN 'Uses latest version (no migration required)'
        WHEN JSON_VALUE(v.build_parameters, '$.Version') < '3'
            THEN 'Created using an earlier version (migration recommended)'
        ELSE 'Unknown format'
    END AS migration_status
FROM sys.vector_indexes AS v
    INNER JOIN sys.indexes AS i
        ON v.object_id = i.object_id
        AND v.index_id = i.index_id
    INNER JOIN sys.tables AS t
        ON v.object_id = t.object_id
ORDER BY t.name, i.name;
Så här tolkas resultaten

Använder den senaste versionen

  • Stöder redan iterativ filtrering, fullt DML-stöd, optimerardriven exekvering och förbättrad kvantisering.
  • Ingen migrering krävs.

Skapades med en tidigare version

  • Använder äldre postfilterbeteende.
  • Stöder inte de senaste vektorsökningsfunktionerna.
  • Migration rekommenderas starkt för att säkerställa framtida kompatibilitet.

Steg 2: Släpp och återskapa vektorindexet

Du kan inte uppgradera vektorindex som använder ett tidigare format. Om du vill aktivera de senaste DiskANN-funktionerna släpper du och återskapar indexet.

Varning

Tjänstpåverkan: Om du släpper ett vektorindex inaktiveras omedelbart ungefärlig vektorsökning i den berörda tabellen tills indexet återskapas. Planera migreringar under underhållsperioder för produktionssystem.

Ta bort det befintliga indexet
DROP INDEX vec_idx ON dbo.wikipedia_articles;
Återskapa indexet
CREATE VECTOR INDEX vec_idx
    ON dbo.wikipedia_articles (title_vector)
    WITH (
        TYPE = 'DISKANN',
        METRIC = 'COSINE'
    );

Anmärkning

Vektorindex som skapas med den aktuella CREATE VECTOR INDEX satsen använder automatiskt det senaste DiskANN-formatet. Inga ytterligare alternativ eller flaggor krävs.

Steg 3: Verifiera indexversionen

Efter att du har skapat indexet igen, kontrollera att det använder den senaste versionen:

SELECT
    i.name AS index_name,
    t.name AS table_name,
    JSON_VALUE(v.build_parameters, '$.Version') AS index_version
FROM sys.vector_indexes AS v
    INNER JOIN sys.indexes AS i
        ON v.object_id = i.object_id
        AND v.index_id = i.index_id
    INNER JOIN sys.tables AS t
        ON v.object_id = t.object_id
WHERE i.name = 'vec_idx';

Kolumnen index_version ska visas 3 för den senaste versionen.

Felbeteende med inkompatibilitet av version

Om du försöker använda parametern TOP_N i VECTOR_SEARCH med ett vektorindex för den senaste versionen returnerar SQL Server följande fel:

Msg 42274, Level 16, State 1
Vector search with version 3 index does not support explicit TOP_N parameter.

Lös det här felet genom att ta bort parametern TOP_N från VECTOR_SEARCH och använda syntaxen SELECT TOP (N) WITH APPROXIMATE i stället. Detaljerad information finns i Fel med äldre syntax.

Begränsningar och överväganden

Tidigare versionsbegränsningar för vektorindex

Tidigare versioner med vektorindex har följande begränsningar. Information om hur du kontrollerar indexversionen finns i Verifiera indexversionen.

  • Endast efter filtrering: Predikat tillämpas först efter vektorhämtning, inte under sökprocessen. Detta beteende kan resultera i färre rader än väntat när du applicerar filter.

  • Skrivskyddade tabeller: Tabeller med vektorindex är skrivskyddade. Du kan inte utföra DML-operationer (INSERT, UPDATE, DELETE, ) MERGEefter att ha skapat vektorindexet. Använd konfigurationen ALLOW_STALE_VECTOR_INDEX med databasomfattning för att aktivera DML-åtgärder om du kan tolerera inaktuella sökresultat.

  • Manuell TOP_N inställning: Du måste manuellt justera parametern TOP_N i VECTOR_SEARCH för att kompensera för efterfiltrering. Man behöver ofta överdimensionerade värden för att få det önskade antalet resultat.

Aktuella begränsningar (gäller även för den senaste versionen)

Den aktuella förhandsversionen har följande begränsningar:

  • Du kan inte partitionera vektorindex.

  • Tabellen måste ha ett primärnyckelklustrat index på en int-kolumn .

  • Vektorindex replikeras inte till prenumeranter.

  • Du kan inte trunkera tabeller med vektorindex genom att använda TRUNCATE TABLE. Om du vill ta bort alla data släpper du vektorindexet först, trunkerar tabellen, fyller på med minst 100 rader och återskapar sedan indexet. För mer information, se TRUNCATE TABLE restriktioner.

  • Vektorindex kan inte distribueras med DacPac. Du kan distribuera databaser som innehåller vektorindex med BACPAC från och med DacFx version 170.5.96. Vektorindex skapas efter att tabelldata har laddats, och den indexerade tabellen måste innehålla minst 100 rader med icke-vektorvärdenNULL .

    Vid en schemabaserad DACPAC-utplacering kan utplaceringen lyckas utan att skapa vektorindexet om måltabellen innehåller färre än 100 rader med icke-vektorvärdenNULL . DacFx skapar inte automatiskt det hoppade indexet när rader läggs till senare. Efter att minst 100 kvalificerande rader har laddats, skapa vektorindexet genom att använda ett post-distributionsskript, publicera DACPAC igen eller köra CREATE VECTOR INDEX.

    Efter en import eller distribution, verifiera att vektorindexet skapades genom att fråga sys.vector_indexes.

    Som en lösning före DacFx version 170.5.96, släpp vektorindex innan du exporterar databasen och återskapa indexen efter importen.

Minimikrav för data

Vektorindex kräver ett minimum antal rader med icke-vektorvärdenNULL innan du kan skapa indexet.

  • Minsta radantal: Tabellen måste ha minst 100 rader med icke-vektorvärdenNULL .
  • Felbeteende: Om du försöker skapa ett vektorindex i en tabell med färre än 100 rader, misslyckas operationen och returnerar felmeddelandet Msg 42266.

Exempelfel:

Msg 42266, Level 16, State 1
Cannot create a vector index. The table contains only 8 rows with non-null vectors, 
but at least 100 are required for vector index creation.

Bästa praxis: Fyll i tabellen med minst 100 rader innan du skapar vektorindexet. För utvecklings- och testsituationer där du behöver färre rader, VECTOR_SEARCH fungerar utan index genom att använda en brute-force scan-metod. Denna metod försämrar dock prestandan med större datamängder.

DML-stöd

När du skapar ett DiskANN-vektorindex med den senaste versionen är tabellen inte längre skrivskyddad. Du kan ändra data genom att använda standardoperationer för datamanipulationsspråk (DML), och ändringarna visas automatiskt i vektorsökresultaten.

Den här funktionen gör vektorsökning lämplig för aktiva transaktionsarbetsbelastningar där data ändras över tid.

Beteendeanteckningar

  • DML-åtgärder kräver inte att vektorindexet släpps eller återskapas.
  • Ändringar visas för vektorsökningsfrågor efter transaktionsincheckningarna.
  • Om du vill ersätta storskaliga data (till exempel ta bort de flesta rader och infoga en helt ny uppsättning inbäddningar) bör du överväga att släppa och återskapa vektorindexet efter datainläsningen för att säkerställa optimal sökkvalitet.

Anmärkning

DML-stöd finns endast med vektorindex skapade med den senaste versionen. Tidigare versioner kräver att tabeller är skrivskyddade eller använder ALLOW_STALE_VECTOR_INDEX databasomfattningskonfigurationen.

Övervaka underhåll av vektorindex

Vektorindex utför bakgrundsunderhåll för att införliva DML-ändringar. Använd sys.dm_db_vector_indexes dynamisk hanteringsvy för att övervaka status för indexhälsa och underhållsuppgifter.

Kombinera vektorindex med traditionella index

Vektorindex fungerar tillsammans med traditionella B-trädindex för att ge optimala frågeprestanda. När du använder iterativ filtrering med VECTOR_SEARCHbör du överväga att skapa traditionella index för kolumner som används i filterpredikat.

Detaljerad information om iterativt filtreringsbeteende och hur det skiljer sig från tidigare versioner finns i Iterativt filtreringsbeteende.

Tips/Råd

Frågeoptimeraren väljer automatiskt den bästa körningsstrategin (ungefärligt närmaste grannindex jämfört med kNN-sökning). Använd tabelltipset FORCE_ANN_ONLY för att framtvinga användningen av det ungefärliga närmaste grannindexet. Mer information finns i Tabelltips för vektorsökning.

Exempelscenario:

-- Create vector index for similarity search
CREATE VECTOR INDEX idx_embeddings_vector
ON product_embeddings(embedding)
WITH (METRIC = 'cosine');

-- Create traditional index for filter columns
CREATE NONCLUSTERED INDEX idx_embeddings_filters
ON product_embeddings(category);

Prestandafördelar:

När du kör frågor med iterativ filtrering använder SQL Server-frågeoptimeraren båda indextyperna:

DECLARE @qv VECTOR(1536) = AI_GENERATE_EMBEDDINGS(N'wireless headphones' USE MODEL EmbeddingModel);

SELECT TOP (10) WITH APPROXIMATE
    p.name,
    p.price,
    vs.distance
FROM products p
INNER JOIN VECTOR_SEARCH(
    TABLE = product_embeddings AS e,
    COLUMN = embedding,
    SIMILAR_TO = @qv,
    METRIC = 'cosine'
) AS vs ON p.id = e.product_id
WHERE e.approved = 1             
  AND e.category = 'Electronics'  -- Can use traditional index
ORDER BY vs.distance;

I den här frågan:

  • Vektorindexet identifierar liknande inbäddningar baserat på frågevektorn
  • Det traditionella indexet för (category) filtrerar kandidater effektivt under den iterativa sökprocessen

Den här sammansatta strategin kan förbättra frågeprestanda avsevärt jämfört med att bara använda ett vektorindex, särskilt när filterpredikat har hög selektivitet.

Vägledning för datakvalitet och underhåll för vektorindex

Undvik datauppsättningar med hög duplicerade inbäddningar

Vektorindexering fungerar bäst när inbäddningar representerar olika semantiskt innehåll. Använd inte dataset med hög andel dubblettvektorer för vektorindexering.

Hög duplicering kan leda till:

  • Dålig resultatkvalitet: Duplicerade vektorer visas upprepade gånger i resultat, vilket trängs ut mer relevanta semantiska matchningar.
  • Minskad effektivitet: Duplicerade inbäddningar förskjuter bättre grannar, vilket minskar nyttan av likhetssökning.
  • Onödig resursanvändning: Vektorindex är dyra att skapa och underhålla, och dubbletter lägger till kostnader utan att lägga till värde.

Bästa praxis: Deduplicera inbäddningar innan du skapar ett vektorindex för att förbättra både prestanda och resultatkvalitet.

Storskaliga scenarier för databyte

Vektorindex stöder infogningar, uppdateringar och borttagningar. Men när du ersätter de flesta eller alla inbäddningar—till exempel att bädda om en datamängd med en ny modell—kanske det befintliga indexet inte längre speglar den nya datafördelningen.

I storskaliga ersättningsscenarier:

  • Vektorsökningar fortsätter att ge giltiga resultat.
  • Återkallnings- och rankingkvaliteten kan försämras, eftersom indexstrukturen byggdes för en annan inbäddningsfördelning.

Bästa praxis: När du utför nästan fullständig dataersättning (ta bort och infoga nya inbäddningar) släpper och återskapar du vektorindexet när du har läst in nya data. Om du återskapar indexet ser du till att det är optimerat för den nya inbäddningsdistributionen och återställer förutsägbart frågebeteende.

Kända problemområden

Mer information finns i Kända problem.

Behörigheter

Du behöver ALTER tillstånd på bordet.

Exempel

Ladda ned och importera Wikipedia-artikeln med exempel på vektorinbäddningar .

Dessa exempel antar en tabell med en wikipedia_articles kolumn title_vector av typ vector som lagrar titelinbäddningar från Wikipedia-artiklar. Den title_vector använder en embeddingmodell som text-embedding-ada-002 eller text-embedding-3-small, som returnerar vektorer med 1 536 dimensioner.

För fler exempel, inklusive end-to-end-lösningar, se Azure SQL Database Vector Search Samples GitHub-repo.

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

Följande exempel skapar ett vektorindex på kolumnen title_vector med hjälp av (negativa) dot produktmetriken. Den begränsar parallellismen 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

Detta exempel använder CREATE VECTOR INDEX och den relaterade VECTOR_SEARCH funktionen. Inbäddningarna hånas. I ett verkligt scenario, generera embeddings genom att använda en embeddingsmodell och AI_GENERATE_EMBEDDINGS, eller använda ett externt bibliotek som OpenAI SDK.

Anmärkning

De senaste versionernas vektorindex kräver minst 100 datarader innan du kan skapa indexet. Det här exemplet infogar 100 rader för att uppfylla det här kravet. Mer information finns i Minimikrav för data.

Följande kodblock visar CREATE VECTOR INDEX med falska inbäddningar:

  1. Aktivera förhandsgranskningsfunktionen (krävs endast för SQL Server 2025; behövs inte för Azure SQL Database eller SQL Database in Fabric).
  2. Skapa en exempeltabell dbo.Articles med en kolumn embedding med datatypsvektor(5).
  3. Infoga 100 rader med exempeldata med falska inbäddningsdata.
  4. Skapa ett vektorindex på dbo.Articles.embedding.
  5. Demonstrera vektorlikhetssökningen VECTOR_SEARCH med funktionen.
-- Step 0: Enable Preview Feature (SQL Server 2025 only)
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 (100 rows required for latest version indexes)
INSERT INTO Articles (id, title, content, embedding)
SELECT
    value AS id,
    'Article ' || [value],
    'Content for article ' || [value],
    CAST(JSON_ARRAY(
        CAST(value * 0.01 AS FLOAT),
        CAST(value * 0.02 AS FLOAT),
        CAST(value * 0.03 AS FLOAT),
        CAST(value * 0.04 AS FLOAT),
        CAST(value * 0.05 AS FLOAT)
    ) AS VECTOR(5))
FROM GENERATE_SERIES(1, 100);
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) WITH APPROXIMATE
    t.id,
    t.title,
    t.content,
    s.distance
FROM
    VECTOR_SEARCH(
        TABLE = Articles AS t,
        COLUMN = embedding,
        SIMILAR_TO = @qv,
        METRIC = 'cosine'
    ) AS s
ORDER BY s.distance, t.title;

Syntaxen för frågor beror på vektorindexversionen:

Vektorindexversion Syntaxexempel
Senaste versionen Använd SELECT TOP (N) WITH APPROXIMATE utan TOP_N parameter
Tidigare versioner (inaktuella) Använda TOP_N parametern i VECTOR_SEARCH funktionen

För tidigare versionsindex (inaktuell syntax):

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;

Exempel 4: Arbeta med DML-åtgärder

Följande exempel demonstrerar DML-operationer på en tabell med ett vektorindex skapat med den senaste versionen.

Ta bort rader

Om du tar bort rader tas de bort från både tabell- och vektorsökningsresultaten.

DELETE FROM dbo.wikipedia_articles
WHERE id = 12345;

Efter att borttagningsoperationen är klar visas inte den borttagna raden längre i vektorsökningsfrågor.

Infoga nya rader

Du kan infoga nya rader med inbäddningar och de blir omedelbart sökbara utan att indexet återskapas.

INSERT INTO dbo.wikipedia_articles (id, title, title_vector)
VALUES (
    99999,
    N'Quantum Computing Basics',
    AI_GENERATE_EMBEDDINGS(N'Quantum Computing Basics' USE MODEL Ada2Embeddings)
);

Nyligen infogade inbäddningar införlivas automatiskt i vektorindexet och kan returneras av efterföljande vektorsökningsfrågor.

Uppdatera befintliga rader

Uppdatering av vektor- eller icke-vektorkolumner stöds fullt ut.

DECLARE @new_embedding VECTOR(1536);
SET @new_embedding = AI_GENERATE_EMBEDDINGS(N'Updated article title' USE MODEL Ada2Embeddings);

UPDATE dbo.wikipedia_articles
SET title_vector = @new_embedding,
    title = N'Updated article title'
WHERE id = 50000;

Om du uppdaterar en vektorkolumn uppdateras indexet därefter så att framtida vektorsökningar använder den nya inbäddningen.

Användning MERGE för komplexa operationer

Med instruktionen MERGE kan du utföra åtgärder för att infoga, uppdatera och ta bort i en enda instruktion.

MERGE INTO dbo.wikipedia_articles AS target
USING (
    SELECT 
        id,
        title,
        AI_GENERATE_EMBEDDINGS(title USE MODEL Ada2Embeddings) AS title_vector
    FROM dbo.staging_articles
) AS source
ON target.id = source.id
WHEN MATCHED THEN
    UPDATE SET 
        title = source.title,
        title_vector = source.title_vector
WHEN NOT MATCHED BY TARGET THEN
    INSERT (id, title, title_vector)
    VALUES (source.id, source.title, source.title_vector)
WHEN NOT MATCHED BY SOURCE AND target.id > 100000 THEN
    DELETE;

Vektorindexet uppdateras automatiskt för att spegla alla ändringar som görs av satsen MERGE .