Python:重排候选文本
按 Python SDK配置API_BASE_URL(包含 /v1)、API_KEY 和重排模型的 API_MODEL。保存为 rerank.py,执行 python rerank.py。示例复用 SDK 的通用 HTTP client.post,没有依赖不存在的 client.rerank 方法,也无需额外安装供应商 SDK。
本例显式请求 top_n: 2 和 return_documents: false,校验结果索引与分数,按分数降序排列,并用 index 找回原始文本。即使渠道仍返回 document,也使用应用持有的原始文本。
索引、分数和返回条数
results[].index 是本次 documents 数组的零基位置,不是排名,也不是数据库文档 ID。若先进行过滤、分块或截取候选集,需保留这份最终数组与业务 ID 的对应关系。禁止通过分数数组位置去取原文。
分数越高通常表示在本次查询中越相关,但不是统一校准的概率,也不是不同模型之间可直接比较的数值。本例只要求分数为有限数,不强制限定在 0–1;阈值应根据所选模型和业务样本评估。返回空 results 时输出空列表,不伪造候选。若模型无相关结果但仍给出排序,应用仍需按业务阈值决定是否拒答。
显式设置 top_n 为正整数且不大于候选数量。部分渠道可能忽略返回数量,本例会在本地截取前两项,但这不会减少上游已处理的文档。top_n 是返回数量,不是从知识库召回多少条。
渠道差异
请求中的 query 和 documents 均会发送到配置的网关及上游;
return_documents: false 不表示“不上传原文”。需要结构化文档时,可在应用中序列化为稳定的文本,并保留独立业务 ID。先控制候选数量和文档长度,再调重排参数,不要把整库一次性发送。
与 Embeddings 配合
流程为:Embeddings建向量索引 → 应用召回候选 → Rerank 精排 → 将选中的原文交给对话模型。只使用 Rerank 也可以重排来自关键词搜索的候选。 错误时先检查模型能力、非空 query/documents、长度和可选参数。HTTP 200 仍需检查results 结构、索引越界/重复和非法分数。本例遇到格式问题失败退出,且不自动重试。
评分解释参考 Cohere Rerank 最佳实践;该供应商的请求限制不能视为所有渠道的统一限制。
下一步:用 RAG 知识库问答将召回、可选重排与带来源回答串成完整流程。
Read in English