Bagikan melalui


AI_GENERATE_EMBEDDINGS (Transact-SQL)

Berlaku untuk: Pratinjau SQL Server 2025 (17.x)

AI_GENERATE_EMBEDDINGS adalah fungsi bawaan yang membuat penyematan (array vektor) menggunakan definisi model AI yang dibuat sebelumnya yang disimpan dalam database.

Sintaksis

Konvensi sintaks Transact-SQL

AI_GENERATE_EMBEDDINGS ( source USE MODEL model_identifier [ PARAMETERS optional_json_request_body_parameters ] )

Argumen

sumber

Ekspresi jenis karakter apa pun (misalnya, nvarchar, varchar, nchar, atau char).

model_identifier

Nama MODEL EKSTERNAL yang didefinisikan sebagai EMBEDDING jenis yang digunakan untuk membuat array vektor penyematan.

Untuk informasi selengkapnya, lihat MEMBUAT MODEL EKSTERNAL.

optional_json_request_body_parameters

Daftar parameter tambahan berformat JSON yang valid. Parameter ini ditambahkan ke isi pesan permintaan REST sebelum dikirim ke EXTERNAL MODELlokasi titik akhir. Parameter ini tidak bergantung pada apa yang EXTERNAL MODELdidukung dan diterima oleh titik akhir.

Tipe pengembalian

AI_GENERATE_EMBEDDINGS mengembalikan tabel kolom tunggal yang barisnya adalah array vektor penyematan yang dihasilkan yang dikembalikan sebagai JSON.

Mengembalikan format

Format JSON yang dikembalikan adalah sebagai berikut:

[
    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
]

Komentar

Prasyarat

Ada dua prasyarat yang harus Anda penuhi untuk menggunakan AI_GENERATE_EMBEDDINGS:

  • sp_invoke_external_endpoint harus diaktifkan dalam database menggunakan sp_configure.

  • MODEL EKSTERNAL jenis, EMBEDDINGS dapat diakses melalui pemberian, peran, dan/atau izin yang benar.

Parameter opsional

Parameter optional_json_request_body_parameters di AI_GENERATE_EMBEDDINGS digunakan ketika parameter titik akhir perlu ditambahkan ke isi pesan permintaan penyematan. Menambahkan parameter opsional akan mengambil alih nilai pada runtime jika parameter tersebut ditentukan dalam definisi model.

Misalnya, jika MODEL EKSTERNAL berisi parameter untuk dimensions diatur ke 1536, dengan meneruskan parameter tersebut optional_json_request_body_parameters dalam saat runtime dengan nilai baru seperti yang terlihat di sini: json_object('dimensions':755), dimensions parameter pada model ditimpa.

Nilai yang diteruskan ke optional_json_request_body_parameters harus JSON yang valid.

Membuat titik akhir penyematan

Untuk informasi selengkapnya tentang membuat titik akhir penyematan, tinjau proses untuk Azure OpenAI, OpenAI, atau Ollama.

Extended Events (XEvent)

AI_GENERATE_EMBEDDINGS memiliki peristiwa yang diperluas (ai_generate_embeddings_summary) yang dapat diaktifkan untuk pemecahan masalah. Ini berisi informasi tentang permintaan dan respons REST seperti kode status, kesalahan apa pun yang ditemuinya, nama model yang digunakan, dan jumlah token yang digunakan oleh titik akhir penyematan. Kejadian external_rest_endpoint_summary yang diperluas berisi informasi tambahan yang dapat untuk pemecahan masalah dan penelusuran kesalahan permintaan REST.

Contoh

Sebuah. Membuat penyematan dengan pernyataan SELECT

Contoh berikut menunjukkan cara menggunakan AI_GENERATE_EMBEDDINGS fungsi dengan pernyataan pilih yang mengembalikan hasil array vektor.

SELECT id,
       AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel)
FROM myTable;

B. Membuat penyematan dengan pernyataan SELECT menggunakan AI_GENERATE_CHUNKS

Contoh berikut menunjukkan cara menggunakan AI_GENERATE_EMBEDDINGS fungsi dengan AI_GENERATE_CHUNKS fungsi untuk meneruskan teks yang dipecah dalam ukuran gugus tertentu dengan pernyataan pilih yang mengembalikan hasil array vektor.

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 = N'FIXED' , chunk_size = 10) c;

C. Membuat penyematan dengan pembaruan tabel

Contoh berikut menunjukkan cara menggunakan AI_GENERATE_EMBEDDINGS fungsi dengan pernyataan pembaruan tabel untuk mengembalikan hasil array vektor ke dalam kolom tipe data vektor.

UPDATE t
    SET myEmbeddings = AI_GENERATE_EMBEDDINGS(t.text USE MODEL MyAzureOpenAiModel)
FROM myTable AS t;

D. Membuat penyematan dengan pernyataan SELECT dan PARAMETERS

Contoh berikut menunjukkan cara menggunakan AI_GENERATE_EMBEDDINGS fungsi dengan pernyataan pilih dan meneruskan parameter opsional ke titik akhir, yang mengembalikan hasil array vektor.

SELECT id,
       AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS '{"dimensions" : 768 }')
FROM myTable;

E. Contoh lengkap dengan pemotongan, AI_GENERATE_EMBEDDINGS, dan pembuatan model

Contoh ini adalah alur penuh dari membuat CREATE EXTERNAL MODEL, menggunakan AI_GENERATE_EMBEDDINGS, dan menggunakan AI_GENERATE_CHUNKS untuk menyisipkan hasilnya ke dalam tabel dengan jenis data vektor . Ingatlah untuk mengganti <password> dengan kata sandi yang valid.

-- 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 = N'FIXED', chunk_size = 100) c;

-- View the results
SELECT * FROM text_embeddings;