Partager via


Liaison d’entrée de recherche sémantique Azure OpenAI pour Azure Functions

Important

L’extension Azure OpenAI pour Azure Functions est actuellement en préversion.

La liaison d’entrée de recherche sémantique Azure OpenAI vous permet d’utiliser la recherche sémantique sur vos incorporations.

Pour plus d’informations sur l’installation et la configuration de l’extension Azure OpenAI, consultez Extensions Azure OpenAI pour Azure Functions. Pour en savoir plus sur le classement sémantique dans Recherche IA Azure, veuillez consulter la rubrique Classement par ordre de priorité sémantique dans Recherche Azure AI.

Remarque

Les références et les exemples sont fournis uniquement pour le modèle Node.js v4.

Remarque

Les références et exemples sont fournis uniquement pour le modèle Python v2.

Remarque

Bien que les deux modèles de processus C# soient pris en charge, seuls les exemples de modèles worker isolés sont fournis.

Exemple

Cet exemple montre comment effectuer une recherche sémantique sur un fichier.


public class EmbeddingsStoreOutputResponse
{
    [EmbeddingsStoreOutput("{url}", InputType.Url, "AISearchEndpoint", "openai-index", Model = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%")]
    public required SearchableDocument SearchableDocument { get; init; }

    public IActionResult? HttpResponse { get; set; }
}

Cet exemple montre comment effectuer une recherche sémantique sur un fichier.

        return searchableDocument;
    }

}

@FunctionName("PromptFile")
public HttpResponseMessage promptFile(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.POST},
        authLevel = AuthorizationLevel.ANONYMOUS)
        HttpRequestMessage<SemanticSearchRequest> request,
    @SemanticSearch(name = "search", connectionName = "AISearchEndpoint", collection = "openai-index", query = "{prompt}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", embeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%" ) String semanticSearchContext,
    final ExecutionContext context) {
        String response = new JSONObject(semanticSearchContext).getString("Response");

Aucun exemple n’est encore disponible.

Cet exemple montre comment effectuer une recherche sémantique sur un fichier.

    type: 'embeddings',
    maxChunkLength: 512,
    model: '%EMBEDDING_MODEL_DEPLOYMENT_NAME%'
})

app.http('getEmbeddingsFilePath', {
    methods: ['POST'],
    route: 'embeddings-from-file',
    authLevel: 'function',
    extraInputs: [embeddingsFilePathInput],
    handler: async (request, context) => {
        let requestBody: EmbeddingsFilePath = await request.json();
        let response: any = context.extraInputs.get(embeddingsFilePathInput);

        context.log(
            `Received ${response.count} embedding(s) for input file ${requestBody.FilePath}.`
        );
        
        // TODO: Store the embeddings into a database or other storage.

Cet exemple montre comment effectuer une recherche sémantique sur un fichier.

Voici le fichier function.json pour inviter un fichier :

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "name": "SemanticSearchInput",
      "type": "semanticSearch",
      "direction": "in",
      "connectionName": "AISearchEndpoint",
      "collection": "openai-index",
      "query": "{prompt}",
      "chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
      "embeddingsModel": "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
    }
  ]
}

Pour plus d’informations sur les propriétés du fichier function.json, consultez la section Configuration.

using namespace System.Net

param($Request, $TriggerMetadata, $SemanticSearchInput)

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body       = $SemanticSearchInput.Response
    })

Aucun exemple n’est encore disponible.

Attributs

Appliquez l’attribut SemanticSearchInput pour définir une liaison d’entrée de recherche sémantique, qui prend en charge ces paramètres :

Paramètre Description
ConnectionName Au lieu de cela, Nom d’un paramètre d’application ou d’une variable d’environnement qui contient la valeur de la chaîne de connexion. Cette propriété prend en charge les expressions de liaison.
Collection Nom de la collection, de la table ou de l’index ou effectuer la recherche. Cette propriété prend en charge les expressions de liaison.
Requête Le texte de requête sémantique à utiliser pour la recherche. Cette propriété prend en charge les expressions de liaison.
EmbeddingsModel L’ID du modèle à utiliser pour les incorporations. La valeur par défaut est text-embedding-3-small. Cette propriété prend en charge les expressions de liaison.
ChatModel Obtient ou définit le nom du modèle de langage volumineux à appeler pour les réponses lors des conversations. La valeur par défaut est gpt-3.5-turbo. Cette propriété prend en charge les expressions de liaison.
SystemPrompt Facultatif. Obtient ou définit l’invite système à utiliser pour inviter le modèle de langage volumineux. L’invite système est ajoutée avec des connaissances extraites à la suite de l’élément Query. L’invite combinée est envoyée à l’API de conversation OpenAI Chat. Cette propriété prend en charge les expressions de liaison.
MaxKnowledgeCount Facultatif. Obtient ou définit le nombre d’éléments de connaissances à injecter dans l’élément SystemPrompt.

Annotations

L’annotation SemanticSearchInput vous permet de définir une liaison d’entrée de recherche sémantique, qui prend en charge ces paramètres :

Élément Description
name Obtient ou définit le nom de la liaison d’entrée.
connectionName Au lieu de cela, Nom d’un paramètre d’application ou d’une variable d’environnement qui contient la valeur de la chaîne de connexion. Cette propriété prend en charge les expressions de liaison.
collection Nom de la collection, de la table ou de l’index ou effectuer la recherche. Cette propriété prend en charge les expressions de liaison.
query Le texte de requête sémantique à utiliser pour la recherche. Cette propriété prend en charge les expressions de liaison.
embeddingsModel L’ID du modèle à utiliser pour les incorporations. La valeur par défaut est text-embedding-3-small. Cette propriété prend en charge les expressions de liaison.
chatModel Obtient ou définit le nom du modèle de langage volumineux à appeler pour les réponses lors des conversations. La valeur par défaut est gpt-3.5-turbo. Cette propriété prend en charge les expressions de liaison.
systemPrompt Facultatif. Obtient ou définit l’invite système à utiliser pour inviter le modèle de langage volumineux. L’invite système est ajoutée avec des connaissances extraites à la suite de l’élément Query. L’invite combinée est envoyée à l’API de conversation OpenAI Chat. Cette propriété prend en charge les expressions de liaison.
maxKnowledgeCount Facultatif. Obtient ou définit le nombre d’éléments de connaissances à injecter dans l’élément SystemPrompt.

Décorateurs

Pendant la préversion, définissez la liaison d’entrée en tant que liaison generic_input_binding de type semanticSearch, qui prend en charge ces paramètres :

Paramètre Description
arg_name Le nom de la variable qui représente le paramètre de liaison.
connection_name Au lieu de cela, Nom d’un paramètre d’application ou d’une variable d’environnement qui contient la valeur de la chaîne de connexion. Cette propriété prend en charge les expressions de liaison.
collection Nom de la collection, de la table ou de l’index ou effectuer la recherche. Cette propriété prend en charge les expressions de liaison.
query Le texte de requête sémantique à utiliser pour la recherche. Cette propriété prend en charge les expressions de liaison.
embeddings_model L’ID du modèle à utiliser pour les incorporations. La valeur par défaut est text-embedding-3-small. Cette propriété prend en charge les expressions de liaison.
chat_model Obtient ou définit le nom du modèle de langage volumineux à appeler pour les réponses lors des conversations. La valeur par défaut est gpt-3.5-turbo. Cette propriété prend en charge les expressions de liaison.
system_prompt Facultatif. Obtient ou définit l’invite système à utiliser pour inviter le modèle de langage volumineux. L’invite système est ajoutée avec des connaissances extraites à la suite de l’élément Query. L’invite combinée est envoyée à l’API de conversation OpenAI Chat. Cette propriété prend en charge les expressions de liaison.
max_knowledge_count Facultatif. Obtient ou définit le nombre d’éléments de connaissances à injecter dans l’élément SystemPrompt.

Configuration

La liaison prend en charge ces propriétés de configuration que vous définissez dans le fichier function.json.

Propriété Description
type Doit être semanticSearch.
direction Doit être in.
name Le nom de la liaison d’entrée.
connectionName Obtient ou définit le nom d’un paramètre d’application ou d’une variable d’environnement qui contient une valeur de la chaîne de connexion. Cette propriété prend en charge les expressions de liaison.
collection Nom de la collection, de la table ou de l’index ou effectuer la recherche. Cette propriété prend en charge les expressions de liaison.
query Le texte de requête sémantique à utiliser pour la recherche. Cette propriété prend en charge les expressions de liaison.
embeddingsModel L’ID du modèle à utiliser pour les incorporations. La valeur par défaut est text-embedding-3-small. Cette propriété prend en charge les expressions de liaison.
chatModel Obtient ou définit le nom du modèle de langage volumineux à appeler pour les réponses lors des conversations. La valeur par défaut est gpt-3.5-turbo. Cette propriété prend en charge les expressions de liaison.
systemPrompt Facultatif. Obtient ou définit l’invite système à utiliser pour inviter le modèle de langage volumineux. L’invite système est ajoutée avec des connaissances extraites à la suite de l’élément Query. L’invite combinée est envoyée à l’API de conversation OpenAI Chat. Cette propriété prend en charge les expressions de liaison.
maxKnowledgeCount Facultatif. Obtient ou définit le nombre d’éléments de connaissances à injecter dans l’élément SystemPrompt.

Configuration

La liaison prend en charge ces propriétés, qui sont définies dans votre code :

Propriété Description
connectionName Au lieu de cela, Nom d’un paramètre d’application ou d’une variable d’environnement qui contient la valeur de la chaîne de connexion. Cette propriété prend en charge les expressions de liaison.
collection Nom de la collection, de la table ou de l’index ou effectuer la recherche. Cette propriété prend en charge les expressions de liaison.
query Le texte de requête sémantique à utiliser pour la recherche. Cette propriété prend en charge les expressions de liaison.
embeddingsModel L’ID du modèle à utiliser pour les incorporations. La valeur par défaut est text-embedding-3-small. Cette propriété prend en charge les expressions de liaison.
chatModel Obtient ou définit le nom du modèle de langage volumineux à appeler pour les réponses lors des conversations. La valeur par défaut est gpt-3.5-turbo. Cette propriété prend en charge les expressions de liaison.
systemPrompt Facultatif. Obtient ou définit l’invite système à utiliser pour inviter le modèle de langage volumineux. L’invite système est ajoutée avec des connaissances extraites à la suite de l’élément Query. L’invite combinée est envoyée à l’API de conversation OpenAI Chat. Cette propriété prend en charge les expressions de liaison.
maxKnowledgeCount Facultatif. Obtient ou définit le nombre d’éléments de connaissances à injecter dans l’élément SystemPrompt.

Utilisation

Pour obtenir des exemples complets, consultez la section Exemple.