Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na: SQL Server 2025 (17.x)
Azure SQL Database
SQL 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
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:
1Potlač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 operace INSERT, UPDATE, DELETE a MERGE při zachování funkčnosti vektorového indexu s automatickou údržbou indexu v reálném čase.
- 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_INDEXPokud 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. Další informace najdete v tématu OMEZENÍ TABULKY TRUNCATE.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í:
- 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).
- Vytvořte ukázkovou tabulku
dbo.Articlesse sloupcemembeddings vektorem datového typu(5). - Vloží 100 řádků ukázkových dat s napodobenými vloženými daty.
- Vytvořte vektorový index na
dbo.Articles.embedding. - Předveďte hledání vektorové podobnosti pomocí
VECTOR_SEARCHfunkce.
-- 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í funkce 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 .