Skip to content

Reranker 模型服务平台API文档

1. 产品概述

Reranker(重排序模型)是一种用于提升搜索结果质量的模型。它接收初步检索返回的候选文档列表,结合查询的语义信息对文档进行重新排序,使最相关的结果排在最前面。

应用场景

  • 搜索引擎:对初步检索结果进行二次排序,提升搜索精度
  • RAG 系统:在检索增强生成中,对召回的文档进行重排序,提高生成质量
  • 推荐系统:对候选内容进行智能排序,提升用户体验

支持模型列表

模型名称上架时间说明
bge-reranker-v2-m32025/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

请求参数

参数名类型必填说明
modelstring模型 ID(如 bge-reranker-v2-m3
querystring查询文本
documentsarray待排序的文档列表(字符串数组)
top_ninteger返回前 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
  }
}

返回字段详解

字段类型说明
modelstring使用的模型名称
resultsarray重排序结果列表
results[].indexinteger原始文档列表中的索引位置
results[].documentstring文档内容
results[].relevance_scorefloat相关性分数(0-1,越高越相关)
usageobjectToken 使用统计

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模型 → 最终排序结果

使用流程

  1. 第一步:向量化查询和文档 使用 Embedding 模型将查询和文档库转换为向量。

  2. 第二步:初步检索 通过向量相似度检索,返回 Top 20-100 个候选文档。

  3. 第三步:重排序 将查询和候选文档列表发送给 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. 错误代码详解

状态码错误类型说明示例响应
400invalid_request_error请求参数错误{"error": {"message": "Missing required parameter: query", "type": "invalid_request_error"}}
401authentication_error鉴权失败{"error": {"message": "Invalid API key", "type": "authentication_error"}}
429rate_limit_error超出调用频率限制{"error": {"message": "Rate limit exceeded", "type": "rate_limit_error"}}
500server_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-m3Qwen3-Reranker-8B
  • 低延迟场景:推荐 Qwen3-Reranker-0.6B
  • 中文场景:推荐 bge-reranker-v2-m3

Q5: Reranker 的计费方式是什么?

按输入的 Token 数量计费(查询 + 文档列表的总字符数转换为 Token)。


联系方式:技术支持请发送邮件至 support@baishan.com文档最后更新时间:2025-08-28

贵州白山云科技