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 モデル 例のみが提供されます。
例
この例では、ファイルに対してセマンティック検索を実行する方法を示しています。
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; }
}
この例では、ファイルに対してセマンティック検索を実行する方法を示しています。
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 に挿入するナレッジ項目の数を取得または設定します。 |
使用方法
完全な例については、セクションの例を参照してください。