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) Preview
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 dat is gedefinieerd als een EMBEDDING type dat wordt gebruikt voor het maken van de insluitingsvectormatrix.
Zie CREATE EXTERNAL MODEL voor meer informatie.
optional_json_request_body_parameters
Een geldige JSON-lijst met aanvullende parameters. Deze parameters worden toegevoegd aan de hoofdtekst van het REST-aanvraagbericht voordat ze naar de EXTERNAL MODELeindpuntlocatie worden verzonden. Deze parameters zijn afhankelijk van wat het eindpunt van het EXTERNAL MODELeindpunt 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
Er zijn twee vereisten waaraan u moet voldoen om te gebruiken AI_GENERATE_EMBEDDINGS:
sp_invoke_external_endpointmoet zijn ingeschakeld in de database met behulp van sp_configure.een EXTERN MODEL van het
EMBEDDINGStype, toegankelijk via de juiste toekenningen, rollen en/of machtigingen.
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 EXTERNAL MODEL bijvoorbeeld de parameter bevat die is dimensions ingesteld op 1536, door die parameter tijdens runtime optional_json_request_body_parameters door te geven met een nieuwe waarde, zoals hier wordt weergegeven: json_object('dimensions':755), wordt de dimensions parameter voor het model overschreven.
De doorgegeven optional_json_request_body_parameters waarde moet geldige JSON zijn.
Eindpunten voor insluiten maken
Raadpleeg het proces voor Azure OpenAI, OpenAI of Ollama voor meer informatie over het maken van insluitingseindpunten.
Uitgebreide gebeurtenissen (XEvent)
AI_GENERATE_EMBEDDINGS heeft een uitgebreide gebeurtenis (ai_generate_embeddings_summary) die kan worden ingeschakeld voor probleemoplossing. Het bevat informatie over de REST-aanvraag en het antwoord, zoals statuscode, eventuele fouten die zijn opgetreden, de gebruikte modelnaam en het aantal tokens dat wordt gebruikt door het eindpunt voor insluiten. 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
In het volgende voorbeeld ziet u hoe u de AI_GENERATE_EMBEDDINGS functie gebruikt met een select-instructie die vectormatrixresultaten retourneert.
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
In het volgende voorbeeld ziet u hoe u de AI_GENERATE_EMBEDDINGS functie gebruikt met de AI_GENERATE_CHUNKS functie om tekst door te geven die is opgesplitst in opgegeven segmentgrootten met een select-instructie die vectormatrixresultaten retourneert.
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) 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 '{"dimensions" : 768 }')
FROM myTable;
E. Een volledig voorbeeld met segmentering, AI_GENERATE_EMBEDDINGS en het maken van modellen
Dit voorbeeld is een volledige stroom van het maken van het CREATE EXTERNAL MODEL, met behulp van AI_GENERATE_EMBEDDINGSen het gebruik van AI_GENERATE_CHUNKS om de resultaten in een tabel in te voegen met een vectorgegevenstype . Vergeet niet om te vervangen door <password> een geldig wachtwoord.
-- Turn external REST endpoint invocation ON in the database
EXECUTE sp_configure 'external rest endpoint enabled', 1;
RECONFIGURE WITH OVERRIDE;
GO
-- Create a master key for the database
IF NOT EXISTS (SELECT *
FROM sys.symmetric_keys
WHERE [name] = '##MS_DatabaseMasterKey##')
BEGIN
CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'<password>';
END
GO
-- Create access credentials to Azure OpenAI using a key:
CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.openai.azure.com/]
WITH IDENTITY = 'HTTPEndpointHeaders', secret = '{"api-key":"YOUR_AZURE_OPENAI_KEY"}';
GO
-- Create an external model to call the Azure OpenAI embeddings REST endpoint
CREATE EXTERNAL MODEL MyAzureOpenAiModel
WITH (
LOCATION = 'https://my-azure-openai-endpoint.openai.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.openai.azure.com/]
);
-- Create a table with text to chunk and insert data
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 country 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
-- Create a new table to hold the chunked text and vector embeddings
CREATE TABLE text_embeddings
(
embeddings_id INT IDENTITY (1, 1) PRIMARY KEY,
chunked_text NVARCHAR (MAX),
vector_embeddings VECTOR (1536)
);
-- Insert the chunked text and vector embeddings into the text_embeddings table using AI_GENERATE_CHUNKS and AI_GENERATE_EMBEDDINGS
INSERT INTO text_embeddings (chunked_text, vector_embeddings)
SELECT c.chunk, AI_GENERATE_EMBEDDINGS(c.chunk USE MODEL MyAzureOpenAiModel)
FROM textchunk t
CROSS APPLY
AI_GENERATE_CHUNKS(source = t.text_to_chunk, chunk_type = FIXED, chunk_size = 100) c;
-- View the results
SELECT * FROM text_embeddings;