概述
CMR Rerank API 根据查询内容,对一组候选内容进行相关性排序,适用于搜索结果优化、知识库检索等场景。使用统一的接口和 CMR API Key,即可调用不同厂商的 Rerank 模型。排序结果和分数由所选模型提供。文本、图片、视频使用同一个接口:
POST /v1/rerank
请求形式 | 查询内容 query | 候选列表 documents |
文本重排 | 一段文本 | 多段文本 |
图片查询 | 一张图片 | 文本、图片或视频候选 |
视频查询 | 一个视频 | 文本、图片或视频候选 |
混合候选重排 | 文本、图片或视频 | 包含不同内容类型的候选列表 |
图片、视频和混合候选是否可用,以所选模型的支持情况为准。每次请求只提供一份查询,每条候选只包含一段文本、一张图片或一个视频。
前提条件
2. 已创建模型路由实例,详细操作指导请参见 创建模型路由实例。
3. 已创建 BYOK 实例,详细操作指导请参见 创建 BYOK 实例。
4. 已创建模型路由访问密钥(API Key),详细操作指导请参见 创建模型路由访问密钥。
5. 已完成重排序模型关联和模型路由策略配置,详细操作指导请参见 配置模型调度管理。
接口地址与鉴权
请求地址
POST {CMR_BASE_URL}/v1/rerank
CMR_BASE_URL 为控制台展示的实例访问地址。请求使用 CMR 模型名称和 CMR API Key,无需填写厂商的接口地址或 API Key。
请求头
Header | 必填 | 说明 |
Authorization | 是 | Bearer <CMR_API_KEY> |
Content-Type | 是 | 固定为 application/json |
快速开始
将示例中的访问地址、API Key 和模型名称替换为自己的配置。
cURL
curl --request POST "${CMR_BASE_URL}/v1/rerank" \\--header "Authorization: Bearer ${CMR_API_KEY}" \\--header "Content-Type: application/json" \\--data '{"model": "cmr-text-rerank","query": "如何安装产品?","documents": ["产品退款规则。","先固定底座,再连接电源。"]}'
Python
import osimport requestsdocuments = ["产品退款规则。","先固定底座,再连接电源。",]response = requests.post(f"{os.environ['CMR_BASE_URL']}/v1/rerank",headers={"Authorization": f"Bearer {os.environ['CMR_API_KEY']}","Content-Type": "application/json",},json={"model": "cmr-text-rerank","query": "如何安装产品?","documents": documents,},timeout=30,)response.raise_for_status()for item in response.json()["results"]:print(item["relevance_score"], documents[item["index"]])
请求参数
基本请求参数
参数 | 类型 | 必填 | 说明 |
model | string | 是 | CMR 模型名称或模型别名,可用值以控制台关联模型为准 |
query | string | object | 是 | 本次查询。文本填字符串,图片填 {"image":"..."},视频填 {"video":"..."} |
documents | array | 是 | 待排序的候选列表。每项可以是文本字符串、图片对象或视频对象 |
top_n | integer | 否 | 请求返回相关性最高的前 N 条。取值范围和未填写时的行为以所选模型为准 |
return_documents | boolean | 否 | 是否请求模型返回候选内容。实际是否返回,取决于模型 |
instruct | string | 否 | 排序要求,例如“优先选择提供具体安装步骤的内容” |
选填参数是否生效取决于所选模型。未填写的选填参数,CMR 不自动补默认值。
文本输入
{"model": "cmr-text-rerank","query": "如何安装产品?","documents": ["产品退款规则。","先固定底座,再连接电源。"],"top_n": 1,"return_documents": true,"instruct": "优先选择提供具体安装步骤的内容。"}
图片和视频输入
内容 | 填写格式 | 可填写的位置 |
文本 | "安装步骤" | query 或 documents[] |
图片 | {"image":"图片 URL 或 Data URI"} | query 或 documents[] |
视频 | {"video":"视频 URL"} | query 或 documents[] |
图片查询与混合候选示例:
{"model": "cmr-multimodal-rerank","query": {"image": "https://example.com/product.png"},"documents": ["产品退款规则。","先固定底座,再连接电源。",{"image": "https://example.com/manual.png"},{"video": "https://example.com/tutorial.mp4"}]}
使用视频查询时,将 query 改为:
{"video": "https://example.com/question.mp4"}
媒体地址和内容格式需符合所选模型的要求;视频查询的可用性和效果也需按模型确认。直接填写 URL 字符串会被当作文本,图片和视频请使用表中的对象格式。
Provider 自定义请求参数
CMR 实例默认开启参数转换,并默认透传厂商自定义参数。按厂商要求将参数放入请求即可,无需逐个配置放行;如果实例已配置参数过滤规则,则按该规则处理。例如,所选模型支持 return_raw_scores 时,可以这样请求:
{"model": "cmr-text-rerank","query": "如何安装产品?","documents": ["产品退款规则。", "先固定底座,再连接电源。"],"return_raw_scores": true}
如需设置默认值、修改参数值或过滤字段,可在目标 CMR 实例的参数转换配置中设置规则。通过管理 API 配置时,使用 CreateParamTranslationConfig 保存、TestParamTranslationConfig 预览;Rerank 规则的端点填写 rerank。自定义参数的名称、填写层级和取值以厂商说明为准。更换模型或厂商后,请确认这些参数仍然适用。
响应参数
基本响应参数
参数 | 类型 | 是否一定返回 | 说明 |
id | string | 是 | 本次请求的标识 |
created | integer | 是 | 响应创建时间,Unix 时间戳,单位为秒 |
object | string | 是 | 固定为 list |
model | string | 是 | 本次实际调用成功的 CMR 逻辑模型名称 |
results | object[] | 是 | 重排结果列表 |
usage | object | 否 | 模型返回的用量信息;未提供时不返回 |
响应结果
参数 | 类型 | 是否一定返回 | 说明 |
results[].index | integer | 是 | 候选在请求 documents 中的下标,从 0 开始,不是排序后的名次 |
results[].relevance_score | number | 是 | 模型给出的相关性分数 |
results[].document | string | object | 否 | 模型返回的候选内容:文本为字符串,图片为 {"image":"..."},视频为 {"video":"..."} |
CMR 保留模型返回的顺序和分数。不同模型的分数不一定可直接比较,也不应将分数当作概率。document 是否出现,以模型实际返回为准;即使设置 return_documents=true,也可能不返回。需要原始候选时,可用 index 查找请求中的 documents[index]。
Provider 自定义响应参数
除上述标准响应字段外,CMR 也会透传厂商实际返回的自定义字段,例如 request_id、结果项或用量信息中的附加字段,保留其内容和内部结构,无需额外配置。已经转换为标准字段的信息不会重复返回。自定义字段的含义以厂商说明为准,更换模型或厂商后,这些字段可能不再返回或含义发生变化。
响应示例
以下示例用于说明字段格式,分数和用量以实际返回为准。
文本结果
{"id": "rerank-7f3a2c10","created": 1788969600,"object": "list","model": "cmr-text-rerank","results": [{"index": 1,"relevance_score": 0.91,"document": "先固定底座,再连接电源。"}],"usage": {"prompt_tokens": 60,"completion_tokens": 0,"total_tokens": 60}}
index=1 表示结果对应请求中的第 2 条候选。模型未返回候选内容或用量时,响应会省略相应字段。
图片结果
{"id": "rerank-a1b2c3d4","created": 1788969600,"object": "list","model": "cmr-multimodal-rerank","results": [{"index": 2,"relevance_score": 0.91,"document": {"image": "https://example.com/manual.png"}}],"usage": {"prompt_tokens": 147,"total_tokens": 829,"prompt_tokens_details": {"image_tokens": 682}}}
错误响应
请求失败时,CMR 返回统一的错误格式:
{"error": {"message": "请求参数无效","type": "invalid_request_error","param": null,"code": "400"}}
参数 | 说明 |
error.message | 错误说明 |
error.type | 错误类型 |
error.param | 相关请求参数;无法定位时可能为空 |
error.code | 错误码,以实际响应为准 |
常见 HTTP 状态码:
HTTP 状态码 | 常见原因 | 处理建议 |
400 | 请求格式错误,或模型不支持当前参数、内容类型 | 检查并修正请求 |
401 | API Key 无效或鉴权失败 | 检查 API Key 和厂商凭证 |
403 | 鉴权头有误或没有访问权限 | 检查 Authorization 和模型权限 |
404 | 模型、资源或接口不存在 | 检查模型名称和接入配置 |
408 / 504 | 请求超时 | 在业务允许时稍后重试 |
429 | 请求限流或配额不足 | 参考 Retry-After,降低请求频率后重试 |
500 / 502 / 503 | 服务异常、连接失败或返回内容异常 | 稍后重试;持续失败时记录请求标识并联系支持 |