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


AI_GENERATE_EMBEDDINGS (Transact-SQL)

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

AI_GENERATE_EMBEDDINGS egy beépített függvény, amely beágyazásokat (vektortömböket) hoz létre az adatbázisban tárolt előre létrehozott AI-modelldefiníció használatával.

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 típusú kifejezés (például nvarchar, varchar, nchar vagy char).

model_identifier

Egy külső modell neve, amely egy olyan típusként definiál EMBEDDINGS , 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

A további paraméterek érvényes JSON formátumú listája. Ezeket a paramétereket a REST kérelmes üzenet testéhez csatolják, mielőtt a külső modell végpontjába küldenék. 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

Előfeltételek

A következő feltételeknek kell megfelelnie a belépéshez AI_GENERATE_EMBEDDINGS:

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

    EXECUTE sp_configure 'external rest endpoint enabled', 1;
    RECONFIGURE WITH OVERRIDE;
    
  • Készíts egy külső modellt a EMBEDDINGS típusból, amely a megfelelő támogatások, szerepek és/vagy jogosultságok révén érhető el.

Választható paraméterek

A rendszer optional_json_request_body_parameters akkor használja a paramétert AI_GENERATE_EMBEDDINGS , ha hozzá kell adni egy végpontparamétert a beágyazási kérelemüzenet törzséhez. Ha nem kötelező paramétert ad hozzá, akkor futásidőben felülbírálja az értéket, ha a paraméter a modelldefinícióban van definiálva.

Például, ha a külső modell tartalmazza a 1536-ra állított paramétertdimensions, akkor az at futás idején egy új értékkel továbbítva optional_json_request_body_parametersjson_object("dimensions":755)dimensions a modell paraméterét felülbíráljuk.

Az átadott optional_json_request_body_parameters értéknek érvényes JSON-nak kell lennie.

Beágyazási végpontok létrehozása

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.

Bővített események (XEvent)

AI_GENERATE_EMBEDDINGS olyan kiterjesztett eseményt (ai_generate_embeddings_summary) használ, amely a hibaelhárításhoz engedélyezhető. Tartalmaz információkat a REST kérésről és válaszról, például státuszkódról, az észlelt hibákról és a használt modellnévről. A kiterjesztett esemény external_rest_endpoint_summary további információkat tartalmaz a REST-kérelmek hibaelhárításához és hibakereséséhez.

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.

SELECT id,
       AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS TRY_CONVERT (JSON, N'{"dimensions":768}'))
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.

SELECT id,
       AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS TRY_CONVERT (JSON, N'{"retry_count":10}'))
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égpontig tartó folyamatot mutat be az adatok AI-készenlétére Azure OpenAI API Key-vel való felhasználásával:

  1. Használd a CREATE EXTERNAL MODEL funkciót regisztrálni és hozzáférhetővé tegye a beágyazási modellt.

  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álj beágyazásokat .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

Hozzon létre hozzáférési credentials-okat 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 darabos szöveget és vektorbeágyazásokat a text_embeddings táblázatba helyezzük be a következő és AI_GENERATE_CHUNKSAI_GENERATE_EMBEDDINGSsegítségével:

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;