CREATE VECTOR INDEX (Transact-SQL) (Ukázka)

Platí na: SQL Server 2025 (17.x) Azure SQL DatabaseSQL database in Microsoft Fabric

Vytvořte přibližný index ve sloupci vektoru pro zlepšení výkonu hledání nejbližších sousedů. Další informace o tom, jak funguje vektorové indexování a vektorové vyhledávání, a rozdíly mezi přesným a přibližným vyhledáváním najdete v tématu Vektorové vyhledávání a vektorové indexy v databázovém stroji SQL.

Azure SQL Database a databáze SQL ve službě Fabric

Funkce je v náhledu. Než budete pokračovat, zkontrolujte omezení a důležité informace .

Poznámka:

Jako funkce ve verzi Preview platí, že technologie uvedená v tomto článku podléhá dodatečným podmínkám použití pro verze Microsoft Azure Preview.

Výstraha

Oznámení o vyřazení: Vektorové indexy vytvořené pomocí starší datové struktury se v aktuální verzi podporují, ale v budoucí verzi se vyřadí z provozu. Pokud chcete zajistit budoucí kompatibilitu a přístup k nejnovějším funkcím vyhledávání vektorů, migrujte existující indexy vektorů pomocí kroků v části Migrace z dřívějších verzí indexu vektorů .

Regionální dostupnost

Tato funkce se nasazuje napříč Azure SQL Database a databází SQL v Microsoft Fabric. Během zavádění se dostupnost a chování můžou lišit podle oblasti a verze indexu. Pokud funkce nebo syntaxe není dostupná, bude dostupná automaticky po dokončení nasazení. Aktuální stav dostupnosti v jednotlivých oblastech najdete v tématu Dostupnost funkcí v jednotlivých oblastech.

Funkce Preview SQL Server 2025

V SQL Server 2025 je tato funkce v náhledu a může se změnit. Chcete-li použít tuto funkci, musíte povolit PREVIEW_FEATURES databáze.

Než je začnete používat, nezapomeňte si prohlédnout aktuální omezení .

Poznámka:

Nejnovější verze vektorových indexů je v současné době dostupná pouze v Azure SQL Database a v databázi SQL v Microsoft Fabric.

Syntaxe

Transact-SQL konvence syntaxe

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" } ]
[;]

Argumenty

index_name

Název indexu. Názvy indexů musí být v tabulce jedinečné, ale nemusí být jedinečné v rámci databáze. Názvy indexů musí dodržovat pravidla identifikátorů .

objekt

Tabulka, na které je index vytvořen. Musí to být základní tabulka. Zobrazení, dočasné tabulky, místní i globální, se nepodporují.

vector_column

Sloupec, který se má použít k vytvoření vektorového indexu. Musí být typu vektoru .

METRICKÝ

Řetězec s názvem metriky vzdálenosti, který se má použít k výpočtu vzdálenosti mezi těmito dvěma vektory. Podporují se následující metriky vzdálenosti:

  • cosine - Kosinus vzdálenost
  • euclidean - Euklidská vzdálenost
  • dot - (záporná) tečka

TYPE

Typ algoritmu ANN , který se používá k sestavení indexu. V současné době se podporuje pouze DiskANN. DiskANN je výchozí hodnota.

MAXDOP

Přepíše maximální stupeň paralelismu možnost konfigurace pro operaci indexu. Další informace naleznete v tématu Konfigurace serveru: maximální stupeň paralelismu. Pomocí MAXDOP omezte stupeň paralelismu a výsledné spotřeby prostředků pro operaci sestavení indexu.

max_degree_of_parallelism může být:

  • 1

    Potlačuje vytvoření paralelního plánu.

  • >1

    Omezuje maximální stupeň paralelismu použitý v operaci paralelního indexu na zadané číslo nebo méně na základě aktuální systémové úlohy.

  • 0 (výchozí)

    Používá stupeň paralelismu zadaný na úrovni serveru, databáze nebo skupiny úloh, pokud není omezen na základě aktuální systémové úlohy.

Další informace najdete v tématu Konfigurace paralelních operací indexu.

Poznámka:

Paralelní operace indexu nejsou k dispozici v každé edici SQL Serveru. Pro seznam funkcí podporovaných edicí SQL Serveru viz Edice a podporované funkce SQL Server 2022 nebo Edice a podporované funkce SQL Server 2025.

Upgrade vektorových indexů na nejnovější verzi

Důležité

Oznámení o vyřazení: Vektorové indexy vytvořené pomocí starší datové struktury se v aktuální verzi podporují, ale v budoucí verzi se vyřadí z provozu. Pokud chcete zajistit budoucí kompatibilitu a přístup k nejnovějším funkcím vyhledávání vektorů, pomocí následujícího postupu migrujte existující indexy vektorů.

Nově vytvořené vektorové indexy automaticky používají nejnovější datovou strukturu, která poskytuje:

  • Úplná podpora DML: Odebere předchozí omezení, které po vytvoření indexu indexovaly vektorové tabulky jen pro čtení. Nyní můžete provádět INSERToperace , UPDATE, DELETE, a MERGE přitom zachovat funkčnost vektorového indexu s automatickou, v reálném čase údržbou indexu
  • Iterativní filtrování: Predikáty v klauzuli WHERE se použijí během procesu hledání vektorů, ne po načtení.
  • Optimalizátor řízený: Optimalizátor dotazů automaticky určuje, jestli se má použít index DiskANN nebo vyhledávání kNN na základě charakteristik dotazu.
  • Pokročilá kvantování: Techniky kvantování vektorů byly integrované, aby poskytovaly lepší efektivitu úložiště a rychlejší výkon dotazů. Tyto optimalizace jsou pro uživatele transparentní.

Podrobnosti o omezeních starší verze indexu vektorů najdete v části Omezení a důležité informace.

Migrace ze starších verzí vektorového indexu

Vektorové indexy vytvořené pomocí starší verze je nutné vynechat a znovu vytvořit, aby se povolily nejnovější funkce. Tato část vysvětluje, jak identifikovat, migrovat a ověřit verze vektorových indexů.

Krok 1: Identifikace existujících indexů vektorů

Pomocí následujícího dotazu identifikujte vektorové indexy, které vyžadují migraci:

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;
Jak interpretovat výsledky

Používá nejnovější verzi.

  • Podpora iterativního filtrování, úplná podpora DML, optimalizované spouštění a vylepšené kvantování
  • Nevyžaduje se žádná migrace.

Vytvořeno pomocí starší verze

  • Používá starší chování po filtrování.
  • Nepodporuje nejnovější možnosti vyhledávání vektorů.
  • Migrace se důrazně doporučuje zajistit budoucí kompatibilitu.

Krok 2: Vyřazení a opětovné vytvoření vektorového indexu

Vektorové indexy vytvořené ve starším formátu nelze upgradovat. Pokud chcete povolit nejnovější funkce DiskANN, odstraňte a znovu vytvořte index.

Výstraha

Dopad služby: Vyřazení vektorového indexu okamžitě zakáže přibližné vektorové vyhledávání v ovlivněné tabulce, dokud se index znovu nevytvoří. Naplánujte migrace během časových období údržby pro produkční systémy.

Vyřazení existujícího indexu
DROP INDEX vec_idx ON dbo.wikipedia_articles;
Opětovné vytvoření indexu
CREATE VECTOR INDEX vec_idx
    ON dbo.wikipedia_articles (title_vector)
    WITH (
        TYPE = 'DISKANN',
        METRIC = 'COSINE'
    );

Poznámka:

Vektorové indexy vytvořené pomocí aktuálního CREATE VECTOR INDEX příkazu automaticky používají nejnovější formát DiskANN. Nejsou vyžadovány žádné další možnosti ani příznaky.

Krok 3: Ověření verze indexu

Po odpočinku ověřte, že index používá nejnovější verzi:

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';

Sloupec index_version by se měl zobrazit 3 pro nejnovější verzi.

Chování chyby s nekompatibilitou verze

Pokud se pokusíte použít TOP_N parametr s VECTOR_SEARCH nejnovějším indexem vektoru verze, vrátí SQL Server následující chybu:

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

Pokud chcete tuto chybu vyřešit, odeberte TOP_N parametr VECTOR_SEARCH a místo toho použijte SELECT TOP (N) WITH APPROXIMATE syntaxi. Podrobné informace naleznete v tématu Chyba s využitím starší syntaxe.

Omezení a úvahy

Omezení verzí starších vektorových indexů

Starší verze vektorového indexu mají následující další omezení. Pokud chcete zkontrolovat verzi indexu, přečtěte si téma Ověření verze indexu.

  • Pouze následné filtrování: Predikáty se použijí pouze po načtení vektoru, ne během procesu hledání. Výsledkem může být méně řádků vrácených, než se čekalo při použití filtrů.

  • Tabulky jen pro čtení: Tabulky s vektorovými indexy jsou jen pro čtení. Po vytvoření vektorového indexu nejsou povoleny žádné operace DML (INSERT, UPDATE, DELETE, MERGE), . ALLOW_STALE_VECTOR_INDEX Pokud můžete tolerovat zastaralé výsledky hledání, použijte konfiguraci s vymezeným oborem databáze k povolení operací DML.

  • Ruční TOP_N ladění: Parametr je nutné upravit ručně TOP_NVECTOR_SEARCH , aby se kompenzoval po filtrování, což často vyžaduje příliš velké hodnoty k získání požadovaného počtu výsledků.

Aktuální omezení (platí i pro nejnovější verzi)

Aktuální verze Preview má následující omezení:

  • Vektorové indexy nelze rozdělit na oddíly. Nepodporuje se žádný oddíl.

  • Tabulka musí mít clusterovaný index primárního klíče.

  • Vektorové indexy nejsou replikovány odběratelům.

  • Tabulky s vektorovými indexy nelze zkrátit pomocí TRUNCATE TABLE. Pokud chcete odebrat všechna data, nejprve odstraňte vektorový index, zkrátte tabulku, znovu zaplňte alespoň 100 řádků a pak znovu vytvořte index. Pro více informací viz TRUNCATE TABLE omezení.

  • Vektorové indexy nejde nasadit pomocí dacPac nebo BACPAC. Vektorové indexy vyžadují při vytváření alespoň 100 řádků s vektory bez hodnoty NULL. Při importu databáze pomocí dacPac, BACPAC nebo služby Import/Export vytvoří proces importu objekty schématu (včetně vektorových indexů) před načtením dat, což způsobí selhání importu.

    Alternativní řešení: Odstraňte vektorové indexy před exportem databáze a po importu znovu vytvořte indexy.

Minimální požadavky na data

Vektorové indexy před vytvořením indexu vyžadují minimální počet řádků s hodnotami vektoru bez hodnoty NULL.

  • Minimální počet řádků: V tabulce musí existovat alespoň 100 řádků s hodnotami vektoru bez hodnoty NULL.
  • Chování chyby: Pokus o vytvoření vektorového indexu v tabulce s méně než 100 řádky selže s chybou Msg 42266.

Příklad chyby :

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.

Osvědčený postup: Před vytvořením vektorového indexu naplňte tabulku alespoň 100 řádky. V případě scénářů vývoje a testování, ve kterých je potřeba méně řádků, VECTOR_SEARCH funguje bez indexu pomocí přístupu hrubou silou, ale výkon se snižuje u větších datových sad.

Podpora DML

Jakmile se pomocí nejnovější verze vytvoří vektorový index DiskANN, tabulka už nebude jen pro čtení. Data můžete volně upravovat pomocí standardních operací jazyka pro manipulaci s daty (DML) a změny se automaticky projeví ve výsledcích vektorového hledání.

Díky této funkci se vektorové vyhledávání hodí pro živé transakční úlohy, ve kterých se data v průběhu času mění.

Poznámky k chování

  • Operace DML nevyžadují vyřazení ani opětovné sestavení vektorového indexu.
  • Změny jsou viditelné pro dotazy vektorového vyhledávání po potvrzení transakce.
  • Pokud chcete nahradit data ve velkém měřítku (například odstranit většinu řádků a vložit zcela novou sadu vkládání), zvažte vyřazení a opětovné vytvoření vektorového indexu po načtení dat, abyste zajistili optimální kvalitu vyhledávání.

Poznámka:

Podpora DML je k dispozici pouze u vektorových indexů vytvořených pomocí nejnovější verze. Starší verze vyžadují, aby tabulky byly jen pro čtení nebo používaly konfiguraci s vymezeným oborem ALLOW_STALE_VECTOR_INDEX databáze.

Monitorování údržby vektorových indexů

Vektorové indexy provádějí údržbu na pozadí, aby zahrnovaly změny DML. Pomocí zobrazení dynamické správy sys.dm_db_vector_indexes monitorujte stav úlohy indexu a údržby.

Kombinování vektorových indexů s tradičními indexy

Vektorové indexy fungují společně s tradičními indexy stromu B, aby poskytovaly optimální výkon dotazů. Při použití iterativního filtrování VECTOR_SEARCHzvažte vytvoření tradičních indexů u sloupců používaných v predikátech filtru.

Podrobné informace o chování iterativního filtrování a o tom, jak se liší od dřívějších verzí, najdete v tématu Chování iterativního filtrování.

Návod

Optimalizátor dotazů automaticky vybere nejlepší strategii provádění (přibližný index nejbližšího souseda vs. hledání kNN). Pokud chcete vynutit použití přibližného indexu nejbližšího souseda, použijte nápovědu FORCE_ANN_ONLY k tabulce. Další informace naleznete v tématu Rady tabulky pro vektorové vyhledávání.

Ukázkový scénář:

-- 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);

Výhoda výkonu:

Při provádění dotazů s iterativním filtrováním používá optimalizátor dotazů SQL Serveru oba typy indexů:

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;

V tomto dotazu:

  • Vektorový index identifikuje podobné vkládání na základě vektoru dotazu.
  • Tradiční index(category) pro kandidáty na filtry efektivně během procesu iterativního vyhledávání

Tato složená strategie může výrazně zlepšit výkon dotazů v porovnání s použitím pouze vektorového indexu, zejména pokud predikáty filtru mají vysokou selektivitu.

Pokyny pro kvalitu a údržbu dat pro indexy vektorů

Vyhněte se datovým sadám s velkými duplicitními vkládáními

Indexování vektorů funguje nejlépe, když vkládání představuje různorodý sémantický obsah. Datové sady s vysokým podílem duplicitních vektorů se pro indexování vektorů nedoporučuje.

Vysoká duplicita může vést k:

  • Špatná kvalita výsledků: Duplicitní vektory se opakovaně zobrazují ve výsledcích, vytlačují relevantnější sémantické shody.
  • Snížení účinnosti: Duplicitní vkládání vytěsňuje lepší sousedy a snižuje užitečnost vyhledávání podobnosti.
  • Nepotřebné využití prostředků: Vytváření a údržba vektorových indexů je nákladná a duplikáty přidávají náklady bez přidání hodnoty.

Osvědčený postup: Odstranění duplicitních dat vkládání před vytvořením vektorového indexu za účelem zlepšení výkonu i kvality výsledků

Scénáře nahrazení velkých objemů dat

Vektorové indexy podporují vložení, aktualizace a odstranění. Pokud se ale nahradí většina nebo všechna vkládání ( například opětovným vložením datové sady s novým modelem), stávající index už nemusí odrážet novou distribuci dat.

Ve scénářích pro nahrazení ve velkém měřítku:

  • Vektorové vyhledávací dotazy budou nadále vracet platné výsledky.
  • Ale úplnost a hodnocení kvality může snížit, protože struktura indexu byla vytvořena pro jinou distribuci vkládání.

Osvědčený postup: Při provádění nahrazení téměř kompletních dat (odstranění a vložení nových vkládání) odstraňte a znovu vytvořte vektorový index po načtení nových dat. Opětovným vytvořením indexu zajistíte, že je optimalizovaná pro novou distribuci vkládání a obnoví předvídatelné chování dotazů.

Známé problémy

Další informace najdete v tématu Známé problémy.

Povolení

Uživatel musí mít ALTER oprávnění k tabulce.

Příklady

Stáhněte a naimportujte článek Wikipedie s ukázkou vkládání vektorů .

Příklady předpokládají existenci tabulky s wikipedia_articles názvem sloupcem title_vector typu vector , který ukládá vkládání nadpisů článků na Wikipedii. title_vector předpokládá se, že se jedná o vkládaný vygenerovaný model vložení, jako je text-embedding-ada-002 nebo text-embedding-3-small, který vrací vektory s rozměry 1 536.

Další příklady, včetně kompletních řešení, najdete v úložišti Azure SQL Database Vector Search na GitHubu.

Příklad 1

Následující příklad vytvoří vektorový index sloupce title_vector pomocí metriky cosine .

CREATE VECTOR INDEX vec_idx
    ON [dbo].[wikipedia_articles] ([title_vector])
        WITH (METRIC = 'COSINE', TYPE = 'DISKANN');

Příklad 2

Následující příklad vytvoří vektorový index ve title_vector sloupci pomocí (záporné) dot metriky produktu, omezí paralelismus na 8 a uloží vektor ve SECONDARY skupině souborů.

CREATE VECTOR INDEX vec_idx
    ON [dbo].[wikipedia_articles] ([title_vector])
        WITH (METRIC = 'DOT', TYPE = 'DISKANN', MAXDOP = 8)
    ON [SECONDARY];

Příklad 3

Základní kompletní příklad použití CREATE VECTOR INDEX a související VECTOR_SEARCH funkce. Vložené kódy jsou napodobeny. Ve skutečném scénáři se vkládání generují pomocí modelu vkládání a AI_GENERATE_EMBEDDINGS nebo externí knihovny, jako je OpenAI SDK.

Poznámka:

Nejnovější indexy vektorů verzí před vytvořením indexu vyžadují alespoň 100 řádků dat. Tento příklad vloží 100 řádků, aby tento požadavek splňoval. Další informace najdete v tématu Minimální požadavky na data.

Následující blok kódu ukazuje CREATE VECTOR INDEX napodobení vkládání:

  1. Povolí funkci Preview (vyžaduje se jenom pro SQL Server 2025, není nutná pro Azure SQL Database nebo databázi SQL v prostředcích infrastruktury).
  2. Vytvořte ukázkovou tabulku dbo.Articles se sloupcem embedding s vektorem datového typu(5).
  3. Vloží 100 řádků ukázkových dat s napodobenými vloženými daty.
  4. Vytvořte vektorový index na dbo.Articles.embedding.
  5. Předveďte hledání vektorové podobnosti pomocí VECTOR_SEARCH funkce.
-- 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;

Syntaxe pro dotazování závisí na verzi vektorového indexu:

Verze vektorových indexů Příklad syntaxe
Nejnovější verze Použít SELECT TOP (N) WITH APPROXIMATE bez TOP_N parametru
Starší verze (zastaralé) Použití TOP_N parametru ve VECTOR_SEARCH funkci

Pro indexy starších verzí (zastaralá syntaxe):

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;

Příklad 4: Práce s operacemi DML

Následující příklady ukazují operace DML v tabulce s vektorovým indexem vytvořeným pomocí nejnovější verze.

Odstranit řádky

Odstranění řádků je odebere z výsledků hledání tabulek i vektorů.

DELETE FROM dbo.wikipedia_articles
WHERE id = 12345;

Po dokončení odstranění se odebraný řádek už nezobrazuje v dotazech vektorového vyhledávání.

Vložení nových řádků

Můžete vložit nové řádky s vloženými položkami a okamžitě prohledávat bez opětovného sestavení indexu.

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)
);

Nově vložené vložené objekty se automaticky začlení do vektorového indexu a můžou je vrátit následné dotazy vektorového vyhledávání.

Aktualizace existujících řádků

Aktualizace vektorových nebo ne vektorových sloupců je plně podporovaná.

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;

Pokud se aktualizuje vektorový sloupec, index se odpovídajícím způsobem aktualizuje, takže budoucí vektorové hledání použije nové vkládání.

Použití MERGE pro složité operace

Tento MERGE příkaz umožňuje provádět operace vložení, aktualizace a odstranění v jednom příkazu.

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;

Vektorový index se automaticky aktualizuje tak, aby odrážel všechny změny provedené příkazem MERGE .