你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure OpenAI 嵌入技能连接到部署到 Foundry 模型资源中的 Azure OpenAI 的嵌入模型,或Microsoft Foundry 项目在索引编制过程中生成嵌入内容。 数据在部署模型的地理位置进行处理。
Azure 门户中的“导入数据”向导使用 Azure OpenAI 嵌入技能来向量内容。 你可以运行向导并查看生成的技能集,了解向导如何构建用于嵌入模型的技能。
Note
此技能绑定到 Azure OpenAI,按 Azure OpenAI 标准版价格收费。
Prerequisites
Foundry Models 资源或 Foundry 项目中的 Azure OpenAI。
Azure OpenAI 资源必须具有 自定义子域,例如
https://<resource-name>.openai.azure.com。 可以在 Azure 门户中的 “密钥和终结点 ”页上找到此终结点,并将其用于resourceUri此技能中的属性。Foundry 项目的 父资源 提供对多个终结点(包括
https://<resource-name>.openai.azure.com和https://<resource-name>.services.ai.azure.com)https://<resource-name>.cognitiveservices.azure.com的访问权限。 可以在 Azure 门户中的 “密钥和终结点 ”页上找到这些终结点,并将其中任何终结点用于resourceUri此技能中的属性。
部署到资源或项目的 Azure OpenAI 嵌入模型。 有关支持的模型,请参阅 “技能参数 ”部分。
@odata.type
Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill
数据限制
文本输入的最大大小应为 8,000 个标记。 如果输入超出允许的最大值,模型将引发“请求无效”错误。 有关详细信息,请参阅 Azure OpenAI 文档中的令牌关键概念。 如果需要数据分块,请考虑使用文本拆分技能。
技能参数
参数区分大小写。
| Inputs | Description |
|---|---|
resourceUri |
(必需)模型提供程序的 URI。 支持的域包括:
如果资源部署在专用终结点后面或使用虚拟网络(VNet)集成,则需要此字段。 URL 支持 |
apiKey |
用于访问模型的密钥。 如果你提供密钥,请将 authIdentity 留空。 如果同时设置这两个 apiKey 设置, authIdentity则会 apiKey 在连接上使用。 |
deploymentId |
(必需)已部署的 Azure OpenAI 嵌入模型的 ID。 这是部署模型时指定的部署名称。 |
authIdentity |
搜索服务用于连接的用户托管标识。 可以使用 系统或用户托管标识。 若要使用系统托管标识,请保留并authIdentity留apiKey空。 会自动使用系统托管标识。 托管标识必须具有认知服务 OpenAI 用户权限才能将文本发送到 Azure OpenAI。 |
modelName |
(必需)在指定 deploymentId位置部署的 Azure OpenAI 模型的名称。 支持的值有:
|
dimensions |
(可选)假设模型 支持一系列维度,则要生成的嵌入维度。 默认值是每个模型的最大维度。 对于使用 2023-10-01-preview 之前的 REST API 版本创建的技能集,维度固定在 1536。 如果在此技能中设置dimensions属性,请将dimensions向量字段定义上的属性设置为相同的值。 |
modelName支持的维度
Azure OpenAI 嵌入技能支持的维度取决于配置的modelName。
modelName |
最小尺寸 | 最大尺寸 |
|---|---|---|
| text-embedding-ada-002 | 1536 | 1536 |
| text-embedding-3-large | 1 | 3072 |
| text-embedding-3-small | 1 | 1536 |
技能输入
| Input | Description |
|---|---|
text |
要矢量化的输入文本。 如果使用数据分块,则源可能是 /document/pages/*。 |
技能输出
| Output | Description |
|---|---|
embedding |
输入文本的矢量化嵌入。 |
示例定义
考虑具有以下字段的记录:
{
"content": "Microsoft released Windows 10."
}
然后,技能定义可能会如下所示:
{
"@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
"description": "Connects a deployed embedding model.",
"resourceUri": "https://my-demo-openai-eastus.openai.azure.com/",
"deploymentId": "my-text-embedding-ada-002-model",
"modelName": "text-embedding-ada-002",
"dimensions": 1536,
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "embedding"
}
]
}
示例输出
对于给定的输入文本,将生成矢量化嵌入输出。
{
"embedding": [
0.018990106880664825,
-0.0073809814639389515,
....
0.021276434883475304,
]
}
输出驻留在内存中。 若要将此输出发送到搜索索引中的字段,必须定义一个 outputFieldMapping,用于将矢量化的嵌入输出(即数组)映射到一个矢量字段。 假设技能输出驻留在文档的嵌入节点中,且 content_vector 是搜索索引中的字段,那么索引器中的 outputFieldMapping 应如下所示:
"outputFieldMappings": [
{
"sourceFieldName": "/document/embedding/*",
"targetFieldName": "content_vector"
}
]
最佳做法
以下是使用此技能时需要考虑的一些最佳做法:
如果达到 Azure OpenAI TPM(每分钟令牌数)限制,请考虑配额限制咨询以便可以相应地解决。 有关 Azure OpenAI 实例性能的详细信息,请参阅Azure OpenAI 监视文档。
理想情况下,用于此技能的 Azure OpenAI 嵌入模型部署应与用于其他用例的部署(包括查询向量器)分开。 这有助于为其特定用例定制每个部署,从而优化性能并轻松确定来自索引器和索引嵌入调用的流量。
Azure OpenAI 实例应位于同一区域,或者至少在地理上靠近托管 AI 搜索服务的区域。 这可降低延迟并提高服务之间的数据传输速度。
如果 Azure OpenAI TPM(每分钟令牌数)大于配额和限制文档中发布的默认值,请向 Azure AI 搜索团队提交支持案例,以便可以相应地进行调整。 这有助于索引过程不会因记录的默认 TPM 限制而不必要地减慢(如果你有更高的限制)。
有关使用此技能的示例和工作代码示例,请参阅以下链接:
错误和警告
| Condition | Result |
|---|---|
| null 或无效 URI | Error |
| null 或无效的 deploymentID | Error |
| 文本为空 | Warning |
| 文本大于 8,000 个标记 | Error |