重排序
檢索系統優先保證速度,因此結果的精確度可能不夠理想。重排序模型對檢索到的文檔重新打分,將最相關的結果排在前面,顯著提升搜尋精度。
重排序最能發揮價值的情境:當初始檢索返回 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模型將於2026年05月30日下線,推薦使用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)。
錯誤碼
如果調用失敗,請參見錯誤碼。
限流
請參見限流。