Azure OpenAI 嵌入技能连接到部署到 Foundry 模型资源中的 Azure OpenAI 的嵌入模型,或Microsoft Foundry 项目在索引编制过程中生成嵌入内容。 数据在部署模型的地理位置进行处理。
Azure 门户中的“导入数据”向导使用 Azure OpenAI 嵌入技能来向量内容。 你可以运行向导并查看生成的技能集,了解向导如何构建用于嵌入模型的技能。
注意
此技能绑定到 Azure OpenAI,按 Azure OpenAI 标准版价格收费。
@odata.type
Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill
数据限制
文本输入的最大大小应为 8,000 个标记。 如果输入超出允许的最大值,模型将引发“请求无效”错误。 有关详细信息,请参阅 Azure OpenAI 文档中的令牌关键概念。 如果需要数据分块,请考虑使用文本拆分技能。
技能参数
参数区分大小写。
| 输入 | 说明 |
|---|---|
resourceUri |
(必需)模型提供程序的 URI。 支持的域包括:
如果资源部署在专用终结点后面或使用虚拟网络(VNet)集成,则需要此字段。 URL 支持 |
apiKey |
用于访问模型的密钥。 如果你提供密钥,请将 authIdentity 留空。 如果同时设置这两个 apiKey 设置, authIdentity则会 apiKey 在连接上使用。 |
deploymentId |
(必需)已部署的 Azure OpenAI 嵌入模型的 ID。 这是部署模型时指定的部署名称。 |
authIdentity |
搜索服务用于连接的用户托管标识。 可以使用 系统或用户托管标识。 若要使用系统托管标识,请保留并apiKey留authIdentity空。 会自动使用系统托管标识。 托管标识必须具有认知服务 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 |
技能输入
| 输入 | 说明 |
|---|---|
text |
要矢量化的输入文本。 如果使用数据分块,则源可能是 /document/pages/*。 |
技能输出
| 输出 | 说明 |
|---|---|
embedding |
输入文本的矢量化嵌入。 |
示例定义
考虑具有以下字段的记录:
{
"content": "Microsoft released Windows 10."
}
然后,技能定义可能会如下所示:
{
"@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
"description": "Connects a deployed embedding model.",
"resourceUri": "https://my-demo-openai-chinaeast.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"
}
]
错误和警告
| 条件 | 结果 |
|---|---|
| null 或无效 URI | 错误 |
| null 或无效的 deploymentID | 错误 |
| 文本为空 | 警告 |
| 文本大于 8,000 个标记 | 错误 |