参考#
OpenAI API#
您可以下载完整的 API 规范
警告
NV-Embed-QA 和 E5 模型在 passage
或 query
模式下运行,因此需要 input_type
参数。 passage
在索引期间生成嵌入时使用。 query
在查询期间生成嵌入时使用。 使用正确的 input_type
非常重要。 否则会导致检索准确率大幅下降。
由于 OpenAI API 不接受 input_type
作为参数,因此可以像 NV-Embed-QA-query
一样在 model
参数中添加 -query
或 -passage
后缀,并且完全不使用 input_type
字段以符合 OpenAI API 标准。
例如,以下两个请求是相同的。
使用 input_type
参数
curl -X "POST" \
"http://${HOSTNAME}:${SERVICE_PORT}/v1/embeddings" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"input": ["What is the population of Pittsburgh?"],
"model": "nvidia/nv-embedqa-e5-v5",
"input_type": "query"
}'
不使用 input_type
参数,而是在模型名称中使用 -query
(或 -passage
)
curl -X "POST" \
"http://${HOSTNAME}:${SERVICE_PORT}/v1/embeddings" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"input": ["What is the population of Pittsburgh?"],
"model": "nvidia/nv-embedqa-e5-v5-query"
}'
请注意,GTE 和 GTR 模型不接受 input_type
参数,因为 -query
和 -passage
输入类型都以相同的方式处理。
动态嵌入大小#
为了降低返回的嵌入的存储成本,一些模型通过 Matryoshka Representation Learning 支持动态嵌入大小。 为了生成文本的低维嵌入表示,您可以使用可选的 dimensions
API 参数。 请参阅 支持矩阵 获取完整支持的模型列表。
动态批处理#
动态批处理是一项功能,允许 NIM 容器中底层的 Triton 进程将一个或多个请求分组到一个批次中,这可以在某些情况下提高吞吐量,例如在服务许多小负载请求时。 此功能默认启用,可以通过设置 NIM_TRITON_DYNAMIC_BATCHING_MAX_QUEUE_DELAY_MICROSECONDS
环境变量进行调整。 默认值为 100us(微秒)。
有关动态批处理的更多信息,请参阅 Triton 用户指南。
API 示例#
使用本节中的示例帮助您开始使用 API。
完整的 API 规范可以在 Open AI 规范 中找到
列出模型#
cURL 请求
使用以下命令列出可用的模型。
curl "http://${HOSTNAME}:${SERVICE_PORT}/v1/models" \
-H 'Accept: application/json'
响应
{
"object": "list",
"data": [
{
"id": "nvidia/nv-embedqa-e5-v5",
"created": 0,
"object": "model",
"owned_by": "organization-owner"
}
]
}
生成嵌入#
cURL 请求
curl -X "POST" \
"http://${HOSTNAME}:${SERVICE_PORT}/v1/embeddings" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"input": ["Hello world"],
"model": "nvidia/nv-embedqa-e5-v5",
"input_type": "query"
}'
响应
{
"object": "list",
"data": [
{
"index": 0,
"embedding": [
0.0010356903076171875, -0.017669677734375,
// ...
-0.0178985595703125
],
"object": "embedding"
}
],
"model": "nvidia/nv-embedqa-e5-v5",
"usage": {
"prompt_tokens": 0,
"total_tokens": 0
}
}
对于不需要 input_type
参数的模型,例如 GTE 或 GTR,请使用以下示例 API 调用。 cURL 请求
curl -X "POST" \
"http://${HOSTNAME}:${SERVICE_PORT}/v1/embeddings" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"input": ["Hello world"],
"model": "nvidia/nv-embedqa-e5-v5",
}'
响应
{
"object": "list",
"data": [
{
"index": 0,
"embedding": [
0.0010356903076171875, -0.017669677734375,
// ...
-0.0178985595703125
],
"object": "embedding"
}
],
"model": "nvidia/nv-embedqa-e5-v5",
"usage": {
"prompt_tokens": 0,
"total_tokens": 0
}
}
健康检查#
cURL 请求
使用以下命令查询健康端点。
curl "http://${HOSTNAME}:${SERVICE_PORT}/v1/health/ready" \
-H 'Accept: application/json'
curl "http://${HOSTNAME}:${SERVICE_PORT}/v1/health/live" \
-H 'Accept: application/json'
响应
{
"object": "health-response",
"message": "Service is ready."
}
{
"object": "health-response",
"message": "Service is live."
}