Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
AI_GENERATE_EMBEDDINGS är en inbyggd funktion som skapar inbäddningar (vektormatriser) med hjälp av en fördefinierad AI-modelldefinition som lagras i databasen.
Syntax
Transact-SQL syntaxkonventioner
AI_GENERATE_EMBEDDINGS ( source USE MODEL model_identifier [ PARAMETERS optional_json_request_body_parameters ] )
Argumentpunkter
källa
Ett uttryck av valfri teckentyp (till exempel nvarchar, varchar, nchar eller char).
model_identifier
Namnet på en extern modell definieras som en EMBEDDINGS typ som används för att skapa inbäddningsvektormatrisen.
Mer information finns i SKAPA EXTERN MODELL.
optional_json_request_body_parameters
En giltig JSON-formaterad lista med ytterligare parametrar. Dessa parametrar läggs till i REST-förfrågningsmeddelandets kropp innan de skickas till den externa modellens slutpunktsplats. Dessa parametrar beror på vad den externa modellens slutpunkt stöder och accepterar.
Returtyper
AI_GENERATE_EMBEDDINGS returnerar en tabell med en kolumn vars rader är de genererade inbäddningsvektormatriserna som returneras som JSON.
Returformat
Formatet för den returnerade JSON:en är följande:
[
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
]
Anmärkningar
Förutsättningar
Du måste uppfylla följande förutsättningar för att använda:AI_GENERATE_EMBEDDINGS
Aktivera
sp_invoke_external_endpointi databasen med följande kommando:EXECUTE sp_configure 'external rest endpoint enabled', 1; RECONFIGURE WITH OVERRIDE;Skapa en extern modell av den
EMBEDDINGStypen, tillgänglig via rätt bidrag, roller och/eller behörigheter.
Valfria parametrar
Parametern optional_json_request_body_parameters i AI_GENERATE_EMBEDDINGS används när en slutpunktsparameter måste läggas till i brödtexten i meddelandet för inbäddningsbegäran. Om du lägger till en valfri parameter åsidosätts värdet vid körning om parametern definieras i modelldefinitionen.
Till exempel, om den externa modellen innehåller parametern för dimensions satt till 1536, genom att skicka den parametern i optional_json_request_body_parameters vid körning med ett nytt värde som ses här: json_object("dimensions":755), dimensions överskrivs parametern i modellen.
Värdet som skickas till optional_json_request_body_parameters måste vara giltigt JSON.
Skapa inbäddningsslutpunkter
För mer information om hur man skapar embeddingsendpoints, se processen för Azure OpenAI i Azure AI Foundry Models, OpenAI eller Ollama.
Utökade händelser (XEvent)
AI_GENERATE_EMBEDDINGS har en utökad händelse (ai_generate_embeddings_summary) som kan aktiveras för felsökning. Den innehåller information om REST-förfrågan och svaret, såsom statuskod, eventuella fel den stött på och modellnamnet som används. Den utökade händelsen external_rest_endpoint_summary innehåller ytterligare information som kan vara till för felsökning och felsökning av REST-begäranden.
Exempel
A. Skapa inbäddningar med en SELECT-instruktion
Följande exempel visar hur man använder AI_GENERATE_EMBEDDINGS funktionen med en select-sats som returnerar resultat i en JSON-array.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel)
FROM myTable;
B. Skapa inbäddningar med en SELECT-instruktion med hjälp av AI_GENERATE_CHUNKS
Följande exempel visar hur man använder AI_GENERATE_EMBEDDINGS funktionen med AI_GENERATE_CHUNKS-funktionen för att skicka text uppdelad i specificerade chunk-storlekar med en select-sats som returnerar vektorarrayresultat.
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. Skapa inbäddningar med en tabelluppdatering
I följande exempel visas hur du använder AI_GENERATE_EMBEDDINGS funktionen med en tabelluppdateringsinstruktur för att returnera vektormatrisresultatet till en kolumn för vektordatatyp.
UPDATE t
SET myEmbeddings = AI_GENERATE_EMBEDDINGS(t.text USE MODEL MyAzureOpenAIModel)
FROM myTable AS t;
D. Skapa inbäddningar med en SELECT-instruktion och PARAMETRAR
I följande exempel visas hur du använder AI_GENERATE_EMBEDDINGS funktionen med en select-instruktion och skickar valfria parametrar till slutpunkten, som returnerar vektormatrisresultat.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS TRY_CONVERT (JSON, N'{"dimensions":768}'))
FROM myTable;
E. Generering av omförsöksbäddningar med retry_count PARAMETERS-alternativet
Om inbäddningsanropet stöter på HTTP-statuskoder som anger tillfälliga problem kan du konfigurera begäran så att den försöker igen automatiskt.
För att ange antalet omförsök, lägg till följande JSON i alternativet PARAMETERS . Detta värde bör vara ett positivt heltal mellan noll (0) och tio (10) inklusive, och kan inte vara NULL.
Anmärkning
Om ett retry_count värde anges i frågan AI_GENERATE_EMBEDDINGS , överskrider retry_count det (om definierat) i den externa modellens konfiguration.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS TRY_CONVERT (JSON, N'{"retry_count":10}'))
FROM myTable;
F. Ett fullständigt exempel med segmentering, AI_GENERATE_EMBEDDINGS och modellskapande
Följande exempel visar en helhetsprocess för att göra dina data AI-klara:
Använd CREATE EXTERNAL MODEL för att registrera och göra din inbäddningsmodell tillgänglig.
Dela upp datamängden i mindre delar med AI_GENERATE_CHUNKS, så att datan passar inom modellens kontextfönster och förbättrar återhämtningsnoggrannheten.
Generera inbäddningar med .
AI_GENERATE_EMBEDDINGSInfoga resultaten i en tabell med en vektordatatyp.
Anmärkning
Ersätt <password> med ett giltigt lösenord.
-- Enable the external REST endpoint invocation on the database server
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;