Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
使用自定义 Web API 矢量器,可以将搜索查询配置为调用在查询时生成嵌入的 Web API 终结点。 本文稍后将介绍终结点所需的 JSON 有效负载结构。 您的数据在模型部署的地理位置中进行处理。
尽管矢量化器在查询时使用,但您需要在索引定义中指定它们,并通过矢量概况在向量字段上引用它们。 有关详细信息,请参阅 在搜索索引中配置向量器。
自定义 Web API 向量器在 REST API 中被称为 WebApiVectorizer。 使用最新的稳定版 Indexes - 创建 (REST API) 或提供该功能的Azure SDK包。
矢量器参数
参数区分大小写。
| 参数名称 | 说明 |
|---|---|
uri |
JSON 有效负载被发送到的 Web API 的 URI。 仅支持 https URI 方案。 使用 GET 检索索引时,服务将返回 ?code= 查询参数值, ?code=<redacted> 以防止泄露函数键。 若要在不更改存储的 URI 的情况下更新向量器,请设置为 uri<unchanged>。 |
httpMethod |
用于发送有效负载的方法。 允许的方法为 PUT 或 POST。 |
httpHeaders |
由键值对组成的集合,其中键为标头名称,值会被发送到你的 Web API。 禁止以下标头:Accept、、Accept-CharsetAccept-Encoding、Content-LengthContent-Type、、Cookie、、Host、TE、 Upgrade和Via。 GET 为每个标头值返回哨兵值 <redacted>。 有关更新要求,请参阅 GET 后更新标头值。 |
authResourceId |
(可选)一个字符串,如果已设置,则指示此向量器使用托管标识连接到托管代码的函数或应用。 此属性采用应用程序(客户端)ID 或 Microsoft Entra ID 中的应用注册,格式如下:api://<appId>、<appId>/.default、api://<appId>/.default。 此值定义了查询管道检索的身份验证令牌的范围,并通过自定义 Web API 请求将其发送到函数或应用。 设置此属性要求搜索服务配置托管标识,并且 Azure Functions 应用配置 Microsoft Entra 身份验证。 |
authIdentity |
(可选)搜索服务使用的用户管理的身份,用以连接到托管代码的函数或应用。 可以使用 系统托管标识或用户托管标识。 若要使用系统托管标识,请留 authIdentity 空。 |
timeout |
(可选)用于发出 API 调用的 HTTP 客户端的超时时间。 它必须格式化为 XSD dayTimeDuration 值( ISO 8601 持续时间 值的受限子集)。 例如, PT60S 表示 60 秒。 如果未设置,则默认值为 30 秒。 超时时间可以介于 1 到 230 秒之间。 |
支持的矢量查询类型
自定义 Web API 矢量器支持 text、imageUrl 和 imageBinary 矢量查询。
示例定义
"vectorizers": [
{
"name": "my-custom-web-api-vectorizer",
"kind": "customWebApi",
"customWebApiParameters": {
"uri": "https://contoso.embeddings.com",
"httpMethod": "POST",
"httpHeaders": {
"api-key": "<your-header-value>"
},
"timeout": "PT60S",
"authResourceId": null,
"authIdentity": null
}
}
]
在 GET 之后更新标头值
获取索引定义时,服务会为自定义 Web API 向量化器中的每个 httpHeaders 值返回哨兵值 <redacted>。 例如:
{
"name": "my-custom-web-api-vectorizer",
"kind": "customWebApi",
"customWebApiParameters": {
"uri": "https://contoso.embeddings.com",
"httpMethod": "POST",
"httpHeaders": {
"api-key": "<redacted>"
},
"timeout": "PT60S",
"authResourceId": null,
"authIdentity": null
}
}
若要重用已存储的 api-key 值,请使用相同的 name 和 kind 更新同一个现有向量器,保持其 uri 不变,并针对对应的标头名称重新提交哨兵值:
{
"name": "my-custom-web-api-vectorizer",
"kind": "customWebApi",
"customWebApiParameters": {
"uri": "https://contoso.embeddings.com",
"httpMethod": "POST",
"httpHeaders": {
"api-key": "<redacted>"
},
"timeout": "PT60S",
"authResourceId": null,
"authIdentity": null
}
}
在 uri 保持不变的情况下,您可以将用于保留标头值的 <redacted> 与其他现有标头的实际替换值混用。 为每个已添加或重命名的标头提供实际值,因为 sentinel 仅适用于同一向量器上具有相同名称的现有标头。
如果更改了 uri,请在同一次更新中为每个 httpHeaders 条目提供实际值。 该服务不会为不同的 uri值重复使用存储的值:
{
"name": "my-custom-web-api-vectorizer",
"kind": "customWebApi",
"customWebApiParameters": {
"uri": "https://new.contoso.embeddings.com",
"httpMethod": "POST",
"httpHeaders": {
"api-key": "<new-header-value>"
},
"timeout": "PT60S",
"authResourceId": null,
"authIdentity": null
}
}
如果凭据不可用,则必须在外部终结点更改 uri、轮换或重新生成凭据。 然后将新的 uri 值和请求头值一并提交。
<redacted> 值是服务哨兵值,不是凭据。 它无法创建向量器或检索或重复使用为另一个向量器存储的标头值。
JSON 数据负载结构
用于自定义 Web API 向量器的终结点所需的 JSON 负载结构与自定义 Web API 技能所使用的结构相同。 有关详细信息,请参阅 技能文档。
为自定义 Web API 向量器实现 Web API 终结点时,请记住以下注意事项:
向终结点发出请求时,矢量器在
values阵列中一次只发送一条记录。矢量器将要矢量化的数据传递到请求有效负载中
dataJSON 对象的特定键中。 键为text、imageUrl或imageBinary,具体取决于请求的矢量查询类型。矢量器期望得到的嵌入位于响应有效负载中
vectorJSON 对象的data键下。向量器忽略终结点返回的任何错误或警告。 这些错误和警告不适用于查询时调试。
如果请求了
imageBinary矢量查询,则发送到终结点的请求有效负载如下:{ "values": [ { "recordId": "0", "data": { "imageBinary": { "data": "<base 64 encoded image binary data>" } } } ] }