Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2025 (wersja zapoznawcza 17.x)
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 modelu ZEWNĘTRZNEgo zdefiniowana jako EMBEDDING
typ używany do tworzenia tablicy wektorów osadzania.
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. Te parametry są dołączane do treści komunikatu żądania REST przed wysłaniem do lokalizacji punktu końcowego EXTERNAL MODEL
. Te parametry są niezależne od tego, co EXTERNAL MODEL
punkt końcowy obsługuje i akceptuje.
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
Istnieją dwa wymagania wstępne, które należy spełnić, aby użyć AI_GENERATE_EMBEDDINGS
polecenia :
sp_invoke_external_endpoint
musi być włączona w bazie danych przy użyciu sp_configure.MODEL ZEWNĘTRZNY
EMBEDDINGS
typu, dostępny za pośrednictwem odpowiednich dotacji, ról i/lub uprawnień.
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.
Jeśli na przykład model ZEWNĘTRZNY zawiera parametr dimensions
ustawiony na 1536, przekazując ten parametr w optional_json_request_body_parameters
czasie wykonywania z nową wartością, jak pokazano tutaj: json_object('dimensions':755)
, dimensions
parametr w modelu jest zastępowany.
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 osadzania, zapoznaj się z procesem dla usługi Azure OpenAI, 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 REST i odpowiedzi, takie jak kod stanu, wszelkie napotkane błędy, używana nazwa modelu i liczba tokenów używanych przez osadzony punkt końcowy. 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
W poniższym przykładzie pokazano, jak używać AI_GENERATE_EMBEDDINGS
funkcji z instrukcją select, która zwraca wyniki tablicy wektorowej.
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
W poniższym przykładzie pokazano, jak używać AI_GENERATE_EMBEDDINGS
funkcji z funkcją AI_GENERATE_CHUNKS
do przekazywania tekstu podzielonego w określonych rozmiarach fragmentó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) 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 '{"dimensions" : 768 }')
FROM myTable;
E. Pełny przykład z fragmentowaniem, AI_GENERATE_EMBEDDINGS i tworzeniem modelu
W tym przykładzie przedstawiono pełny przepływ z tworzenia modelu CREATE EXTERNAL MODEL przy użyciu metody i przy użyciu AI_GENERATE_EMBEDDINGS
AI_GENERATE_CHUNKS w celu wstawienia wyników do tabeli z typem danych wektorowych. Pamiętaj, aby zastąpić <password>
prawidłowym hasłem.
-- 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;