跳到主要内容

文本重排

1. 什么是文本重排任务?

文本重排(Text Ranking,通常也称为 Reranking)是自然语言处理和信息检索(如检索增强生成 RAG)中的关键任务。重排模型(Reranker)通常作为多阶段检索系统的第二阶段,对初步检索出的候选文档与查询(Query)之间的相关性进行更深度的语义匹配和精确评分,然后重新排序,从而显著提升检索精度和最终生成质量。

2. 典型应用场景

  • 检索增强生成(RAG):在 LLM 生成回答前,对检索到的知识库文档进行重排,筛选出最相关的 Top-K 块,减少无关信息的干扰,提高回答准确度。
  • 搜索引擎与信息检索:结合传统检索(如 BM25)和语义向量检索,通过重排模型对融合后的结果进行二次排序,提升前排结果的相关性。
  • 问答系统(QA):对候选答案进行语义相关性排序,精准定位最佳答案。

3. 影响重排效果的关键因素

模型选择

重排模型通常采用交叉编码器(Cross-Encoder)架构,能同时对查询和文档进行双向注意力计算,比单向嵌入向量(Bi-Encoder)匹配更精准。常用的模型包括 BGE-Reranker、Qwen-Reranker、Jina-Reranker 等。

4. 代码调用示例

以下是通过 Python 调用文本重排 API 的示例:

import requests
import json

url = "https://xxxxxxxxxxxx.space.opencsg.com/v1/rerank" # 替换为您的 Endpoint 地址
headers = {
'Content-Type': 'application/json'
}
data = {
"query": "什么是深度学习?",
"texts": [
"深度学习是机器学习的一个子领域,它基于人工神经网络进行表征学习。",
"今天的天气真好,适合出去散步。"
],
"top_n": 2
}

response = requests.post(url=url, json=data, headers=headers)
response.raise_for_status()
print(json.dumps(response.json(), indent=2, ensure_ascii=False))