Reranker 模型服务平台API文档
1. 产品概述
Reranker(重排序模型)是一种用于提升搜索结果质量的模型。它接收初步检索返回的候选文档列表,结合查询的语义信息对文档进行重新排序,使最相关的结果排在最前面。
应用场景
- 搜索引擎:对初步检索结果进行二次排序,提升搜索精度
- RAG 系统:在检索增强生成中,对召回的文档进行重排序,提高生成质量
- 推荐系统:对候选内容进行智能排序,提升用户体验
支持模型列表
| 模型名称 | 上架时间 | 说明 |
|---|---|---|
bge-reranker-v2-m3 | 2025/7/2 | 百度中文Embedding团队出品,高性能中英文重排序 |
2. 接口优势
- 语义重排序:基于深度语义理解进行排序,而非简单的关键词匹配
- 多语言支持:支持中文、英文等多种语言的文档重排序
- 高精度:显著提升检索结果的相关性排序
- 低延迟:毫秒级响应,支持高并发调用
- OpenAI 兼容:接口设计与主流 AI 平台兼容,便于迁移
3. 认证与安全
接口地址
https://api.edgefn.net/v1
认证方式
bash
Authorization: Bearer YOUR_API_KEY- 获取 API Key:登录控制台 > 个人中心 > API密钥
- 安全性:HTTPS 加密传输,支持 IP 白名单配置
4. Reranker API
请求地址
http
POST /v1/rerank请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型 ID(如 bge-reranker-v2-m3) |
query | string | 是 | 查询文本 |
documents | array | 是 | 待排序的文档列表(字符串数组) |
top_n | integer | 否 | 返回前 N 个结果(默认返回全部) |
请求示例
json
{
"model": "bge-reranker-v2-m3",
"query": "什么是人工智能?",
"documents": [
"人工智能是计算机科学的一个分支,致力于开发智能机器。",
"量子计算是一种遵循量子力学规律调控量子信息单元的计算方式。",
"机器学习是人工智能的一个子领域,专注于让计算机学习数据。",
"深度学习是机器学习的一个分支,使用多层神经网络进行学习。"
],
"top_n": 3
}返回字段说明
json
{
"model": "bge-reranker-v2-m3",
"results": [
{
"index": 0,
"document": "人工智能是计算机科学的一个分支,致力于开发智能机器。",
"relevance_score": 0.98
},
{
"index": 3,
"document": "深度学习是机器学习的一个分支,使用多层神经网络进行学习。",
"relevance_score": 0.75
},
{
"index": 2,
"document": "机器学习是人工智能的一个子领域,专注于让计算机学习数据。",
"relevance_score": 0.62
}
],
"usage": {
"prompt_tokens": 120,
"total_tokens": 120
}
}返回字段详解
| 字段 | 类型 | 说明 |
|---|---|---|
model | string | 使用的模型名称 |
results | array | 重排序结果列表 |
results[].index | integer | 原始文档列表中的索引位置 |
results[].document | string | 文档内容 |
results[].relevance_score | float | 相关性分数(0-1,越高越相关) |
usage | object | Token 使用统计 |
5. 使用示例
cURL 示例
bash
curl https://api.edgefn.net/v1/rerank \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bge-reranker-v2-m3",
"query": "如何学习Python编程?",
"documents": [
"Python是一种广泛使用的解释型、高级和通用的编程语言。",
"学习Python建议从基础语法开始,循序渐进。",
"JavaScript是一种脚本语言,主要用于Web开发。",
"推荐使用在线教程和实战项目来学习Python。"
],
"top_n": 2
}'Python 示例
python
import requests
url = "https://api.edgefn.net/v1/rerank"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"model": "bge-reranker-v2-m3",
"query": "如何学习Python编程?",
"documents": [
"Python是一种广泛使用的解释型、高级和通用的编程语言。",
"学习Python建议从基础语法开始,循序渐进。",
"JavaScript是一种脚本语言,主要用于Web开发。",
"推荐使用在线教程和实战项目来学习Python。"
],
"top_n": 2
}
response = requests.post(url, headers=headers, json=data)
result = response.json()
# 输出排序结果
for item in result["results"]:
print(f"索引: {item['index']}, 分数: {item['relevance_score']:.4f}")
print(f"内容: {item['document'][:50]}...")
print("---")Node.js 示例
javascript
const axios = require('axios');
const url = "https://api.edgefn.net/v1/rerank";
const headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
};
const data = {
model: "bge-reranker-v2-m3",
query: "如何学习Python编程?",
documents: [
"Python是一种广泛使用的解释型、高级和通用的编程语言。",
"学习Python建议从基础语法开始,循序渐进。",
"JavaScript是一种脚本语言,主要用于Web开发。",
"推荐使用在线教程和实战项目来学习Python。"
],
top_n: 2
};
async function rerank() {
const response = await axios.post(url, data, { headers });
const result = response.data;
result.results.forEach(item => {
console.log(`索引: ${item.index}, 分数: ${item.relevance_score.toFixed(4)}`);
console.log(`内容: ${item.document.substring(0, 50)}...`);
console.log("---");
});
}
rerank();6. 与 Embedding 配合使用
Reranker 通常与 Embedding 模型配合使用,以达到最佳检索效果。
典型架构
用户查询 → Embedding模型 → 向量检索 → Top K 候选 → Reranker模型 → 最终排序结果使用流程
第一步:向量化查询和文档 使用 Embedding 模型将查询和文档库转换为向量。
第二步:初步检索 通过向量相似度检索,返回 Top 20-100 个候选文档。
第三步:重排序 将查询和候选文档列表发送给 Reranker 模型,获取最终排序结果。
完整示例
python
import requests
# 配置
API_KEY = "YOUR_API_KEY"
EMBEDDING_URL = "https://api.edgefn.net/v1/embeddings"
RERANK_URL = "https://api.edgefn.net/v1/rerank"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# 文档库
documents = [
"人工智能是计算机科学的一个分支,致力于开发智能机器。",
"量子计算是一种遵循量子力学规律调控量子信息单元的计算方式。",
"机器学习是人工智能的一个子领域,专注于让计算机学习数据。",
"深度学习是机器学习的一个分支,使用多层神经网络进行学习。",
"自然语言处理是人工智能领域的一个重要研究方向。",
"计算机视觉是研究如何让机器理解和处理图像的领域。",
"Python是一种广泛使用的解释型、高级和通用的编程语言。",
"JavaScript是一种脚本语言,主要用于Web开发。"
]
query = "什么是人工智能?"
# Step 1: 向量化查询
embedding_response = requests.post(
EMBEDDING_URL,
headers=headers,
json={"model": "BAAI/bge-m3", "input": query}
)
query_embedding = embedding_response.json()["data"][0]["embedding"]
# Step 2: 初步检索(简化示例,实际需用向量数据库)
# 假设我们已从向量数据库获取了候选文档索引
candidate_indices = [0, 2, 3, 4, 5] # 示例:初步检索返回的候选
candidate_docs = [documents[i] for i in candidate_indices]
# Step 3: 重排序
rerank_response = requests.post(
RERANK_URL,
headers=headers,
json={
"model": "bge-reranker-v2-m3",
"query": query,
"documents": candidate_docs,
"top_n": 3
}
)
results = rerank_response.json()["results"]
# 输出最终排序结果
print("=== 最终排序结果 ===")
for rank, item in enumerate(results, 1):
print(f"#{rank} (分数: {item['relevance_score']:.4f}): {item['document']}")7. 错误代码详解
| 状态码 | 错误类型 | 说明 | 示例响应 |
|---|---|---|---|
400 | invalid_request_error | 请求参数错误 | {"error": {"message": "Missing required parameter: query", "type": "invalid_request_error"}} |
401 | authentication_error | 鉴权失败 | {"error": {"message": "Invalid API key", "type": "authentication_error"}} |
429 | rate_limit_error | 超出调用频率限制 | {"error": {"message": "Rate limit exceeded", "type": "rate_limit_error"}} |
500 | server_error | 服务内部错误 | {"error": {"message": "Internal server error", "type": "server_error"}} |
8. 性能优化建议
8.1 批量处理
如果需要同时对多个查询进行重排序,可以使用批量请求减少网络开销。
8.2 合理设置 top_n
- 如果后续需要精确结果,top_n 设置为 1-5
- 如果需要保留更多候选,top_n 可以设置更大
- 建议结合实际需求,避免返回过多不相关结果
8.3 与 Embedding 配合
- 初步检索返回 20-100 个候选文档
- Reranker 对候选进行重排序,选择 Top N
- 这种两阶段检索可以在效率和精度间取得平衡
9. 常见问题
Q1: Reranker 和 Embedding 有什么区别?
Embedding 将文本转换为向量,用于相似度计算和初步检索。Reranker 则对检索结果进行二次排序,基于更深层的语义理解提升排序精度。
Q2: 什么场景下需要使用 Reranker?
当初步检索结果不够精确,或对搜索结果质量有较高要求时,建议使用 Reranker。特别适用于 RAG 系统、搜索引擎等场景。
Q3: Reranker 支持多长的文档?
建议单个文档长度不超过 2048 个字符。过长文档可能影响重排序效果和响应速度。
Q4: 如何选择合适的 Reranker 模型?
- 高精度场景:推荐
bge-reranker-v2-m3或Qwen3-Reranker-8B - 低延迟场景:推荐
Qwen3-Reranker-0.6B - 中文场景:推荐
bge-reranker-v2-m3
Q5: Reranker 的计费方式是什么?
按输入的 Token 数量计费(查询 + 文档列表的总字符数转换为 Token)。
联系方式:技术支持请发送邮件至 support@baishan.com文档最后更新时间:2025-08-28
