Megosztás a következőn keresztül:


VEKTORINDEX LÉTREHOZÁSA (Transact-SQL) (Előnézet)

Vonatkozik a következőkre: SQL Server 2025 (17.x) Azure SQL DatabaseSQL database in Microsoft Fabric

Hozzon létre egy hozzávetőleges indexet egy vektoroszlopon a legközelebbi szomszédkeresés teljesítményének javítása érdekében. Ha többet szeretne megtudni a vektorindexelés és a vektorkeresés működéséről, valamint a pontos és közelítő keresés közötti különbségekről, tekintse meg a vektorkeresést és a vektorindexeket az SQL Database Engine-ben.

Azure SQL Database és SQL Database a Fabricben

A funkció előzetesben van. Használat előtt ellenőrizze az aktuális korlátozásokat .

Megjegyzés:

Előzetes verziójú funkcióként a cikkben bemutatott technológia a Microsoft Azure előzetes verziójának kiegészítő használati feltételeire vonatkozik.

SQL Server 2025 Preview funkció

Az SQL Server 2025-ben ez a funkció előnézetben van, és változhat. A funkció használatához engedélyeznie kell az PREVIEW_FEATURESadatbázis hatókörébe tartozó konfigurációt.

Használat előtt ellenőrizze az aktuális korlátozásokat .

Szemantika

Transact-SQL szintaxis konvenciók

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

Érvek

index_name

Az index neve. Az indexneveknek egyedinek kell lenniük egy táblában, de nem kell egyedinek lenniük az adatbázisban. Az indexneveknek az azonosítók szabályait kell követnie.

objektum

Tábla, amelyen az index létrejön. Alaptáblának kell lennie. A nézetek, a helyi és a globális ideiglenes táblák nem támogatottak.

vector_column

A vektorindex létrehozásához használandó oszlop. Vektor típusúnak kell lennie.

METRIKUS

A két vektor közötti távolság kiszámításához használandó távolságmetrika nevével rendelkező sztring. A következő távolságmetrikák támogatottak:

  • cosine - Koszinusz távolság
  • euclidean - Euklideszi távolság
  • dot - (Negatív) Pont termék

TYPE

Az index létrehozásához használt ANN algoritmus típusa. Jelenleg csak DiskANN támogatott. A DiskANN az alapértelmezett érték.

MAXDOP

Felülbírálja az indexművelet maximális párhuzamossági fokát. További információ: kiszolgálókonfiguráció: a párhuzamosság maximális foka. A MAXDOP használatával korlátozhatja a párhuzamosság mértékét és az eredményként kapott erőforrás-felhasználást az index buildelési műveletéhez.

max_degree_of_parallelism lehet:

  • 1

    Letiltja a párhuzamos tervgenerálást.

  • >1

    A párhuzamos indexműveletekben használt párhuzamosság maximális fokát a megadott számra vagy annál kisebbre korlátozza az aktuális rendszerterhelés alapján.

  • 0 (alapértelmezett)

    A kiszolgáló, adatbázis vagy számítási feladatcsoport szintjén megadott párhuzamosság mértékét használja, kivéve, ha az aktuális rendszerterhelés alapján csökken.

További információ: Párhuzamos indexelési műveletek konfigurálása.

Megjegyzés:

A párhuzamos indexműveletek nem érhetők el az SQL Server minden kiadásában. Az SQL Server kiadásai által támogatott funkciók listájáért lásd: Az SQL Server 2022 vagyaz SQL Server 2025 kiadásai és támogatott funkciói kiadásai és támogatott funkciói.

Korlátozások

Az aktuális előzetes verzióra az alábbi korlátozások vonatkoznak:

  • A vektorindex nem particionálható. Nincs partíciótámogatás.

  • A táblának egyetlen oszlopból, egész számból, elsődleges kulcsból csoportosított indexből kell rendelkeznie.

  • A vektorindexek nem replikálódnak az előfizetőkre.

  • A vektorindexet tartalmazó táblák írásvédettek lesznek. Nincs adatmódosítás, amíg a vektorindex a táblában van.

    Az Azure SQL Database-ben és a Microsoft Fabric-ben SQL adatbázisban beállíthatod az ALLOW_STALE_VECTOR_INDEXadatbázis scoped konfigurációját , ONami lehetővé teszi, hogy a tábla ismét írható legyen.

    Megjegyzés:

    Az ALLOW_STALE_VECTOR_INDEX adatbázis által áthatóan konfigurálható opció jelenleg nem elérhető az SQL Server 2025 (17.x) verzióban.

    A vektorindex nem frissül, amikor új adatokat helyeznek be vagy frissítenek a táblázatba. A vektorindex frissítéséhez el kell dobni és újraalkotni.

Ismert problémák

További információkért tekintse át az ismert problémákat.

Engedélyek

A felhasználónak engedéllyel kell rendelkeznie ALTER a táblában.

Példák

A mintában használt adatbázis részletei itt találhatók: Töltse le és importálja a Wikipédiából származó cikket vektoros beágyazásokkal.

A példák feltételezik, hogy létezik olyan tábla wikipedia_articles , amelynek neve egy olyan oszlop title_vector , vector amely a Wikipédia-cikkek címbe ágyazását tárolja. title_vector a rendszer feltételezi, hogy egy beágyazási modell, például text-embedding-ada-002 vagy text-embedding-3-small beágyazással létrehozott beágyazás, amely 1536 dimenziójú vektorokat ad vissza.

További példákat, például a végpontok közötti megoldásokat az Azure SQL Database Vektorkeresési minták GitHub-adattárában találja.

1. példa

Az alábbi példa egy vektorindexet hoz létre az oszlopon a title_vectorcosine metrika használatával.

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

2. példa

Az alábbi példa egy vektorindexet hoz létre az title_vector oszlopon a (negatív) dot termékmetrika használatával, a párhuzamosságot 8-ra korlátozza, és a vektort a SECONDARY fájlcsoportban tárolja.

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

3. példa

Egy alapszintű, végpontok közötti példa a használatával CREATE VECTOR INDEX és a kapcsolódó VECTOR_SEARCH függvénnyel. A beágyazások ki vannak gúnyolva. Valós forgatókönyv esetén a beágyazások beágyazási modell és AI_GENERATE_EMBEDDINGS, vagy külső kódtár, például OpenAI SDK használatával jönnek létre.

A következő kódblokk a következő lépésekkel hoz létre makett-beágyazásokat:

  1. Engedélyezi a nyomkövetési jelzőt, amely az aktuális előzetes verzióban szükséges.
  2. Hozzon létre egy mintatáblát dbo.Articles egy embedding rendelkező oszlopmal.
  3. Mintaadatok beszúrása a makettbe ágyazott adatokkal.
  4. Vektorindex létrehozása a oldalon dbo.Articles.embedding
  5. A vektoros hasonlóság keresésének bemutatása a VECTOR_SEARCH() függvénnyel.
-- 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;