Delen via


AI_GENERATE_EMBEDDINGS (Transact-SQL)

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_endpoint moet zijn ingeschakeld in de database met behulp van sp_configure.

  • een EXTERN MODEL van het EMBEDDINGS type, 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;