向量嵌入 REST API¶
Cortex REST API 提供了一个端点,让您可以使用 AI_EMBED 函数来执行 向量嵌入。
设置身份验证¶
要向 Cortex REST API 进行身份验证,可以使用 使用 Snowflake 对 Snowflake REST APIs 进行身份验证 中所述的方法。
设置 Authorization 标头以包含您的令牌(例如,JSON 网络令牌 [JWT])、OAuth 令牌或 程序化访问令牌)。
小技巧
考虑为 Cortex REST API 请求创建专用用户。
端点格式¶
您可以向 /api/v2/cortex/inference:embed 端点发出请求,为您的文本创建嵌入。因此,请求采用以下形式:
其中,account_identifier 是您用来访问 Snowsight 的 账户标识符。
模型可用性¶
下表显示了您可以使用 REST API 提示的 EMBED 函数模型。
模型
|
AWS US 西部 2
(俄勒冈)
|
AWS US 东部 1
(弗吉尼亚北部)
|
AWS 欧洲中部 1
(法兰克福)
|
AWS 欧洲西部 1
(爱尔兰)
|
AWS AP 东南部 2
(悉尼)
|
AWS AP 东北部 1
(东京)
|
Azure 东部 US 2
(弗吉尼亚)
|
Azure 西欧
(荷兰)
|
|---|---|---|---|---|---|---|---|---|
snowflake-arctic-embed-m-v1.5 |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
snowflake-arctic-embed-m |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
e5-base-v2 |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||
snowflake-arctic-embed-l-v2.0 |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
下表显示了每个模型可以返回的维度数。
模型
|
维度
数量
|
|---|---|
snowflake-arctic-embed-m-v1.5 |
768 |
snowflake-arctic-embed-m |
768 |
e5-base-v2 |
768 |
snowflake-arctic-embed-l-v2.0 |
1024 |
API 参考¶
POST /api/v2/cortex/inference:embed¶
为您指定的文本创建嵌入。
必要标头
Authorization: Bearer token。对请求的授权。 是 Web 令牌 ()、 令牌或 编程访问令牌 。有关详细信息,请参阅 使用 Snowflake 对 Snowflake REST APIs 进行身份验证。
Content-Type: application/json指定请求的主体是 JSON 格式。
Accept: application/json指定响应包含 JSON。
可选标头¶
必要 JSON 实参¶
实参 |
类型 |
描述 |
|---|---|---|
|
数组 |
您要为其生成嵌入的文本字符串列表。该列表最多可包含 1280 个字符串,每个字符串的最长长度可达 4096 个字符。 |
|
字符串 |
用来创建嵌入的模型。 |
状态代码¶
Snowflake Cortex LLM REST API 使用以下 HTTP 状态代码来指示成功完成或各种错误条件。
- 200
OK 请求成功完成。响应的主体包含模型的输出。
- 400
invalid options object 可选实参有无效值。
- 400
unknown model model_name 指定的模型不存在。
- 400
schema validation failed 与不正确的响应架构结构相关的错误。请修正架构并重试。
- 400
max tokens of count exceeded 请求超出了模型支持的最大词元数(请参阅 模型限制)。
- 400
all requests were throttled by remote service 由于使用率很高,请求已受到限流。请稍后再试。
- 402
budget exceeded 超出了模型消耗预算。
- 403
Not Authorized 账户未启用 REST API,或调用用户的默认角色没有
snowflake.cortex_user数据库角色。- 429
too many requests 由于已超出使用量配额,请求遭到拒绝。请稍后重试请求。
- 503
embed timed out 请求耗时太长。
CURL 请求示例¶
以下示例使用 curl 向 e5-base-v2 模型发出 EMBED 请求。使用适当值替换此命令中的 token 和 account_identifier。
输出¶
以下是请求的输出,其中嵌入数组的内容被截断:
每个嵌入都有一个索引,该索引与请求列表中的文本字符串相对应。索引从 0 开始,因此列表中第一个文本字符串的索引为 0,第二个文本字符串的索引为 1,依此类推。
在前面的示例中,“foo”对应于索引 0,“bar”对应于索引 1。“foo”的嵌入是嵌入列表中的第一个元素,“bar”的嵌入是嵌入列表中的第二个元素。
Python 请求示例¶
以下示例使用 Python API 向 e5-base-v2 模型发出 EMBED 请求。使用适当值替换此命令中的 token 和 account_identifier。
输出¶
以下是请求的输出,其中嵌入数组的内容被截断:
每个嵌入都有一个索引,该索引与请求列表中的文本字符串相对应。索引从 0 开始,因此列表中第一个文本字符串的索引为 0,第二个文本字符串的索引为 1,依此类推。
在前面的示例中,“foo”对应于索引 0,“bar”对应于索引 1。“foo”的嵌入是嵌入列表中的第一个元素,“bar”的嵌入是嵌入列表中的第二个元素。
使用量配额¶
下表显示了 EMBED 函数的使用配额。
模型
|
每分钟
处理的词元 (TPM)
|
每分钟的
请求 (RPM)
|
最大输出(词元)
|
|---|---|---|---|
snowflake-arctic-embed-m-v1.5 |
400,000 |
200 |
4,096 |
snowflake-arctic-embed-m |
400,000 |
200 |
4,096 |
e5-base-v2 |
400,000 |
200 |
4,096 |
nv-embed-qa-4 |
400,000 |
200 |
4,096 |
multilingual-e5-large |
400,000 |
200 |
4,096 |
voyage-multilingual-2 |
400,000 |
200 |
4,096 |