Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à : SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
AI_GENERATE_EMBEDDINGS est une fonction intégrée qui crée des incorporations (tableaux de vecteurs) à l’aide d’une définition de modèle IA précréée stockée dans la base de données.
Syntaxe
Conventions de la syntaxe Transact-SQL
AI_GENERATE_EMBEDDINGS ( source USE MODEL model_identifier [ PARAMETERS optional_json_request_body_parameters ] )
Les arguments
source
Expression de n’importe quel type de caractère (par exemple, nvarchar, varchar, nchar ou char).
model_identifier
Le nom d’un modèle externe défini comme un EMBEDDINGS type utilisé pour créer le tableau vectoriel d’embeddings.
Pour plus d’informations, consultez CREATE EXTERNAL MODEL.
optional_json_request_body_parameters
Liste de paramètres supplémentaires au format JSON valide. Ces paramètres sont ajoutés au corps du message de requête REST avant d’être envoyés à l’emplacement de point final du modèle externe. Ces paramètres dépendent de ce que le point d’extrémité du modèle externe prend en charge et accepte.
Types de retour
AI_GENERATE_EMBEDDINGS retourne une table à colonne unique dont les lignes sont les tableaux de vecteurs incorporés générés retournés en tant que JSON.
Format de retour
Le format du JSON retourné est le suivant :
[
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
]
Remarques
Conditions préalables
Vous devez remplir les conditions suivantes pour utiliser AI_GENERATE_EMBEDDINGS:
Activez
sp_invoke_external_endpointsur la base de données, avec la commande suivante :EXECUTE sp_configure 'external rest endpoint enabled', 1; RECONFIGURE WITH OVERRIDE;Créez un modèle externe du
EMBEDDINGStype, accessible via les subventions, rôles et/ou autorisations appropriés.
Paramètres facultatifs
Le paramètre optional_json_request_body_parameters dans AI_GENERATE_EMBEDDINGS lequel il est utilisé lorsqu’un paramètre de point de terminaison doit être ajouté au corps du message de demande d’incorporations. L’ajout d’un paramètre facultatif remplace la valeur au moment de l’exécution si ce paramètre est défini dans la définition du modèle.
Par exemple, si le modèle externe contient le paramètre pour dimensions fixé à 1536, en passant ce paramètre à l’exécution optional_json_request_body_parameters avec une nouvelle valeur comme vu ici : json_object("dimensions":755), le dimensions paramètre sur le modèle est écrasé.
La valeur passée optional_json_request_body_parameters doit être JSON valide.
Créer des points de terminaison d’incorporation
Pour plus d’informations sur la création de terminaux d’embedding, consultez le processus pour Azure OpenAI dans Azure AI Foundry Models, OpenAI ou Ollama.
Événements étendus (XEvent)
AI_GENERATE_EMBEDDINGS a un événement étendu (ai_generate_embeddings_summary) qui peut être activé pour la résolution des problèmes. Il contient des informations sur la requête et la réponse REST, telles que le code d’état, les erreurs rencontrées et le nom du modèle utilisé. L’événement external_rest_endpoint_summary étendu contient des informations supplémentaires qui peuvent être destinées à la résolution des problèmes et au débogage des requêtes REST.
Exemples
Un. Créer des incorporations avec une instruction SELECT
L’exemple suivant montre comment utiliser la AI_GENERATE_EMBEDDINGS fonction avec une instruction select qui renvoie les résultats dans un tableau JSON.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel)
FROM myTable;
B. Créer des incorporations avec une instruction SELECT à l’aide de AI_GENERATE_CHUNKS
L’exemple suivant montre comment utiliser la AI_GENERATE_EMBEDDINGS fonction avec la fonction AI_GENERATE_CHUNKS pour passer du texte divisé en tailles de morceaux spécifiées avec une instruction select qui renvoie les résultats du tableau vectoriel.
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;
Chapitre C. Créer des incorporations avec une mise à jour de table
L’exemple suivant montre comment utiliser la AI_GENERATE_EMBEDDINGS fonction avec une instruction de mise à jour de table pour retourner les résultats du tableau de vecteurs dans une colonne de type de données vectorielles.
UPDATE t
SET myEmbeddings = AI_GENERATE_EMBEDDINGS(t.text USE MODEL MyAzureOpenAIModel)
FROM myTable AS t;
D. Créer des incorporations avec une instruction SELECT et PARAMETERS
L’exemple suivant montre comment utiliser la AI_GENERATE_EMBEDDINGS fonction avec une instruction select et passer des paramètres facultatifs au point de terminaison, qui retourne les résultats du tableau de vecteurs.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS TRY_CONVERT (JSON, N'{"dimensions":768}'))
FROM myTable;
E. Génération d’embeddings de réessayer avec retry_count option PARAMETERS
Si l’appel d’incorporation rencontre des codes d’état HTTP indiquant des problèmes temporaires, vous pouvez configurer la demande pour réessayer automatiquement.
Pour spécifier le nombre de tentatives, ajoutez le JSON suivant à l’option PARAMETERS . Cette valeur doit être un entier positif compris entre zéro (0) et dix (10) inclus, et ne peut pas être NULL.
Note
Si une retry_count valeur est spécifiée dans la AI_GENERATE_EMBEDDINGS requête, elle supprime ( retry_count si définie) dans la configuration du modèle externe.
SELECT id,
AI_GENERATE_EMBEDDINGS(large_text USE MODEL MyAzureOpenAIModel PARAMETERS TRY_CONVERT (JSON, N'{"retry_count":10}'))
FROM myTable;
F. Un exemple complet avec la création de modèles, le chunking et la génération d’embedding
L’exemple suivant démontre un processus de bout en bout pour rendre vos données prêtes à l’IA en utilisant Azure OpenAI API Key :
Utilisez CRÉER UN MODÈLE EXTERNE pour enregistrer et rendre votre modèle d’intégration accessible.
Divisez l’ensemble de données en plus petits segments avec AI_GENERATE_CHUNKS, afin que les données s’intègrent dans la fenêtre contextuelle du modèle et améliorent la précision de la récupération.
Générer des embeddings en utilisant
AI_GENERATE_EMBEDDINGS.Insérez les résultats dans une table avec un type de données vectoriel.
Note
Remplacez <password> par un mot de passe valide.
Activez l’invocation externe du point de terminaison REST sur le serveur de base de données :
EXECUTE sp_configure 'external rest endpoint enabled', 1;
RECONFIGURE WITH OVERRIDE;
GO
Créez une clé maîtresse de base de données :
IF NOT EXISTS (SELECT *
FROM sys.symmetric_keys
WHERE [name] = '##MS_DatabaseMasterKey##')
BEGIN
CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'<password>';
END
GO
Créez des identifiants d’accès à Azure OpenAI à l’aide d’une clé :
CREATE DATABASE SCOPED CREDENTIAL [https://my-azure-openai-endpoint.cognitiveservices.azure.com/]
WITH IDENTITY = 'HTTPEndpointHeaders', secret = '{"api-key":"YOUR_AZURE_OPENAI_KEY"}';
GO
Créez un modèle externe pour appeler le point de terminaison REST des embeddings d’Azure OpenAI :
CREATE EXTERNAL MODEL MyAzureOpenAIModel
WITH (
LOCATION = 'https://my-azure-openai-endpoint.cognitiveservices.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.cognitiveservices.azure.com/]
);
Créez une table avec du texte à fragmenter et insérer des données :
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 land 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
Créez une nouvelle table pour contenir le texte en blocs et les inclusions vectorielles :
CREATE TABLE text_embeddings
(
embeddings_id INT IDENTITY (1, 1) PRIMARY KEY,
chunked_text NVARCHAR (MAX),
vector_embeddings VECTOR(1536)
);
Insérez le texte en blocs et les insertions vectorielles dans la table text_embeddings en utilisant AI_GENERATE_CHUNKS et AI_GENERATE_EMBEDDINGS:
INSERT INTO text_embeddings (chunked_text, vector_embeddings)
SELECT c.chunk,
AI_GENERATE_EMBEDDINGS(c.chunk USE MODEL MyAzureOpenAIModel)
FROM textchunk AS t
CROSS APPLY AI_GENERATE_CHUNKS (
SOURCE = t.text_to_chunk,
CHUNK_TYPE = FIXED,
CHUNK_SIZE = 100
) AS c;
Afficher les résultats
SELECT *
FROM text_embeddings;
Contenu connexe
- CRÉER UN MODÈLE EXTERNE (Transact-SQL)
- MODIFIER LE MODÈLE EXTERNE (Transact-SQL)
- SUPPRIMER LE MODÈLE EXTERNE (Transact-SQL)
- AI_GENERATE_CHUNKS (Transact-SQL)
- sp_invoke_external_rest_endpoint
- Créer et déployer une ressource Azure OpenAI dans azure AI Foundry Models
- Connecter votre SQL Server à Azure Arc