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ž je začnete používat, nezapomeňte si prohlédnout aktuální omezení .
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.
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í .
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.
Omezení
Aktuální verze Preview má následující omezení:
Vektorový index nelze rozdělit na oddíly. Nepodporuje se žádný oddíl.
Tabulka musí mít jeden sloupec, celé číslo, clusterovaný index primárního klíče.
Vektorové indexy nejsou replikovány odběratelům.
Tabulka s vektorovým indexem se stane jen pro čtení. Nejsou povoleny žádné úpravy dat, zatímco vektorový index je v tabulce.
V Azure SQL Database a SQL databázi v Microsoft Fabric můžete nastavit
ALLOW_STALE_VECTOR_INDEXna databázi naON, což umožňuje, aby byla tabulka opět zapisovatelná.Poznámka:
Možnost
ALLOW_STALE_VECTOR_INDEXkonfigurace s omezeným rozsahem databáze momentálně není dostupná v SQL Server 2025 (17.x).Vektorový index se neaktualizuje, když jsou do tabulky vložena nebo aktualizována nová data. Pro obnovení vektorového indexu jej musíte vypustit a znovu vytvořit.
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
Podrobnosti o databázi použité v ukázce najdete tady: Stáhněte a naimportujte článek Wikipedie s funkcemi Vector Embeddings.
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.
Následující blok kódu vytvoří napodobení vkládání pomocí následujících kroků:
- Povolí příznak trasování, který je nezbytný v aktuální verzi Preview.
- Vytvořte ukázkovou tabulku
dbo.Articlesse sloupcemembeddings vektorem datového typu(5). - Vložte ukázková data pomocí napodobení vložených dat.
- Vytvořte vektorový index na
dbo.Articles.embedding. - Předveďte hledání vektorové podobnosti pomocí
VECTOR_SEARCH()funkce.
-- 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;