Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
AI_GENERATE_EMBEDDINGS is een ingebouwde functie waarmee insluitingen (vectormatrices) worden gemaakt met behulp van een vooraf gemaakte AI-modeldefinitie die is opgeslagen in de database.
Syntaxis
Transact-SQL syntaxis-conventies
AI_GENERATE_EMBEDDINGS ( source USE MODEL model_identifier [ PARAMETERS optional_json_request_body_parameters ] )
Argumenten
bron
Een expressie van elk tekentype (bijvoorbeeld nvarchar, varchar, nchar of char).
model_identifier
De naam van een extern model wordt gedefinieerd als een EMBEDDINGS type dat wordt gebruikt om de embeddingsvectorarray te maken.
Zie CREATE EXTERNAL MODEL voor meer informatie.
optional_json_request_body_parameters
Een geldige JSON-lijst met aanvullende parameters. Deze parameters worden toegevoegd aan het REST-verzoekbericht voordat ze naar de eindpunt van het externe model worden gestuurd. Deze parameters zijn afhankelijk van wat het externe model ondersteunt en accepteert.
Retourtypen
AI_GENERATE_EMBEDDINGS retourneert een tabel met één kolom waarvan de rijen de gegenereerde insluitingsvectormatrices zijn die als JSON worden geretourneerd.
Retourindeling
De indeling van de geretourneerde JSON is als volgt:
[
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
]
Opmerkingen
Vereiste voorwaarden
U moet aan de volgende vereisten voldoen om gebruik te maken AI_GENERATE_EMBEDDINGS:
Schakel
sp_invoke_external_endpointin op de database, met het volgende commando:EXECUTE sp_configure 'external rest endpoint enabled', 1; RECONFIGURE WITH OVERRIDE;Maak een extern model van het
EMBEDDINGStype, toegankelijk via de juiste subsidies, rollen en/of permissies.
Optionele parameters
De parameter optional_json_request_body_parameters wordt AI_GENERATE_EMBEDDINGS gebruikt wanneer een eindpuntparameter moet worden toegevoegd aan de hoofdtekst van het aanvraagbericht voor insluitingen. Als u een optionele parameter toevoegt, wordt de waarde tijdens runtime overschreven als die parameter is gedefinieerd in de modeldefinitie.
Als het externe model bijvoorbeeld de parameter voor dimensions bevat die op 1536 is gezet, wordt door die parameter in de optional_json_request_body_parameters at-runtime te geven met een nieuwe waarde zoals hier te zien: json_object("dimensions":755), de dimensions parameter op het model overschreven.
De doorgegeven optional_json_request_body_parameters waarde moet geldige JSON zijn.
Eindpunten voor insluiten maken
Voor meer informatie over het creëren van embedding-endpoints, bekijk het proces voor Azure OpenAI in Azure AI Foundry Models, OpenAI of Ollama.
Uitgebreide gebeurtenissen (XEvent)
AI_GENERATE_EMBEDDINGS heeft een uitgebreide gebeurtenis (ai_generate_embeddings_summary) die kan worden ingeschakeld voor probleemoplossing. Het bevat informatie over het REST-verzoek en -antwoord, zoals statuscode, eventuele fouten die het tegenkwam en de gebruikte modelnaam. De uitgebreide gebeurtenis external_rest_endpoint_summary bevat aanvullende informatie die kan zijn voor het oplossen van problemen en het opsporen van fouten in REST-aanvragen.
Voorbeelden
Eén. Insluitingen maken met een SELECT-instructie
Het volgende voorbeeld laat zien hoe je de AI_GENERATE_EMBEDDINGS functie gebruikt met een select-instructie die resultaten teruggeeft in een JSON-array.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel)
FROM myTable;
B. Insluitingen maken met een SELECT-instructie met behulp van AI_GENERATE_CHUNKS
Het volgende voorbeeld laat zien hoe je de AI_GENERATE_EMBEDDINGS functie met de AI_GENERATE_CHUNKS-functie gebruikt om tekst te sturen die is opgesplitst in gespecificeerde chunk-groottes met een select-instructie die vectorarrayresultaten teruggeeft.
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. Insluitingen maken met een tabelupdate
In het volgende voorbeeld ziet u hoe u de AI_GENERATE_EMBEDDINGS functie gebruikt met een tabelupdate-instructie om de vectormatrixresultaten te retourneren in een kolom met vectorgegevenstypen.
UPDATE t
SET myEmbeddings = AI_GENERATE_EMBEDDINGS(t.text USE MODEL MyAzureOpenAIModel)
FROM myTable AS t;
D. Insluitingen maken met een SELECT-instructie en PARAMETERS
In het volgende voorbeeld ziet u hoe u de AI_GENERATE_EMBEDDINGS functie gebruikt met een select-instructie en optionele parameters doorgeeft aan het eindpunt, waarmee vectormatrixresultaten worden geretourneerd.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS TRY_CONVERT (JSON, N'{"dimensions":768}'))
FROM myTable;
E. Generatie van embeddings opnieuw proberen met retry_count de optie PARAMETERS
Als de aanroep voor insluitingen HTTP-statuscodes aangeeft die tijdelijke problemen aangeven, kunt u de aanvraag configureren om het automatisch opnieuw te proberen.
Om het aantal herhalingen te specificeren, voeg je de volgende JSON toe aan de PARAMETERS optie. Deze waarde moet een positief geheel getal zijn tussen nul (0) en tien (10) inclusief, en kan niet .NULL
Opmerking
Als een retry_count waarde in de AI_GENERATE_EMBEDDINGS query wordt gespecificeerd, overschrijft deze de retry_count (indien gedefinieerd) waarde in de configuratie van het externe model.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS TRY_CONVERT (JSON, N'{"retry_count":10}'))
FROM myTable;
F. Een volledig voorbeeld met modelcreatie, chunking en embedding-generatie
Het volgende voorbeeld toont een end-to-end proces om je data AI-klaar te maken met behulp van Azure OpenAI API Key:
Gebruik CREATE EXTERNAL MODEL om je te registreren en je embeddingmodel toegankelijk te maken.
Splits de dataset op in kleinere stukken met AI_GENERATE_CHUNKS, zodat de data binnen het contextvenster van het model past en de nauwkeurigheid van het ophalen verbetert.
Genereer embeddings met .
AI_GENERATE_EMBEDDINGSVoeg de resultaten in in een tabel met een vectordatatype.
Opmerking
Vervang <password> door een geldig wachtwoord.
Schakel de externe REST-endpoint-aanroep in op de databaseserver:
EXECUTE sp_configure 'external rest endpoint enabled', 1;
RECONFIGURE WITH OVERRIDE;
GO
Maak een databasehoofdsleutel aan:
IF NOT EXISTS (SELECT *
FROM sys.symmetric_keys
WHERE [name] = '##MS_DatabaseMasterKey##')
BEGIN
CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'<password>';
END
GO
Maak toegangsgegevens aan Azure OpenAI met een sleutel:
CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
WITH IDENTITY = 'HTTPEndpointHeaders', secret = '{"api-key":"YOUR_AZURE_OPENAI_KEY"}';
GO
Maak een extern model om het Azure OpenAI-embeddings REST-eindpunt aan te roepen:
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/]
);
Maak een tabel met tekst om data in te hakken en in te voegen:
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
Maak een nieuwe tabel aan om de gebrokene tekst en vector-embeddings op te slaan:
CREATE TABLE text_embeddings
(
embeddings_id INT IDENTITY (1, 1) PRIMARY KEY,
chunked_text NVARCHAR (MAX),
vector_embeddings VECTOR(1536)
);
Voeg de gebroken tekst en vector-embeddings in de text_embeddings-tabel in AI_GENERATE_CHUNKS met behulp van en 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;
De resultaten weergeven
SELECT *
FROM text_embeddings;