Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do: SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
AI_GENERATE_EMBEDDINGS to wbudowana funkcja, która tworzy osadzanie (tablice wektorowe) przy użyciu wstępnie utworzonej definicji modelu sztucznej inteligencji przechowywanej w bazie danych.
Składnia
Transact-SQL konwencje składni
AI_GENERATE_EMBEDDINGS ( source USE MODEL model_identifier [ PARAMETERS optional_json_request_body_parameters ] )
Argumenty (w programowaniu)
źródło
Wyrażenie dowolnego typu znaku (na przykład nvarchar, varchar, nchar lub char).
model_identifier
Nazwa zewnętrznego modelu definiowanego jako EMBEDDINGS typ używany do tworzenia tablicy wektorowej osadzeń.
Aby uzyskać więcej informacji, zobacz CREATE EXTERNAL MODEL (TWORZENIE MODELU ZEWNĘTRZNEgo).
optional_json_request_body_parameters
Prawidłowa lista dodatkowych parametrów sformatowanych w formacie JSON. Parametry te są dodawane do ciała wiadomości żądania REST przed wysłaniem do lokalizacji końcowego modelu zewnętrznego. Parametry te zależą od tego, co obsługuje i akceptuje końcowy model zewnętrzny.
Typy zwracane
AI_GENERATE_EMBEDDINGS Zwraca tabelę z jedną kolumną, której wiersze są wygenerowanymi tablicami wektorów osadzania zwróconymi jako dane JSON.
Format zwracany
Format zwróconego kodu JSON jest następujący:
[
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
]
Uwagi
Wymagania wstępne
Musisz spełnić następujące warunki, aby skorzystać AI_GENERATE_EMBEDDINGS:
Włącz
sp_invoke_external_endpointw bazie danych za pomocą następującego polecenia:EXECUTE sp_configure 'external rest endpoint enabled', 1; RECONFIGURE WITH OVERRIDE;Stwórz zewnętrzny model
EMBEDDINGStego typu, dostępny dzięki odpowiednim grantom, rolom i/lub uprawnieniam.
Parametry opcjonalne
Parametr optional_json_request_body_parameters w pliku AI_GENERATE_EMBEDDINGS jest używany, gdy parametr punktu końcowego musi zostać dodany do treści komunikatu żądania osadzania. Dodanie opcjonalnego parametru zastępuje wartość w czasie wykonywania, jeśli ten parametr jest zdefiniowany w definicji modelu.
Na przykład, jeśli zewnętrzny model zawiera parametr dla ustawiony dimensions na 1536, przekazując ten parametr w optional_json_request_body_parameters czasie działania nową wartością, jak widać tutaj: json_object("dimensions":755), dimensions parametr na modelu jest nadpisywany.
Przekazana wartość optional_json_request_body_parameters musi być prawidłowym kodem JSON.
Tworzenie osadzonych punktów końcowych
Aby uzyskać więcej informacji na temat tworzenia punktów końcowych osadzających, zapoznaj się z procesem Azure OpenAI w Azure AI Foundry Models, OpenAI lub Ollama.
Zdarzenia rozszerzone (XEvent)
AI_GENERATE_EMBEDDINGS ma zdarzenie rozszerzone (ai_generate_embeddings_summary), które można włączyć na potrzeby rozwiązywania problemów. Zawiera informacje o żądaniu i odpowiedzi REST, takie jak kod statusu, ewentualne napotkane błędy oraz używana nazwa modelu. Zdarzenie rozszerzone external_rest_endpoint_summary zawiera dodatkowe informacje, które mogą być przeznaczone do rozwiązywania problemów i debugowania żądań REST.
Przykłady
Odp. Tworzenie osadzania za pomocą instrukcji SELECT
Poniższy przykład pokazuje, jak użyć AI_GENERATE_EMBEDDINGS funkcji z poleceniem select, które zwraca wyniki w tablicy JSON.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel)
FROM myTable;
B. Tworzenie osadzania za pomocą instrukcji SELECT przy użyciu AI_GENERATE_CHUNKS
Poniższy przykład pokazuje, jak użyć AI_GENERATE_EMBEDDINGS funkcji z funkcją AI_GENERATE_CHUNKS do przekazywania tekstu podzielonego na określone rozmiary bloków za pomocą instrukcji select, która zwraca wyniki tablicy wektorowej.
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. Tworzenie osadzania za pomocą aktualizacji tabeli
W poniższym przykładzie pokazano, jak używać AI_GENERATE_EMBEDDINGS funkcji z instrukcją update tabeli w celu zwrócenia wyników tablicy wektorowej do kolumny typu danych wektorów.
UPDATE t
SET myEmbeddings = AI_GENERATE_EMBEDDINGS(t.text USE MODEL MyAzureOpenAIModel)
FROM myTable AS t;
D. Tworzenie osadzonych za pomocą instrukcji SELECT i parametrów
W poniższym przykładzie pokazano, jak używać AI_GENERATE_EMBEDDINGS funkcji z instrukcją select i przekazywać opcjonalne parametry do punktu końcowego, co zwraca wyniki tablicy wektorowej.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS TRY_CONVERT (JSON, N'{"dimensions":768}'))
FROM myTable;
E. Ponowne generowanie osadzeń z retry_count opcją PARAMETERS
Jeśli wywołanie osadzania napotka kody stanu HTTP wskazujące tymczasowe problemy, możesz skonfigurować żądanie, aby automatycznie ponowić próbę.
Aby określić liczbę prób, dodaj do opcji następujący JSON PARAMETERS . Ta wartość powinna być dodatnią liczbą całkowitą między zerem (0) a dziesięcioma (10) włącznie i nie może być .NULL
Uwaga / Notatka
Jeśli wartość retry_count jest podana w zapytaniu AI_GENERATE_EMBEDDINGS , nadpisuje ona ( retry_count jeśli jest zdefiniowana) w konfiguracji modelu zewnętrznego.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS TRY_CONVERT (JSON, N'{"retry_count":10}'))
FROM myTable;
F. Pełny przykład z fragmentowaniem, AI_GENERATE_EMBEDDINGS i tworzeniem modelu
Poniższy przykład pokazuje kompleksowy proces przygotowania danych do AI:
Użyj CREATE EXTERNAL MODEL, aby się zarejestrować i uczynić swój model osadzenia dostępnym.
Podziel zbiór danych na mniejsze fragmenty AI_GENERATE_CHUNKS, aby dane mieściły się w oknie kontekstowym modelu i poprawiły dokładność wyszukiwania.
Generuj osadzenia za pomocą
AI_GENERATE_EMBEDDINGS.Wstaw wyniki do tabeli z typem danych wektorowych.
Uwaga / Notatka
Zastąp <password> prawidłowym hasłem.
-- 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;