你当前正在访问 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 的知识项数。 |
使用情况
有关完整示例,请参阅示例部分。