你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Functions 的 Azure OpenAI 语义搜索输入绑定

重要

适用于 Azure Functions 的 Azure OpenAI 扩展目前为预览版。

通过 Azure OpenAI 语义搜索输入绑定,可以对嵌入内容使用语义搜索。

如需了解有关 Azure OpenAI 扩展的设置和配置详细信息,请参阅适用于 Azure Functions 的 Azure OpenAI 扩展。 若要详细了解 Azure AI 搜索中的语义排名,请参阅 Azure AI 搜索中的语义排名

注意

仅提供了适用于 Node.js v4 模型的参考和示例。

注意

仅提供了适用于 Python v2 模型的参考和示例。

注意

虽然支持这两个 C# 进程模型,但仅 提供了独立的辅助角色模型 示例。

示例

此示例演示如何对文件执行语义搜索。


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

此示例演示如何对文件执行语义搜索。

const semanticSearchInput = input.generic({
    type: "semanticSearch",
    connectionName: "AISearchEndpoint",
    collection: "openai-index",
    query: "{prompt}",
    chatModel: "%CHAT_MODEL_DEPLOYMENT_NAME%",
    embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
});

app.http('PromptFile', {
    methods: ['POST'],
    authLevel: 'function',
    extraInputs: [semanticSearchInput],
    handler: async (_request, context) => {
        var responseBody = context.extraInputs.get(semanticSearchInput)

        return { status: 200, body: responseBody.Response.trim() }
    }
});
const semanticSearchInput = input.generic({
    type: "semanticSearch",
    connectionName: "AISearchEndpoint",
    collection: "openai-index",
    query: "{prompt}",
    chatModel: "%CHAT_MODEL_DEPLOYMENT_NAME%",
    embeddingsModel: "%EMBEDDING_MODEL_DEPLOYMENT_NAME%"
});

app.http('PromptFile', {
    methods: ['POST'],
    authLevel: 'function',
    extraInputs: [semanticSearchInput],
    handler: async (_request, context) => {
        var responseBody: any = context.extraInputs.get(semanticSearchInput)

        return { status: 200, body: responseBody.Response.trim() }
    }
});

此示例演示如何对文件执行语义搜索。

下面是 提示文件的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 表示绑定参数的变量的名称。
connection_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 文件中设置的这些配置属性。

properties 说明
type 必须是 semanticSearch
direction 必须是 in
name 输入绑定的名称。
connectionName 获取或设置包含连接字符串值的应用设置或环境变量的名称。 此属性支持绑定表达式。
collection 要搜索的集合、表或索引的名称。 此属性支持绑定表达式。
查询 用于搜索的语义查询文本。 此属性支持绑定表达式。
embeddingsModel 要用于嵌入内容的模型的 ID。 默认值为 text-embedding-3-small。 此属性支持绑定表达式。
chatModel 获取或设置为响应聊天而需要调用的大语言模型的名称。 默认值为 gpt-3.5-turbo。 此属性支持绑定表达式。
systemPrompt 可选。 获取或设置作为大型语言模型提示词的系统提示词。 系统提示后面会追加因 Query 而提取的知识。 合并的提示将发送到 OpenAI 聊天 API。 此属性支持绑定表达式。
maxKnowledgeCount 可选。 获取或设置要注入 SystemPrompt 的知识项数。

配置

绑定支持以下属性,这些属性在代码中定义:

properties 说明
connectionName 包含连接字符串值的应用设置或环境变量的名称。 此属性支持绑定表达式。
collection 要搜索的集合、表或索引的名称。 此属性支持绑定表达式。
查询 用于搜索的语义查询文本。 此属性支持绑定表达式。
embeddingsModel 要用于嵌入内容的模型的 ID。 默认值为 text-embedding-3-small。 此属性支持绑定表达式。
chatModel 获取或设置为响应聊天而需要调用的大语言模型的名称。 默认值为 gpt-3.5-turbo。 此属性支持绑定表达式。
systemPrompt 可选。 获取或设置作为大型语言模型提示词的系统提示词。 系统提示后面会追加因 Query 而提取的知识。 合并的提示将发送到 OpenAI 聊天 API。 此属性支持绑定表达式。
maxKnowledgeCount 可选。 获取或设置要注入 SystemPrompt 的知识项数。

使用情况

有关完整示例,请参阅示例部分