Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2025 (17.x) Önizlemesi
AI_GENERATE_EMBEDDINGS
, veritabanında depolanan önceden oluşturulmuş bir yapay zeka modeli tanımı kullanarak eklemeler (vektör dizileri) oluşturan yerleşik bir işlevdir.
Sözdizimi
Transact-SQL söz dizimi kuralları
AI_GENERATE_EMBEDDINGS ( source USE MODEL model_identifier [ PARAMETERS optional_json_request_body_parameters ] )
Tartışmalar
kaynak
Herhangi bir karakter türünün ifadesi (örneğin, nvarchar, varchar, nchar veya char).
model_identifier
Ekleme vektör dizisini oluşturmak için kullanılan bir tür olarak tanımlanan EMBEDDING
adı.
Daha fazla bilgi için bkz. CREATE EXTERNAL MODEL.
optional_json_request_body_parameters
Ek parametrelerin geçerli bir JSON biçimli listesi. Bu parametreler, 'nin uç nokta konumuna gönderilmeden önce REST isteği ileti gövdesine EXTERNAL MODEL
eklenir. Bu parametreler, 'nin uç noktasının EXTERNAL MODEL
desteklediği ve kabul ettiklerine bağlıdır.
Dönüş türleri
AI_GENERATE_EMBEDDINGS
, satırları JSON olarak döndürülen, oluşturulan ekleme vektör dizileri olan tek sütunlu bir tablo döndürür.
Dönüş biçimi
Döndürülen JSON'un biçimi aşağıdaki gibidir:
[
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
]
Açıklamalar
Önkoşullar
Kullanmak AI_GENERATE_EMBEDDINGS
için karşılamanız gereken iki önkoşul vardır:
sp_invoke_external_endpoint
sp_configure kullanılarak veritabanında etkinleştirilmelidir.türündeki bir
EMBEDDINGS
, doğru izinler, roller ve/veya izinler aracılığıyla erişilebilir.
İsteğe bağlı parametreler
parametresi optional_json_request_body_parameters
AI_GENERATE_EMBEDDINGS
, ekleme istekleri iletisinin gövdesine bir uç nokta parametresi eklenmesi gerektiğinde kullanılır. İsteğe bağlı bir parametre eklemek, model tanımında tanımlanmışsa çalışma zamanında değeri geçersiz kılar.
Örneğin, EXTERNAL MODEL 1536 olarak ayarlanmış parametresini dimensions
içeriyorsa, bu parametre optional_json_request_body_parameters
çalışma zamanında burada görüldüğü gibi yeni bir değerle geçirilir: json_object('dimensions':755)
, dimensions
modeldeki parametre geçersiz kılınmış olur.
geçirilen optional_json_request_body_parameters
değer geçerli bir JSON olmalıdır.
Ekleme uç noktaları oluşturma
Ekleme uç noktaları oluşturma hakkında daha fazla bilgi için Azure OpenAI, OpenAI veya Ollama işlemini gözden geçirin.
Genişletilmiş Olaylar (XEvent)
AI_GENERATE_EMBEDDINGS
sorun giderme için etkinleştirilebilen genişletilmiş bir olayı (ai_generate_embeddings_summary
) vardır. Durum kodu, karşılaştığı hatalar, kullanılan model adı ve ekleme uç noktası tarafından kullanılan belirteç sayısı gibi REST isteği ve yanıtı hakkında bilgi içerir. Genişletilmiş olay external_rest_endpoint_summary
, REST isteklerinin sorunlarını gidermeye ve hata ayıklamaya yönelik ek bilgiler içerir.
Örnekler
A. SELECT deyimiyle ekleme oluşturma
Aşağıdaki örnekte, işlevin AI_GENERATE_EMBEDDINGS
vektör dizisi sonuçlarını döndüren bir select deyimiyle nasıl kullanılacağı gösterilmektedir.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel)
FROM myTable;
B. AI_GENERATE_CHUNKS kullanarak SELECT deyimiyle eklemeler oluşturma
Aşağıdaki örnekte, belirtilen öbek boyutlarına AI_GENERATE_EMBEDDINGS
ayrılmış metinleri vektör dizisi sonuçlarını döndüren bir select deyimiyle geçirmek için işlevini AI_GENERATE_CHUNKS
işlevle birlikte kullanma gösterilmektedir.
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. Tablo güncelleştirmesi ile ekleme oluşturma
Aşağıdaki örnekte, vektör dizisi sonuçlarını bir vektör veri türü sütununa döndürmek için işlevin tablo güncelleştirme deyimiyle nasıl kullanılacağı AI_GENERATE_EMBEDDINGS
gösterilmektedir.
UPDATE t
SET myEmbeddings = AI_GENERATE_EMBEDDINGS(t.text USE MODEL MyAzureOpenAiModel)
FROM myTable AS t;
D. SELECT deyimi ve PARAMETERS ile eklemeler oluşturma
Aşağıdaki örnekte işlevin AI_GENERATE_EMBEDDINGS
select deyimiyle nasıl kullanılacağı ve isteğe bağlı parametrelerin uç noktaya nasıl geçirildiği gösterilmektedir ve bu da vektör dizisi sonuçlarını döndürür.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS '{"dimensions" : 768 }')
FROM myTable;
E. Öbekleme, AI_GENERATE_EMBEDDINGS ve model oluşturma ile ilgili tam bir örnek
Bu örnek, CREATE EXTERNAL MODEL oluşturma, kullanarak AI_GENERATE_EMBEDDINGS
ve AI_GENERATE_CHUNKS kullanarak sonuçları vektör veri türüne sahip bir tabloya ekleme işleminin tam akışıdır. yerine <password>
geçerli bir parola kullanmayı unutmayın.
-- 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;