Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Les éléments marqués (aperçu) dans cet article sont actuellement en aperçu public. Cette version préliminaire est fournie sans contrat de niveau de service, et nous la déconseillons pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure.
Cet article explique comment utiliser l’API d’incorporation avec des modèles déployés dans des modèles Azure AI Foundry.
Conditions préalables
Pour utiliser des modèles incorporés dans votre application, vous avez besoin des éléments suivants :
Un abonnement Azure. Si vous utilisez des modèles GitHub, vous pouvez mettre à niveau votre expérience et créer un abonnement Azure dans le processus. Lisez la mise à niveau des modèles GitHub vers des modèles Azure AI Foundry si c’est votre cas.
Ressource Azure AI Foundry (anciennement appelée Azure AI Services). Pour plus d’informations, consultez Créer une ressource Azure AI Foundry.
L’URL et la clé du point de terminaison.
Installez le package d’inférence Azure AI pour Python avec la commande suivante :
pip install -U azure-ai-inference
- Un déploiement de modèle d’incorporations. Si vous n'en avez pas, lisez Ajouter et configurer des modèles Foundry pour ajouter un modèle d’embeddings à votre ressource.
Utiliser des incorporations
Tout d’abord, créez le client pour consommer le modèle. Le code suivant utilise une URL de point de terminaison et une clé qui sont stockées dans les variables d’environnement.
import os
from azure.ai.inference import EmbeddingsClient
from azure.core.credentials import AzureKeyCredential
model = EmbeddingsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=AzureKeyCredential(os.environ["AZURE_INFERENCE_CREDENTIAL"]),
model="text-embedding-3-small"
)
Si vous avez configuré la ressource avec la prise en charge de Microsoft Entra ID, vous pouvez utiliser l’extrait de code suivant pour créer un client.
import os
from azure.ai.inference import EmbeddingsClient
from azure.identity import DefaultAzureCredential
model = EmbeddingsClient(
endpoint="https://<resource>.services.ai.azure.com/models",
credential=DefaultAzureCredential(),
model="text-embedding-3-small"
)
Créer des embeddings
Créez une demande d’incorporation pour afficher la sortie du modèle.
response = model.embed(
input=["The ultimate answer to the question of life"],
)
Conseil / Astuce
Lors de la création d’une demande, prenez en compte la limite d’entrée du jeton pour le modèle. Si vous avez besoin d’incorporer de grandes parties de texte, vous avez besoin d’une stratégie de segmentation.
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
import numpy as np
for embed in response.data:
print("Embeding of size:", np.asarray(embed.embedding).shape)
print("Model:", response.model)
print("Usage:", response.usage)
Il peut être utile de calculer des incorporations dans des lots d’entrée. Le paramètre inputs
peut être une liste de chaînes, où chaque chaîne est une entrée différente. À son tour, la réponse est une liste d’incorporations, où chaque incorporation correspond à l’entrée dans la même position.
response = model.embed(
input=[
"The ultimate answer to the question of life",
"The largest planet in our solar system is Jupiter",
],
)
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
import numpy as np
for embed in response.data:
print("Embeding of size:", np.asarray(embed.embedding).shape)
print("Model:", response.model)
print("Usage:", response.usage)
Conseil / Astuce
Lors de la création de lots de requête, prenez en compte la limite de lots pour chacun des modèles. La plupart des modèles ont une limite de 1024 lots.
Spécifier des dimensions d’incorporation
Vous pouvez spécifier le nombre de dimensions des incorporations. L’exemple de code suivant montre comment créer des incorporations avec 1024 dimensions. Notez que tous les modèles d’incorporations ne permettent pas d’indiquer le nombre de dimensions dans la demande et que, dans ces cas, une erreur 422 est retournée.
response = model.embed(
input=["The ultimate answer to the question of life"],
dimensions=1024,
)
Créer différents types d’incorporations
Certains modèles peuvent générer plusieurs incorporations pour la même entrée en fonction de la façon dont vous envisagez de les utiliser. Cette fonctionnalité vous permet de récupérer des incorporations plus précises pour les modèles RAG.
L’exemple suivant montre comment créer des embeddings qui sont utilisés pour créer un embedding pour un document qui sera stocké dans une base de données vectorielle :
from azure.ai.inference.models import EmbeddingInputType
response = model.embed(
input=["The answer to the ultimate question of life, the universe, and everything is 42"],
input_type=EmbeddingInputType.DOCUMENT,
)
Lorsque vous travaillez sur une requête pour récupérer un tel document, vous pouvez utiliser l’extrait de code suivant pour créer les incorporations de la requête et optimiser les performances de récupération.
from azure.ai.inference.models import EmbeddingInputType
response = model.embed(
input=["What's the ultimate meaning of life?"],
input_type=EmbeddingInputType.QUERY,
)
Notez que tous les modèles d’incorporation ne permettent pas d’indiquer le type d’entrée dans la requête et que, dans ces cas, une erreur 422 est retournée. Par défaut, les incorporations de type Text
sont retournées.
Important
Les éléments marqués (aperçu) dans cet article sont actuellement en aperçu public. Cette version préliminaire est fournie sans contrat de niveau de service, et nous la déconseillons pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure.
Cet article explique comment utiliser l’API d’incorporation avec des modèles déployés dans des modèles Azure AI Foundry.
Conditions préalables
Pour utiliser des modèles incorporés dans votre application, vous avez besoin des éléments suivants :
Un abonnement Azure. Si vous utilisez des modèles GitHub, vous pouvez mettre à niveau votre expérience et créer un abonnement Azure dans le processus. Lisez la mise à niveau des modèles GitHub vers des modèles Azure AI Foundry si c’est votre cas.
Ressource Azure AI Foundry (anciennement appelée Azure AI Services). Pour plus d’informations, consultez Créer une ressource Azure AI Foundry.
L’URL et la clé du point de terminaison.
Installez la bibliothèque d’inférence Azure pour JavaScript avec la commande suivante :
npm install @azure-rest/ai-inference npm install @azure/core-auth npm install @azure/identity
Si vous utilisez Node.js, vous pouvez configurer les dépendances dans package.json:
package.json
{ "name": "main_app", "version": "1.0.0", "description": "", "main": "app.js", "type": "module", "dependencies": { "@azure-rest/ai-inference": "1.0.0-beta.6", "@azure/core-auth": "1.9.0", "@azure/core-sse": "2.2.0", "@azure/identity": "4.8.0" } }
Importez les éléments suivants :
import ModelClient from "@azure-rest/ai-inference"; import { isUnexpected } from "@azure-rest/ai-inference"; import { createSseStream } from "@azure/core-sse"; import { AzureKeyCredential } from "@azure/core-auth"; import { DefaultAzureCredential } from "@azure/identity";
- Un déploiement de modèle d’incorporations. Si vous n'en avez pas, lisez Ajouter et configurer des modèles Foundry pour ajouter un modèle d’embeddings à votre ressource.
Utiliser des incorporations
Tout d’abord, créez le client pour consommer le modèle. Le code suivant utilise une URL de point de terminaison et une clé qui sont stockées dans les variables d’environnement.
const client = ModelClient(
"https://<resource>.services.ai.azure.com/models",
new AzureKeyCredential(process.env.AZURE_INFERENCE_CREDENTIAL)
);
Si vous avez configuré la ressource avec la prise en charge de Microsoft Entra ID , vous pouvez utiliser l’extrait de code suivant pour créer un client.
const clientOptions = { credentials: { "https://cognitiveservices.azure.com" } };
const client = ModelClient(
"https://<resource>.services.ai.azure.com/models",
new DefaultAzureCredential()
clientOptions,
);
Créer des embeddings
Créez une demande d’incorporation pour afficher la sortie du modèle.
var response = await client.path("/embeddings").post({
body: {
model: "text-embedding-3-small",
input: ["The ultimate answer to the question of life"],
}
});
Conseil / Astuce
Lors de la création d’une demande, prenez en compte la limite d’entrée du jeton pour le modèle. Si vous avez besoin d’incorporer de grandes parties de texte, vous avez besoin d’une stratégie de segmentation.
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
if (isUnexpected(response)) {
throw response.body.error;
}
console.log(response.embedding);
console.log(response.body.model);
console.log(response.body.usage);
Il peut être utile de calculer des incorporations dans des lots d’entrée. Le paramètre inputs
peut être une liste de chaînes, où chaque chaîne est une entrée différente. À son tour, la réponse est une liste d’incorporations, où chaque incorporation correspond à l’entrée dans la même position.
var response = await client.path("/embeddings").post({
body: {
model: "text-embedding-3-small",
input: [
"The ultimate answer to the question of life",
"The largest planet in our solar system is Jupiter",
],
}
});
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
if (isUnexpected(response)) {
throw response.body.error;
}
console.log(response.embedding);
console.log(response.body.model);
console.log(response.body.usage);
Conseil / Astuce
Lors de la création de lots de requête, prenez en compte la limite de lots pour chacun des modèles. La plupart des modèles ont une limite de 1024 lots.
Spécifier des dimensions d’incorporation
Vous pouvez spécifier le nombre de dimensions des incorporations. L’exemple de code suivant montre comment créer des incorporations avec 1024 dimensions. Notez que tous les modèles d’incorporations ne permettent pas d’indiquer le nombre de dimensions dans la demande et que, dans ces cas, une erreur 422 est retournée.
var response = await client.path("/embeddings").post({
body: {
model: "text-embedding-3-small",
input: ["The ultimate answer to the question of life"],
dimensions: 1024,
}
});
Créer différents types d’incorporations
Certains modèles peuvent générer plusieurs incorporations pour la même entrée en fonction de la façon dont vous envisagez de les utiliser. Cette fonctionnalité vous permet de récupérer des incorporations plus précises pour les modèles RAG.
L’exemple suivant montre comment créer des embeddings qui sont utilisés pour créer un embedding pour un document qui sera stocké dans une base de données vectorielle :
var response = await client.path("/embeddings").post({
body: {
model: "text-embedding-3-small",
input: ["The answer to the ultimate question of life, the universe, and everything is 42"],
input_type: "document",
}
});
Lorsque vous travaillez sur une requête pour récupérer un tel document, vous pouvez utiliser l’extrait de code suivant pour créer les incorporations de la requête et optimiser les performances de récupération.
var response = await client.path("/embeddings").post({
body: {
model: "text-embedding-3-small",
input: ["What's the ultimate meaning of life?"],
input_type: "query",
}
});
Notez que tous les modèles d’incorporation ne permettent pas d’indiquer le type d’entrée dans la requête et que, dans ces cas, une erreur 422 est retournée. Par défaut, les incorporations de type Text
sont retournées.
Important
Les éléments marqués (aperçu) dans cet article sont actuellement en aperçu public. Cette version préliminaire est fournie sans contrat de niveau de service, et nous la déconseillons pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure.
Cet article explique comment utiliser l’API d’incorporation avec des modèles déployés dans des modèles Azure AI Foundry.
Conditions préalables
Pour utiliser des modèles incorporés dans votre application, vous avez besoin des éléments suivants :
Un abonnement Azure. Si vous utilisez des modèles GitHub, vous pouvez mettre à niveau votre expérience et créer un abonnement Azure dans le processus. Lisez la mise à niveau des modèles GitHub vers des modèles Azure AI Foundry si c’est votre cas.
Ressource Azure AI Foundry (anciennement appelée Azure AI Services). Pour plus d’informations, consultez Créer une ressource Azure AI Foundry.
L’URL et la clé du point de terminaison.
Ajoutez le package d’inférence Azure AI à votre projet :
<dependency> <groupId>com.azure</groupId> <artifactId>azure-ai-inference</artifactId> <version>1.0.0-beta.4</version> </dependency>
Si vous utilisez Entra ID, vous avez également besoin du package suivant :
<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.15.3</version> </dependency>
Importez l’espace de noms suivant :
package com.azure.ai.inference.usage; import com.azure.ai.inference.EmbeddingsClient; import com.azure.ai.inference.EmbeddingsClientBuilder; import com.azure.ai.inference.ChatCompletionsClient; import com.azure.ai.inference.ChatCompletionsClientBuilder; import com.azure.ai.inference.models.EmbeddingsResult; import com.azure.ai.inference.models.EmbeddingItem; import com.azure.ai.inference.models.ChatCompletions; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.util.Configuration; import java.util.ArrayList; import java.util.List;
Importez l’espace de noms suivant :
package com.azure.ai.inference.usage; import com.azure.ai.inference.EmbeddingsClient; import com.azure.ai.inference.EmbeddingsClientBuilder; import com.azure.ai.inference.models.EmbeddingsResult; import com.azure.ai.inference.models.EmbeddingItem; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.util.Configuration; import java.util.ArrayList; import java.util.List;
Un déploiement de modèle d’incorporations. Si vous n'en avez pas, lisez Ajouter et configurer des modèles Foundry pour ajouter un modèle d’embeddings à votre ressource.
Utiliser des incorporations
Tout d’abord, créez le client pour consommer le modèle. Le code suivant utilise une URL de point de terminaison et une clé qui sont stockées dans les variables d’environnement.
EmbeddingsClient client = new EmbeddingsClient(
URI.create(System.getProperty("AZURE_INFERENCE_ENDPOINT")),
new AzureKeyCredential(System.getProperty("AZURE_INFERENCE_CREDENTIAL")),
"text-embedding-3-small"
);
Si vous avez configuré la ressource avec la prise en charge de Microsoft Entra ID, vous pouvez utiliser l’extrait de code suivant pour créer un client.
client = new EmbeddingsClient(
URI.create(System.getProperty("AZURE_INFERENCE_ENDPOINT")),
new DefaultAzureCredential(),
"text-embedding-3-small"
);
Créer des embeddings
Créez une demande d’incorporation pour afficher la sortie du modèle.
EmbeddingsOptions requestOptions = new EmbeddingsOptions()
.setInput(Arrays.asList("The ultimate answer to the question of life"));
Response<EmbeddingsResult> response = client.embed(requestOptions);
Conseil / Astuce
Lors de la création d’une demande, prenez en compte la limite d’entrée du jeton pour le modèle. Si vous avez besoin d’incorporer de grandes parties de texte, vous avez besoin d’une stratégie de segmentation.
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
System.out.println("Embedding: " + response.getValue().getData());
System.out.println("Model: " + response.getValue().getModel());
System.out.println("Usage:");
System.out.println("\tPrompt tokens: " + response.getValue().getUsage().getPromptTokens());
System.out.println("\tTotal tokens: " + response.getValue().getUsage().getTotalTokens());
Il peut être utile de calculer des incorporations dans des lots d’entrée. Le paramètre inputs
peut être une liste de chaînes, où chaque chaîne est une entrée différente. À son tour, la réponse est une liste d’incorporations, où chaque incorporation correspond à l’entrée dans la même position.
requestOptions = new EmbeddingsOptions()
.setInput(Arrays.asList(
"The ultimate answer to the question of life",
"The largest planet in our solar system is Jupiter"
));
response = client.embed(requestOptions);
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
Conseil / Astuce
Lors de la création de lots de requête, prenez en compte la limite de lots pour chacun des modèles. La plupart des modèles ont une limite de 1024 lots.
Spécifier des dimensions d’incorporation
Vous pouvez spécifier le nombre de dimensions des incorporations. L’exemple de code suivant montre comment créer des incorporations avec 1024 dimensions. Notez que tous les modèles d’incorporations ne permettent pas d’indiquer le nombre de dimensions dans la demande et que, dans ces cas, une erreur 422 est retournée.
Créer différents types d’incorporations
Certains modèles peuvent générer plusieurs incorporations pour la même entrée en fonction de la façon dont vous envisagez de les utiliser. Cette fonctionnalité vous permet de récupérer des incorporations plus précises pour les modèles RAG.
L’exemple suivant montre comment créer des embeddings qui sont utilisés pour créer un embedding pour un document qui sera stocké dans une base de données vectorielle :
List<String> input = Arrays.asList("The answer to the ultimate question of life, the universe, and everything is 42");
requestOptions = new EmbeddingsOptions(input, EmbeddingInputType.DOCUMENT);
response = client.embed(requestOptions);
Lorsque vous travaillez sur une requête pour récupérer un tel document, vous pouvez utiliser l’extrait de code suivant pour créer les incorporations de la requête et optimiser les performances de récupération.
input = Arrays.asList("What's the ultimate meaning of life?");
requestOptions = new EmbeddingsOptions(input, EmbeddingInputType.QUERY);
response = client.embed(requestOptions);
Notez que tous les modèles d’incorporation ne permettent pas d’indiquer le type d’entrée dans la requête et que, dans ces cas, une erreur 422 est retournée. Par défaut, les incorporations de type Text
sont retournées.
Important
Les éléments marqués (aperçu) dans cet article sont actuellement en aperçu public. Cette version préliminaire est fournie sans contrat de niveau de service, et nous la déconseillons pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure.
Cet article explique comment utiliser l’API d’incorporation avec des modèles déployés dans des modèles Azure AI Foundry.
Conditions préalables
Pour utiliser des modèles incorporés dans votre application, vous avez besoin des éléments suivants :
Un abonnement Azure. Si vous utilisez des modèles GitHub, vous pouvez mettre à niveau votre expérience et créer un abonnement Azure dans le processus. Lisez la mise à niveau des modèles GitHub vers des modèles Azure AI Foundry si c’est votre cas.
Ressource Azure AI Foundry (anciennement appelée Azure AI Services). Pour plus d’informations, consultez Créer une ressource Azure AI Foundry.
L’URL et la clé du point de terminaison.
Installez le package d’inférence Azure AI avec la commande suivante :
dotnet add package Azure.AI.Inference --prerelease
Si vous utilisez Entra ID, vous avez également besoin du package suivant :
dotnet add package Azure.Identity
- Un déploiement de modèle d’incorporations. Si vous n'en avez pas, lisez Ajouter et configurer des modèles Foundry pour ajouter un modèle d’embeddings à votre ressource.
Utiliser des incorporations
Tout d’abord, créez le client pour consommer le modèle. Le code suivant utilise une URL de point de terminaison et une clé qui sont stockées dans les variables d’environnement.
EmbeddingsClient client = new EmbeddingsClient(
new Uri(Environment.GetEnvironmentVariable("AZURE_INFERENCE_ENDPOINT")),
new AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_INFERENCE_CREDENTIAL"))
);
Si vous avez configuré la ressource avec la prise en charge de Microsoft Entra ID, vous pouvez utiliser l’extrait de code suivant pour créer un client. Notez qu’ici includeInteractiveCredentials
est défini uniquement à true
des fins de démonstration afin que l’authentification puisse se produire à l’aide du navigateur web. Sur les charges de travail de production, vous devez supprimer ce paramètre.
TokenCredential credential = new DefaultAzureCredential(includeInteractiveCredentials: true);
AzureAIInferenceClientOptions clientOptions = new AzureAIInferenceClientOptions();
BearerTokenAuthenticationPolicy tokenPolicy = new BearerTokenAuthenticationPolicy(credential, new string[] { "https://cognitiveservices.azure.com/.default" });
clientOptions.AddPolicy(tokenPolicy, HttpPipelinePosition.PerRetry);
client = new EmbeddingsClient(
new Uri("https://<resource>.services.ai.azure.com/models"),
credential,
clientOptions,
);
Créer des embeddings
Créez une demande d’incorporation pour afficher la sortie du modèle.
EmbeddingsOptions requestOptions = new EmbeddingsOptions()
{
Input = {
"The ultimate answer to the question of life"
},
Model = "text-embedding-3-small"
};
Response<EmbeddingsResult> response = client.Embed(requestOptions);
Conseil / Astuce
Lors de la création d’une demande, prenez en compte la limite d’entrée du jeton pour le modèle. Si vous avez besoin d’incorporer de grandes parties de texte, vous avez besoin d’une stratégie de segmentation.
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
Console.WriteLine($"Embedding: {response.Value.Data}");
Console.WriteLine($"Model: {response.Value.Model}");
Console.WriteLine("Usage:");
Console.WriteLine($"\tPrompt tokens: {response.Value.Usage.PromptTokens}");
Console.WriteLine($"\tTotal tokens: {response.Value.Usage.TotalTokens}");
Il peut être utile de calculer des incorporations dans des lots d’entrée. Le paramètre inputs
peut être une liste de chaînes, où chaque chaîne est une entrée différente. À son tour, la réponse est une liste d’incorporations, où chaque incorporation correspond à l’entrée dans la même position.
EmbeddingsOptions requestOptions = new EmbeddingsOptions()
{
Input = {
"The ultimate answer to the question of life",
"The largest planet in our solar system is Jupiter"
},
Model = "text-embedding-3-small"
};
Response<EmbeddingsResult> response = client.Embed(requestOptions);
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
Conseil / Astuce
Lors de la création de lots de requête, prenez en compte la limite de lots pour chacun des modèles. La plupart des modèles ont une limite de 1024 lots.
Spécifier des dimensions d’incorporation
Vous pouvez spécifier le nombre de dimensions des incorporations. L’exemple de code suivant montre comment créer des incorporations avec 1024 dimensions. Notez que tous les modèles d’incorporations ne permettent pas d’indiquer le nombre de dimensions dans la demande et que, dans ces cas, une erreur 422 est retournée.
Créer différents types d’incorporations
Certains modèles peuvent générer plusieurs incorporations pour la même entrée en fonction de la façon dont vous envisagez de les utiliser. Cette fonctionnalité vous permet de récupérer des incorporations plus précises pour les modèles RAG.
L’exemple suivant montre comment créer des embeddings qui sont utilisés pour créer un embedding pour un document qui sera stocké dans une base de données vectorielle :
var input = new List<string> {
"The answer to the ultimate question of life, the universe, and everything is 42"
};
var requestOptions = new EmbeddingsOptions()
{
Input = input,
InputType = EmbeddingInputType.DOCUMENT,
Model = "text-embedding-3-small"
};
Response<EmbeddingsResult> response = client.Embed(requestOptions);
Lorsque vous travaillez sur une requête pour récupérer un tel document, vous pouvez utiliser l’extrait de code suivant pour créer les incorporations de la requête et optimiser les performances de récupération.
var input = new List<string> {
"What's the ultimate meaning of life?"
};
var requestOptions = new EmbeddingsOptions()
{
Input = input,
InputType = EmbeddingInputType.QUERY,
Model = "text-embedding-3-small"
};
Response<EmbeddingsResult> response = client.Embed(requestOptions);
Notez que tous les modèles d’incorporation ne permettent pas d’indiquer le type d’entrée dans la requête et que, dans ces cas, une erreur 422 est retournée. Par défaut, les incorporations de type Text
sont retournées.
Important
Les éléments marqués (aperçu) dans cet article sont actuellement en aperçu public. Cette version préliminaire est fournie sans contrat de niveau de service, et nous la déconseillons pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure.
Cet article explique comment utiliser l’API d’incorporation avec des modèles déployés dans des modèles Azure AI Foundry.
Conditions préalables
Pour utiliser des modèles incorporés dans votre application, vous avez besoin des éléments suivants :
Un abonnement Azure. Si vous utilisez des modèles GitHub, vous pouvez mettre à niveau votre expérience et créer un abonnement Azure dans le processus. Lisez la mise à niveau des modèles GitHub vers des modèles Azure AI Foundry si c’est votre cas.
Ressource Azure AI Foundry (anciennement appelée Azure AI Services). Pour plus d’informations, consultez Créer une ressource Azure AI Foundry.
L’URL et la clé du point de terminaison.
- Un déploiement de modèle d’incorporations. Si vous n'en avez pas, lisez Ajouter et configurer des modèles Foundry pour ajouter un modèle d’embeddings à votre ressource.
Utiliser des incorporations
Pour utiliser les incorporations de texte, utilisez l’itinéraire /embeddings
ajouté à l’URL de base, ainsi que vos informations d’identification indiquées dans api-key
. L’en-tête Authorization
est également pris en charge avec le format Bearer <key>
.
POST https://<resource>.services.ai.azure.com/models/embeddings?api-version=2024-05-01-preview
Content-Type: application/json
api-key: <key>
Si vous avez configuré la ressource avec la prise en charge de Microsoft Entra ID, transmettez le jeton dans l’en-tête Authorization
au format Bearer <token>
. Utiliser l’étendue https://cognitiveservices.azure.com/.default
.
POST https://<resource>.services.ai.azure.com/models/embeddings?api-version=2024-05-01-preview
Content-Type: application/json
Authorization: Bearer <token>
L’utilisation de l’ID Microsoft Entra peut nécessiter une configuration supplémentaire dans votre ressource pour accorder l’accès. Découvrez comment configurer l’authentification sans clé avec l’ID Microsoft Entra.
Créer des embeddings
Créez une demande d’incorporation pour afficher la sortie du modèle.
{
"model": "text-embedding-3-small",
"input": [
"The ultimate answer to the question of life"
]
}
Conseil / Astuce
Lors de la création d’une demande, prenez en compte la limite d’entrée du jeton pour le modèle. Si vous avez besoin d’incorporer de grandes parties de texte, vous avez besoin d’une stratégie de segmentation.
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
{
"id": "0ab1234c-d5e6-7fgh-i890-j1234k123456",
"object": "list",
"data": [
{
"index": 0,
"object": "embedding",
"embedding": [
0.017196655,
// ...
-0.000687122,
-0.025054932,
-0.015777588
]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 9,
"completion_tokens": 0,
"total_tokens": 9
}
}
Il peut être utile de calculer des incorporations dans des lots d’entrée. Le paramètre inputs
peut être une liste de chaînes, où chaque chaîne est une entrée différente. À son tour, la réponse est une liste d’incorporations, où chaque incorporation correspond à l’entrée dans la même position.
{
"model": "text-embedding-3-small",
"input": [
"The ultimate answer to the question of life",
"The largest planet in our solar system is Jupiter"
]
}
La réponse est la suivante, où vous pouvez voir les statistiques d’utilisation du modèle :
{
"id": "0ab1234c-d5e6-7fgh-i890-j1234k123456",
"object": "list",
"data": [
{
"index": 0,
"object": "embedding",
"embedding": [
0.017196655,
// ...
-0.000687122,
-0.025054932,
-0.015777588
]
},
{
"index": 1,
"object": "embedding",
"embedding": [
0.017196655,
// ...
-0.000687122,
-0.025054932,
-0.015777588
]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 19,
"completion_tokens": 0,
"total_tokens": 19
}
}
Conseil / Astuce
Lors de la création de lots de requête, prenez en compte la limite de lots pour chacun des modèles. La plupart des modèles ont une limite de 1024 lots.
Spécifier des dimensions d’incorporation
Vous pouvez spécifier le nombre de dimensions des incorporations. L’exemple de code suivant montre comment créer des incorporations avec 1024 dimensions. Notez que tous les modèles d’incorporations ne permettent pas d’indiquer le nombre de dimensions dans la demande et que, dans ces cas, une erreur 422 est retournée.
{
"model": "text-embedding-3-small",
"input": [
"The ultimate answer to the question of life"
],
"dimensions": 1024
}
Créer différents types d’incorporations
Certains modèles peuvent générer plusieurs incorporations pour la même entrée en fonction de la façon dont vous envisagez de les utiliser. Cette fonctionnalité vous permet de récupérer des incorporations plus précises pour les modèles RAG.
L'exemple suivant montre comment créer des vecteurs d'intégration qui sont utilisés pour créer une représentation vectorielle d'un document qui sera stockée dans une base de données vectorielle. Étant donné que text-embedding-3-small
ne prend pas en charge cette fonctionnalité, nous utilisons un modèle d’incorporation de Cohere dans l’exemple suivant :
{
"model": "cohere-embed-v3-english",
"input": [
"The answer to the ultimate question of life, the universe, and everything is 42"
],
"input_type": "document"
}
Lorsque vous travaillez sur une requête pour récupérer un tel document, vous pouvez utiliser l’extrait de code suivant pour créer les incorporations de la requête et optimiser les performances de récupération. Étant donné que text-embedding-3-small
ne prend pas en charge cette fonctionnalité, nous utilisons un modèle d’incorporation de Cohere dans l’exemple suivant :
{
"model": "cohere-embed-v3-english",
"input": [
"What's the ultimate meaning of life?"
],
"input_type": "query"
}
Notez que tous les modèles d’incorporation ne permettent pas d’indiquer le type d’entrée dans la requête et que, dans ces cas, une erreur 422 est retournée. Par défaut, les incorporations de type Text
sont retournées.