Azure Functions の Azure OpenAI セマンティック検索入力バインド

重要

Azure Functions 用の Azure OpenAI 拡張機能は現在、プレビュー段階です。

Azure OpenAI セマンティック検索入力バインドを使用すると、埋め込みでセマンティック検索を使用できます。

Azure OpenAI 拡張機能のセットアップと構成の詳細については、「Azure Functions 用の Azure OpenAI 拡張機能」を参照してください。 Azure AI 検索でのセマンティック ランク付けの詳細については、「Azure AI Search でのセマンティック ランク付け」を参照してください。

Note

リファレンスと例は、Node.js v4 モデルに対してのみ提供されています。

Note

リファレンスと例は、Python v2 モデルに対してのみ提供されます。

Note

両方の C# プロセス モデルがサポートされていますが、 isolated worker モデル 例のみが提供されます。

この例では、ファイルに対してセマンティック検索を実行する方法を示しています。

    [Function("PromptFile")]
    public static IActionResult PromptFile(
        [HttpTrigger(AuthorizationLevel.Function, "post")] SemanticSearchRequest unused,
        [SemanticSearchInput("AISearchEndpoint", "openai-index", Query = "{Prompt}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", EmbeddingsModel = "%EMBEDDING_MODEL_DEPLOYMENT_NAME%")] SemanticSearchContext result)
    {
        return new ContentResult { Content = result.Response, ContentType = "text/plain" };
    }
}

この例では、ファイルに対してセマンティック検索を実行する方法を示しています。

        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");

利用できる例はまだありません。

この例では、ファイルに対してセマンティック検索を実行する方法を示しています。

    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.

この例では、ファイルに対してセマンティック検索を実行する方法を示しています。

ファイルを要求するための function.json ファイルを次に示します。

{
  "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%"
    }
  ]
}

function.json ファイルのプロパティについて詳しくは、「構成」セクションをご覧ください。

using namespace System.Net

param($Request, $TriggerMetadata, $SemanticSearchInput)

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

利用できる例はまだありません。

属性

SemanticSearchInput 属性を適用して、これらのパラメーターをサポートするセマンティック検索入力バインドを定義します。

パラメーター 説明
ConnectionName 接続文字列の値を含むアプリ設定または環境変数の名前。 このプロパティは、バインド式をサポートしています。
コレクション 検索するコレクション、テーブル、またはインデックスの名前。 このプロパティは、バインド式をサポートしています。
クエリ 検索に使用するセマンティック クエリ テキスト。 このプロパティは、バインド式をサポートしています。
EmbeddingsModel 埋め込みに使用するモデルの ID。 既定値は text-embedding-3-small です。 このプロパティは、バインド式をサポートしています。
ChatModel チャット応答用に呼び出す大規模言語モデルの名前を取得または設定します。 既定値は gpt-3.5-turbo です。 このプロパティは、バインド式をサポートしています。
SystemPrompt 省略可。 大規模言語モデルのプロンプトに使用するシステム プロンプトを取得または設定します。 システム プロンプトには、Query の結果としてフェッチされるナレッジが追加されます。 結合されたプロンプトが OpenAI チャット API に送信されます。 このプロパティは、バインド式をサポートしています。
MaxKnowledgeCount 省略可。 SystemPrompt に挿入するナレッジ項目の数を取得または設定します。

注釈

SemanticSearchInput 注釈を使用すると、これらのパラメーターをサポートするセマンティック検索入力バインドを定義できます。

要素 説明
name 入力バインドの名前を取得または設定します。
connectionName 接続文字列の値を含むアプリ設定または環境変数の名前。 このプロパティは、バインド式をサポートしています。
collection 検索するコレクション、テーブル、またはインデックスの名前。 このプロパティは、バインド式をサポートしています。
クエリ 検索に使用するセマンティック クエリ テキスト。 このプロパティは、バインド式をサポートしています。
embeddingsModel 埋め込みに使用するモデルの ID。 既定値は text-embedding-3-small です。 このプロパティは、バインド式をサポートしています。
chatModel チャット応答用に呼び出す大規模言語モデルの名前を取得または設定します。 既定値は gpt-3.5-turbo です。 このプロパティは、バインド式をサポートしています。
systemPrompt 省略可。 大規模言語モデルのプロンプトに使用するシステム プロンプトを取得または設定します。 システム プロンプトには、Query の結果としてフェッチされるナレッジが追加されます。 結合されたプロンプトが OpenAI チャット API に送信されます。 このプロパティは、バインド式をサポートしています。
maxKnowledgeCount 省略可。 SystemPrompt に挿入するナレッジ項目の数を取得または設定します。

デコレーター

プレビュー中に、入力バインドを次のパラメーターをサポートする semanticSearch 型の generic_input_binding バインドとして定義します。

パラメーター 説明
arg_name バインド パラメーターを表す変数の名前。
接続名 接続文字列の値を含むアプリ設定または環境変数の名前。 このプロパティは、バインド式をサポートしています。
collection 検索するコレクション、テーブル、またはインデックスの名前。 このプロパティは、バインド式をサポートしています。
クエリ 検索に使用するセマンティック クエリ テキスト。 このプロパティは、バインド式をサポートしています。
embeddings_model 埋め込みに使用するモデルの ID。 既定値は text-embedding-3-small です。 このプロパティは、バインド式をサポートしています。
chat_model チャット応答用に呼び出す大規模言語モデルの名前を取得または設定します。 既定値は gpt-3.5-turbo です。 このプロパティは、バインド式をサポートしています。
system_prompt 省略可。 大規模言語モデルのプロンプトに使用するシステム プロンプトを取得または設定します。 システム プロンプトには、Query の結果としてフェッチされるナレッジが追加されます。 結合されたプロンプトが OpenAI チャット API に送信されます。 このプロパティは、バインド式をサポートしています。
max_knowledge_count 省略可。 SystemPrompt に挿入するナレッジ項目の数を取得または設定します。

構成

このバインドでは、function.json ファイルで設定したこれらの構成プロパティをサポートします。

プロパティ 説明
type semanticSearchである必要があります。
direction inである必要があります。
name 入力バインドの名前。
connectionName 接続文字列の値を含むアプリ設定または環境変数の名前を取得または設定します。 このプロパティは、バインド式をサポートしています。
collection 検索するコレクション、テーブル、またはインデックスの名前。 このプロパティは、バインド式をサポートしています。
クエリ 検索に使用するセマンティック クエリ テキスト。 このプロパティは、バインド式をサポートしています。
embeddingsModel 埋め込みに使用するモデルの ID。 既定値は text-embedding-3-small です。 このプロパティは、バインド式をサポートしています。
chatModel チャット応答用に呼び出す大規模言語モデルの名前を取得または設定します。 既定値は gpt-3.5-turbo です。 このプロパティは、バインド式をサポートしています。
systemPrompt 省略可。 大規模言語モデルのプロンプトに使用するシステム プロンプトを取得または設定します。 システム プロンプトには、Query の結果としてフェッチされるナレッジが追加されます。 結合されたプロンプトが OpenAI チャット API に送信されます。 このプロパティは、バインド式をサポートしています。
maxKnowledgeCount 省略可。 SystemPrompt に挿入するナレッジ項目の数を取得または設定します。

構成

このバインドでは、コードで定義されている、これらのプロパティをサポートします。

プロパティ 説明
connectionName 接続文字列の値を含むアプリ設定または環境変数の名前。 このプロパティは、バインド式をサポートしています。
collection 検索するコレクション、テーブル、またはインデックスの名前。 このプロパティは、バインド式をサポートしています。
クエリ 検索に使用するセマンティック クエリ テキスト。 このプロパティは、バインド式をサポートしています。
embeddingsModel 埋め込みに使用するモデルの ID。 既定値は text-embedding-3-small です。 このプロパティは、バインド式をサポートしています。
chatModel チャット応答用に呼び出す大規模言語モデルの名前を取得または設定します。 既定値は gpt-3.5-turbo です。 このプロパティは、バインド式をサポートしています。
systemPrompt 省略可。 大規模言語モデルのプロンプトに使用するシステム プロンプトを取得または設定します。 システム プロンプトには、Query の結果としてフェッチされるナレッジが追加されます。 結合されたプロンプトが OpenAI チャット API に送信されます。 このプロパティは、バインド式をサポートしています。
maxKnowledgeCount 省略可。 SystemPrompt に挿入するナレッジ項目の数を取得または設定します。

使用方法

完全な例については、セクションの例を参照してください。