重排序

更新時間:
Copy as MD

檢索系統優先保證速度,因此結果的精確度可能不夠理想。重排序模型對檢索到的文檔重新打分,將最相關的結果排在前面,顯著提升搜尋精度。

說明

重排序最能發揮價值的情境:當初始檢索返回 20-100+ 個相關度參差不齊的候選結果時,重排序的精度提升最為顯著。如果檢索已返回高度相關的結果(如精確關鍵詞匹配),則重排序的價值較小。典型的 RAG 流程:先通過 Embedding 檢索 50-100 個候選結果,再通過重排序篩選 Top 5-10,最後傳入大語言模型。

前提條件

請先擷取API Key配置API Key到環境變數。如需使用 SDK,請安裝SDK

重排序文檔

將查詢和候選文檔列表傳給 API,模型將按相關性對文檔進行排序後返回。

文本重排序(qwen3-rerank)

OpenAI 相容

import os
from openai import OpenAI

client = OpenAI(
  api_key=os.getenv("DASHSCOPE_API_KEY"),
  base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-api/v1",
)

results = client.post(
  "/reranks",
  body={
    "model": "qwen3-rerank",
    "query": "什麼是重排序模型",
    "documents": [
      "重排序模型廣泛應用於搜尋引擎和推薦系統,按相關性對候選文本進行排序",
      "量子計算是計算科學的前沿領域",
      "預訓練語言模型的發展為重排序模型帶來了新的進展"
    ],
    "top_n": 2
  },
  cast_to=object
)

print(results)
const OpenAI = require("openai");

const openai = new OpenAI({
  apiKey: process.env.DASHSCOPE_API_KEY,
  baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-api/v1",
});

async function rerank() {
  const results = await openai.post("/reranks", {
    body: {
      model: "qwen3-rerank",
      query: "什麼是重排序模型",
      documents: [
        "重排序模型廣泛應用於搜尋引擎和推薦系統,按相關性對候選文本進行排序",
        "量子計算是計算科學的前沿領域",
        "預訓練語言模型的發展為重排序模型帶來了新的進展",
      ],
      top_n: 2,
    },
  });

  console.log(JSON.stringify(results, null, 2));
}

rerank();
curl --request POST \
  --url https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-api/v1/reranks \
  --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "qwen3-rerank",
    "query": "什麼是重排序模型",
    "documents": [
      "重排序模型廣泛應用於搜尋引擎和推薦系統,按相關性對候選文本進行排序",
      "量子計算是計算科學的前沿領域",
      "預訓練語言模型的發展為重排序模型帶來了新的進展"
    ],
    "top_n": 2
}'

DashScope

import dashscope
from http import HTTPStatus

dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

resp = dashscope.TextReRank.call(
  model="qwen3-rerank",
  query="什麼是重排序模型",
  documents=[
    "重排序模型廣泛應用於搜尋引擎和推薦系統,按相關性對候選文本進行排序",
    "量子計算是計算科學的前沿領域",
    "預訓練語言模型的發展為重排序模型帶來了新的進展"
  ],
  top_n=2,
  return_documents=True
)

if resp.status_code == HTTPStatus.OK:
  print(resp)
curl --request POST \
  --url https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/rerank/text-rerank/text-rerank \
  --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "qwen3-rerank",
    "query": "什麼是重排序模型",
    "documents": [
      "重排序模型廣泛應用於搜尋引擎和推薦系統,按相關性對候選文本進行排序",
      "量子計算是計算科學的前沿領域",
      "預訓練語言模型的發展為重排序模型帶來了新的進展"
    ],
    "top_n": 2
}'

多模態重排序(qwen3-vl-rerank)

qwen3-vl-rerank 支援文本、圖片和視頻的混合排序。查詢可以是文本或圖片,文檔可以包含文本、圖片和視頻。

說明

多模態重排序需要使用 DashScope SDK 或 API,不支援 OpenAI 相容介面。

Python

import dashscope
from http import HTTPStatus
import json

# 以下為華北2(北京)地區的配置,調用時請將{WorkspaceId}替換為真實的業務空間ID,各地區的配置不同。
dashscope.base_http_api_url = 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1'

resp = dashscope.TextReRank.call(
  model="qwen3-vl-rerank",
  query={"text": "什麼是文本排序模型"},
  documents=[
    {"text": "文本排序模型廣泛用於搜尋引擎和推薦系統中"},
    {"image": "https://img.alicdn.com/imgextra/i3/O1CN01rdstgY1uiZWt8gqSL_!!6000000006071-0-tps-1970-356.jpg"},
    {"video": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250107/lbcemt/new+video.mp4"}
  ],
  top_n=2,
  return_documents=True
)

if resp.status_code == HTTPStatus.OK:
  print(json.dumps(resp, default=str, ensure_ascii=False, indent=4))

curl

curl --request POST \
  --url https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/rerank/text-rerank/text-rerank \
  --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "qwen3-vl-rerank",
    "input": {
      "query": {"text": "什麼是文本排序模型"},
      "documents": [
        {"text": "文本排序模型廣泛用於搜尋引擎和推薦系統中"},
        {"image": "https://img.alicdn.com/imgextra/i3/O1CN01rdstgY1uiZWt8gqSL_!!6000000006071-0-tps-1970-356.jpg"},
        {"video": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250107/lbcemt/new+video.mp4"}
      ]
    },
    "parameters": {
      "return_documents": true,
      "top_n": 2,
      "fps": 1.0
    }
}'

核心功能

使用指令提升排序效果(instruct)

instruct 參數可以引導模型使用不同的排序策略。請使用英文編寫指令。

  • 問答檢索(預設)"Given a web search query, retrieve relevant passages that answer the query."

    側重於尋找答案。對於查詢"如何預防感冒?","勤洗手可預防感冒"的分數會高於"感冒是一種常見病"(主題相關但未回答問題)。

  • 語義相似性"Retrieve semantically similar text."

    側重於語義等價,不受措辭影響。例如:"如何修改密碼?"可匹配"忘記密碼怎麼辦?"(FAQ 情境)。

未設定時,模型預設使用問答檢索策略。

OpenAI 相容

curl --request POST \
  --url https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-api/v1/reranks \
  --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "model": "qwen3-rerank",
    "query": "如何修改密碼?",
    "documents": [
      "點擊設定 > 安全 > 修改密碼即可更新憑據",
      "忘記密碼怎麼辦?",
      "我們的平台支援雙因素認證"
    ],
    "instruct": "Retrieve semantically similar text."
}'

DashScope

import dashscope
from http import HTTPStatus

dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

resp = dashscope.TextReRank.call(
  model="qwen3-rerank",
  query="如何修改密碼?",
  documents=[
    "點擊設定 > 安全 > 修改密碼即可更新憑據",
    "忘記密碼怎麼辦?",
    "我們的平台支援雙因素認證"
  ],
  instruct="Retrieve semantically similar text."
)

if resp.status_code == HTTPStatus.OK:
  print(resp)

返回前 N 個結果(top_n)

使用 top_n 僅返回排名最高的文檔。如未設定,則返回按相關性排序的所有文檔。如果 top_n 超過文檔總數,則返回所有文檔。

模型概覽

重要

gte-rerank模型將於20260530日下線,推薦使用qwen3-rerank模型替代。

新加坡

模型

最大文檔數

單條最大 Token 數

單次請求最大 Token 數

支援語言

適用情境

qwen3-rerank

500

4,000

120,000

100+ 語言

語義文本搜尋、RAG 應用

北京

模型

最大文檔數

單條最大 Token 數

單次請求最大 Token 數

支援語言

適用情境

qwen3-rerank

500

4,000

120,000

33 種語言

語義文本搜尋、RAG 應用

qwen3-vl-rerank

文本:100

圖片:40

視頻:4

8,000

120,000

33 種語言

多模態搜尋結果重排序

gte-rerank-v2

500

4,000

30,000

50+ 語言

語義文本搜尋、RAG 應用

關鍵術語:

  • 單條最大 Token 數:單條查詢或文檔的最大 Token 數。超出限制的內容將被截斷,排序結果僅基於截斷後的內容計算,可能影響排序精度。

  • 單次請求最大文檔數:單次請求允許的最大文檔數量。對於 qwen3-vl-rerank 模型,該限制會根據文件類型(文本、圖片、視頻、混合模態)的不同而有所差異。

  • 單次請求最大 Token 數:計算公式為 查詢 Token 數 x 文檔數量 + 所有文檔 Token 總數,該值不能超過單次請求上限。

API 參考

參見排序模型(Rerank)

錯誤碼

如果調用失敗,請參見錯誤碼

限流

請參見限流