Udostępnij za pośrednictwem


AI_GENERATE_EMBEDDINGS (Transact-SQL)

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 MODELpunkt 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_EMBEDDINGSpolecenia :

  • sp_invoke_external_endpoint musi być włączona w bazie danych przy użyciu sp_configure.

  • MODEL ZEWNĘTRZNYEMBEDDINGS 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_EMBEDDINGSAI_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;