适用于:✅Azure 数据资源管理器
该 ai_embeddings
插件允许使用语言模型嵌入文本,从而启用各种与 AI 相关的方案,例如检索扩充生成(RAG)应用程序和语义搜索。 该插件使用 Azure OpenAI 服务嵌入模型,可以使用托管标识或用户的标识(模拟)进行访问。
先决条件
- 至少配置了分配给所用标识的 Azure OpenAI 服务(认知服务 OpenAI 用户)角色。
- 配置为允许调用 AI 服务的 标注策略 。
- 使用托管标识访问 Azure OpenAI 服务时,请将 托管标识策略 配置为允许与服务通信。
语法
evaluate
ai_embeddings
(
text, connectionString [,
options [,
IncludeErrorMessages]])
详细了解语法约定。
参数
名称 | 类型 | 必选 | DESCRIPTION |
---|---|---|---|
文本 | string |
✔️ | 要嵌入的文本。 该值可以是列引用或常量标量。 |
connectionString 连接字符串 | string |
✔️ | 格式<ModelDeploymentUri>;<AuthenticationMethod> 的语言模型连接字符串;分别替换为 <ModelDeploymentUri> <AuthenticationMethod> AI 模型部署 URI 和身份验证方法。 |
选项 | dynamic |
控制对嵌入模型终结点的调用的选项。 请参阅选项。 | |
IncludeErrorMessages | bool |
指示是否在输出表中的新列中输出错误。 默认值:false 。 |
选项
下表介绍了控制向嵌入模型终结点发出请求的方式的选项。
名称 | 类型 | DESCRIPTION |
---|---|---|
RecordsPerRequest |
int |
指定要处理每个请求的记录数。 默认值:1 。 |
CharsPerRequest |
int |
指定要处理每个请求的最大字符数。 默认值: 0 (无限制)。 Azure OpenAI 对令牌进行计数,每个令牌大约转换为四个字符。 |
RetriesOnThrottling |
int |
指定发生限制时重试尝试次数。 默认值:0 。 |
GlobalTimeout |
timespan |
指定等待嵌入模型响应的最长时间。 默认值:null |
ModelParameters |
dynamic |
特定于嵌入模型的参数,例如用于监视的嵌入维度或用户标识符。 默认值:null 。 |
ReturnSuccessfulOnly |
bool |
指示是否仅返回已成功处理的项。 默认值:false 。
如果 IncludeErrorMessages 参数设置为 true ,则此选项始终设置为 false 。 |
配置标注策略
标注 azure_openai
策略 允许外部调用 Azure AI 服务。
若要配置标注策略以授权 AI 模型终结点域:
.alter-merge cluster policy callout
```
[
{
"CalloutType": "azure_openai",
"CalloutUriRegex": "https://[A-Za-z0-9\\-]{3,63}\\.openai\\.chinacloudapi\\.cn/.*",
"CanCall": true
}
]
```
配置托管标识
使用托管标识访问 Azure OpenAI 服务时,必须配置 托管标识策略 ,以允许系统分配的托管标识向 Azure OpenAI 服务进行身份验证。
配置托管标识:
.alter-merge cluster policy managed_identity
```
[
{
"ObjectId": "system",
"AllowedUsages": "AzureAI"
}
]
```
退货
返回以下新的嵌入列:
- 带有 _embeddings 后缀的列,其中包含嵌入值
- 如果配置为返回错误,则为 _embedding_error 后缀的列,其中包含错误字符串;如果操作成功,则为空。
插件根据输入类型返回不同的结果:
- 列引用:返回一个或多个包含其他列的记录以引用列名称为前缀。 例如,如果输入列名为 TextData,则输出列将命名 为TextData_embedding ,如果配置为返回错误, TextData_embedding_error。
- 常量标量:返回包含不带前缀的其他列的单个记录。 列名称 _embedding ,如果配置为返回错误, _embedding_error。
例子
以下示例使用 Azure OpenAI 嵌入模型嵌入文本 Embed this text using AI
。
以下示例使用 Azure OpenAI 嵌入模型嵌入多个文本。
let connectionString = 'https://myaccount.openai.azure.com/openai/deployments/text-embedding-3-small/embeddings?api-version=2024-06-01;managed_identity=system';
let options = dynamic({
"RecordsPerRequest": 10,
"CharsPerRequest": 10000,
"RetriesOnThrottling": 1,
"GlobalTimeout": 2m
});
datatable(TextData: string)
[
"First text to embed",
"Second text to embed",
"Third text to embed"
]
| evaluate ai_embeddings(TextData, connectionString, options , true)
最佳做法
Azure OpenAI 嵌入模型受重限制的约束,并且频繁调用此插件可以快速达到限制。
若要有效地使用 ai_embeddings
插件,同时最大程度地减少限制和成本,请遵循以下最佳做法:
-
控制请求大小:调整每个请求的记录数(
RecordsPerRequest
)和字符数(CharsPerRequest
)。 -
控制查询超时:设置为低于查询
GlobalTimeout
的值,以确保在成功调用到该时间点时不会丢失进度。 -
更正常地处理速率限制:对限制设置重试(
RetriesOnThrottling
)。