AI_GENERATE_EMBEDDINGS (Transact-SQL)

A következőkre vonatkozik: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Database a Microsoft Fabricben

A AI_GENERATE_EMBEDDINGS függvény beágyazást (vektor tömböket) hoz létre egy előre létrehozott AI modelldefiníció segítségével, amely az adatbázisban tárolt.

Szemantika

Transact-SQL szintaxis konvenciók

AI_GENERATE_EMBEDDINGS ( source USE MODEL model_identifier [ PARAMETERS optional_json_request_body_parameters ] )

Érvek

forrás

Bármilyen karaktertípus kifejezése , például nvarchar, varchar, nchar vagy char.

model_identifier

Egy külső modell neve, amely egy EMBEDDINGS olyan típusként definiálja, amelyet a beágyazás vektor tömbének létrehozásához használnak.

További információ: KÜLSŐ MODELL LÉTREHOZÁSA.

optional_json_request_body_parameters

Egy érvényes, JSON-formátumú lista további paraméterekről. A függvény ezeket a paramétereket a REST kérés üzenettestéhez csatolja, mielőtt elküldi a külső modell végpontjába. Ezek a paraméterek attól függnek, hogy a külső modell végpontja mit támogat és elfogad.

Visszatérési típusok

AI_GENERATE_EMBEDDINGS Egyoszlopos táblát ad vissza, amelynek sorai a JSON-ként visszaadott generált beágyazási vektortömbök.

Visszatérési formátum

A visszaadott JSON formátuma a következő:

[
    0.0023929428,
    0.00034713413,
    -0.0023142276,
    -0.025654867,
    -0.011492423,
    0.0010358924,
    -0.014836246,
    0.0035484824,
    0.000045630233,
    -0.027581815,
    0.023816079,
    0.005012586,
    -0.027732948,
    -0.010088143,
    ...
    -0.014571763
]

Megjegyzések

AI_GENERATE_EMBEDDINGS Az Always-up-to-datefrissítési szabályzattal elérhető a felügyelt Azure SQL-példányban.

Előfeltételek

A használathoz AI_GENERATE_EMBEDDINGSgyőződj meg róla, hogy teljesíted a következő feltételeket:

  • Kapcsold sp_invoke_external_endpoint be az adatbázisban a következő parancsot:

    EXECUTE sp_configure 'external rest endpoint enabled', 1;
    RECONFIGURE WITH OVERRIDE;
    

    Megjegyzés:

    Az Azure SQL Database-ben és az SQL adatbázisban a Fabric-ben a external rest endpoint enabled rendszerkonfigurációs opció alapértelmezés szerint engedélyezett.

További információért a beágyazott végpontok létrehozásáról tekintse át az Azure OpenAI folyamatát Azure AI Foundry Models, OpenAI vagy Ollama területén.

  • Készíts egy külső modellt a EMBEDDINGS típusból, amely a megfelelő támogatások, szerepkörek és jogosultságok révén érhető el.

Választható paraméterek

Használd a optional_json_request_body_parameters paramétert akkor a beágyazási AI_GENERATE_EMBEDDINGS kérés üzenet törzséhez, amikor végpontparamétert kell hozzáadnod. Egy opcionális paraméter hozzáadása felülírja az értéket futásidőben, ha a modell definíciója tartalmazza ezt a paramétert.

Például, ha a külső modell tartalmazza a paramétert az dimensions 1 536-ra állítva, akkor futás közben új értékkel továbbíthatod ezt a paramétert optional_json_request_body_parameters .

Az alábbi példában a dimensions modell paramétere felül van bírálva:

json_object("dimensions":755)

Az érték, amibe átlépsz optional_json_request_body_parameters , érvényes JSON-nak kell lennie.

Bővített események (XEvent)

AI_GENERATE_EMBEDDINGS van egy kiterjesztett esemény (ai_generate_embeddings_summary), amit bekapcsolhatsz hibakereséshez. Tartalmaz információkat a REST kérésről és válaszról, például státuszkódot, az észlelt hibákat, valamint a használt modell nevet. A kiterjesztett esemény external_rest_endpoint_summary további információkat tartalmaz, amelyek segíthetnek a REST kérések hibakeresésében és hibakeresésében.

Példák

Egy. Beágyazások létrehozása SELECT utasítással

A következő példa bemutatja, hogyan lehet a AI_GENERATE_EMBEDDINGS függvényt egy select utasítással használni, amely JSON tömböt ad vissza.

SELECT id,
       AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel)
FROM myTable;

B. Beágyazások létrehozása SELECT utasítással AI_GENERATE_CHUNKS

A következő példa bemutatja, hogyan lehet a AI_GENERATE_EMBEDDINGS függvényt a AI_GENERATE_CHUNKS funkcióval együtt a meghatározott darabméretekben bontott szöveget egy select utasítással továbbítani, amely vektor tömb eredményeket ad vissza.

SELECT id,
       title,
       large_text,
       AI_GENERATE_EMBEDDINGS(c.chunk_text USE MODEL MyAzureOpenAIModel)
FROM myTable
CROSS APPLY AI_GENERATE_CHUNKS (
    SOURCE = large_text,
    CHUNK_TYPE = FIXED,
    CHUNK_SIZE = 10
) AS c;

C. Beágyazások létrehozása táblázatfrissítéssel

Az alábbi példa bemutatja, hogyan használhatja a AI_GENERATE_EMBEDDINGS függvényt táblafrissítési utasítással a vektortömb eredményeinek vektor adattípus-oszlopba való visszaadásához.

UPDATE t
    SET myEmbeddings = AI_GENERATE_EMBEDDINGS(t.text USE MODEL MyAzureOpenAIModel)
FROM myTable AS t;

D. Beágyazások létrehozása SELECT utasítással és PARAMÉTEREKkel

Az alábbi példa bemutatja, hogyan használhatja a AI_GENERATE_EMBEDDINGS függvényt egy select utasítással, és hogyan adhat át opcionális paramétereket a végpontnak, amely vektortömberedményeket ad vissza.

DECLARE @params JSON = N'{"dimensions":768}'
SELECT id,
       AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS @params)
FROM myTable;

E. Próbálkozás újraépítése PARAMETERS retry_count opcióval

Ha a beágyazási hívás átmeneti problémákat jelző HTTP-állapotkódokkal találkozik, konfigurálhatja a kérést az automatikus újrapróbálkozásokra.

A próbálkozások számának megadásához add hozzá a következő JSON-t az PARAMETERS opcióhoz. Ez az érték pozitív egész szám kell lennie nulla (0) és tíz (10) között, beleértve a tízet, és nem lehet NULL.

Megjegyzés:

Ha a lekérdezésben megadnak egy retry_count értéket AI_GENERATE_EMBEDDINGS , az felülírja a retry_count külső modell konfigurációjában (ha definiálva van) értéket.

DECLARE @params JSON = N'{"sql_rest_options":{"retry_count":10}} '
SELECT id,
       AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS @params)
FROM myTable;

F. Egy teljes példa modellkészítésre, chunkolásra és beágyazás generálására

Az alábbi példa egy végponttól végpontig folyamatot mutat be, amellyel az adataidat AI-re kész lehet készíteni az Azure OpenAI API Key használatával:

  1. Használd a CREATE EXTERNAL MODEL segítségével regisztráld a beágyazási modelledet, és tegyük elérhetővé.

  2. Oszd fel az adathalmazt kisebb darabokra AI_GENERATE_CHUNKS-vel, hogy az adatok illeszkedjenek a modell kontextusablakába, és javítsák a lekérdezés pontosságát.

  3. Generáljunk beágyazásokat a használatával AI_GENERATE_EMBEDDINGS.

  4. A találatokat egy táblázatba helyezzük be, amelynek vektoradattípusa van.

Megjegyzés:

Cserélje le a <password> érvényes jelszóra.

Engedélyezzük a külső REST végponthívást az adatbázis szerveren:

EXECUTE sp_configure 'external rest endpoint enabled', 1;
RECONFIGURE WITH OVERRIDE;
GO

Hozz létre egy adatbázis fő kulcsot:

IF NOT EXISTS (SELECT *
               FROM sys.symmetric_keys
               WHERE [name] = '##MS_DatabaseMasterKey##')
    BEGIN
        CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'<password>';
    END
GO

Hozzáférési jogosultságokat hozhat létre az Azure OpenAI-hoz egy kulcs segítségével:

CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
    WITH IDENTITY = 'HTTPEndpointHeaders', secret = '{"api-key":"YOUR_AZURE_OPENAI_KEY"}';
GO

Készíts egy külső modellt, hogy meghívja az Azure OpenAI embeddings REST endpoint-et:

CREATE EXTERNAL MODEL MyAzureOpenAIModel
WITH (
      LOCATION = 'https://my-azure-openai-endpoint.cognitiveservices.azure.com/openai/deployments/text-embedding-ada-002/embeddings?api-version=2023-05-15',
      API_FORMAT = 'Azure OpenAI',
      MODEL_TYPE = EMBEDDINGS,
      MODEL = 'text-embedding-ada-002',
      CREDENTIAL = [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
);

Készíts egy táblát szöveggel, hogy részt vegyen és adatokat adjunk be:

CREATE TABLE textchunk
(
    text_id INT IDENTITY (1, 1) PRIMARY KEY,
    text_to_chunk NVARCHAR (MAX)
);
GO

INSERT INTO textchunk (text_to_chunk)
VALUES ('All day long we seemed to dawdle through a land which was full of beauty of every kind. Sometimes we saw little towns or castles on the top of steep hills such as we see in old missals; sometimes we ran by rivers and streams which seemed from the wide stony margin on each side of them to be subject to great floods.'),
       ('My Friend, Welcome to the Carpathians. I am anxiously expecting you. Sleep well to-night. At three to-morrow the diligence will start for Bukovina; a place on it is kept for you. At the Borgo Pass my carriage will await you and will bring you to me. I trust that your journey from London has been a happy one, and that you will enjoy your stay in my beautiful land. Your friend, DRACULA')
GO

Hozz létre egy új táblázatot, amely tartalmazza a darabos szöveget és a vektorbeágyazásokat:

CREATE TABLE text_embeddings
(
    embeddings_id INT IDENTITY (1, 1) PRIMARY KEY,
    chunked_text NVARCHAR (MAX),
    vector_embeddings VECTOR(1536)
);

A darabolt szöveget és vektorbeágyazásokat a text_embeddings táblázatba helyezzük be a AI_GENERATE_CHUNKS használatával és AI_GENERATE_EMBEDDINGS:

INSERT INTO text_embeddings (chunked_text, vector_embeddings)
SELECT c.chunk,
       AI_GENERATE_EMBEDDINGS(c.chunk USE MODEL MyAzureOpenAIModel)
FROM textchunk AS t
CROSS APPLY AI_GENERATE_CHUNKS (
    SOURCE = t.text_to_chunk,
    CHUNK_TYPE = FIXED,
    CHUNK_SIZE = 100
) AS c;

Az eredmények megtekintése

SELECT *
FROM text_embeddings;