前言:什么是 Rerank?
在信息检索系统中,我们经常面临一个问题:返回的搜索结果不够精准,无法很好地匹配用户的真实需求。Rerank(重新排序)技术正是为了解决这个问题,通过更智能的排序算法,将最相关的结果排在前面,从而提高用户体验。
Rerank通过计算候选文档与用户查询之间的语义匹配度,重新排序候选文档,从而提升语义排序的精度。其核心原理是对每个候选文档与用户查询之间的相关性进行评分,并根据评分高低对文档进行排序,最终返回按相关性从高到低排列的文档列表。
目前,主流的 Rerank 技术主要基于深度学习和大语言模型,在文本匹配、问答系统、文档检索等场景中广泛应用。本文将介绍 Rerank 的核心概念,并带你实战使用博查 API来优化搜索排序。
一、主流 Rerank 模型介绍
1.1 Cohere Rerank
Cohere 是一家专注于企业人工智能的加拿大跨国科技公司,专门研究大型语言模型。Cohere提供了一款基于API访问的在线重排序模型。该模型适用于多种应用场景,用户无需部署复杂的基础设施,只需通过简单的API调用即可获得高效的重排序服务。Cohere的模型在自然语言处理任务中表现出色,特别是在多语言环境下的应用,能够显著提高文本匹配的准确率。
核心特点
● 支持长文档查询:模型的上下文窗口为 4,096 个标记;
● 支持长文本匹配:最大查询长度为 2,048 个标记;
● 多种场景适应:Rerank 英文版适用于代码检索、半结构化数据检索和长上下文的检索。
1.2 RankGPT
RankGPT 的理念是使用 LLM(如 ChatGPT 或 GPT-4 或其他 LLM)在没有针对特定任务进行训练的情况下,直接对一系列文档段落进行重排序。它采用内容排序方案生成方法(permutation generation approach)和滑动窗口策略(sliding window strategy)来高效地对文档段落重排序。
具体来说,这种方法直接对文档或段落进行排序,而不是依赖外部得分或其他辅助信息来指导排序过程。也就是直接利用 LLM 的语义理解能力对所有候选段落进行相关性程度排名。
核心特点
● 强大的语义理解能力:GPT 作为生成式模型,在文本理解和推理方面表现出色。
● 适用于复杂查询:可以应对长尾搜索、复杂查询和专业领域内容。
● 成本低:只需要设计prompt让LLM执行rerank即可。
1.3 BGE Rerank
BGE(BAAI General Embedding)是智源研究院打造的通用语义向量模型。自2023年8月发布以来,智源团队陆续发布了中英文模型BGE v1.0、v1.5以及多语言模型 BGE-M3,截至目前,BGE 系列模型全球下载量超过 1500万,位居国内开源AI模型首位。BGE-M3模型一度跃居 Hugging Face 热门模型前三,其所属代码仓库FlagEmbedding位居Github热门项目前10;BGE-M3所带来的全新的通用检索模式也相继被Milvus、Vespa等主流向量数据库集成。
BGE-Rerank 通过使用交叉编码器 Cross-Encoder在 XLM-RoBERTa 的基础上进行微调来实现rerank模型。通常,系统会首先借助向量模型(BGE-M3-Dense)与稀疏检索模型(BGE-M3-Sparse)分别从向量数据库与倒排索引中初步获取粗力度的候选文档(coarse-grained candidates)。紧接着,系统会进一步利用排序模型(BGE Re-Ranker)进一步过滤候选集,并最终获得精细的文档集(fine-grained candidates),以支持下游大语言模型完成检索增强任务(RAG)。
核心特点
● 自由度高:用户可以基于具体场景的算力条件及时延限制灵活选择排序模型的层数。
● 支持混合建模:BGE 得以获得 “文本 + 图片” 混合建模能力
● 支持多种场景:支持了多语言、多种检索方式。
1.4 博查 API Rerank 的独特优势
Bocha Semantic Reranker是一种基于文本语义的排序模型(Rerank Model),它的主要用途是提升搜索结果的质量。在搜索推荐系统中,Bocha Semantic Reranker可以基于关键字搜索、向量搜索和混合搜索的初步排序结果的质量进行优化。具体来说,在初始的BM25排序或RRF排序之后,Bocha Semantic Reranker会从top-N候选结果中,利用语义信息对文档进行二次排序。这一过程中,模型会根据查询语句与文档内容之间的深层语义匹配情况,给出每个文档的排序结果和得分,从而改善用户的搜索体验。由于这种方法是对初步排序结果进行二次优化,因此被称为“Reranker”。
核心特点
● 使用便捷:用户无需自己维护服务器,直接调用API即可。
● 推理速度快:以 80M 参数实现接近于世界一线 280M、560M参数模型的排序效果,推理速度更快、成本更低。
● 支持多语言:支持中英两种语言的使用
二、动手实践:使用博查 API 实现 Rerank 排序优化
接下来,我们通过 Python 调用博查 API,演示如何对搜索结果进行 Rerank。
2.1 获取博查API密钥
1. 访问[博查AI开放平台](https://open.bochaai.com)并注册账号。
2. 进入「API Key管理」→ 点击「创建密钥」,复制生成的 `sk-xxxxxx` 密钥。
2.2 安装必要的依赖
pip install requests
2.3 调用博查 API 进行 Rerank 排序
我们模拟一个文档检索场景,初始搜索返回了一组结果,现在希望使用博查 API 重新排序,使最相关的内容排在前面。
import requests
import json
# API 端点 & 密钥
API_URL = "https://api.bocha-ai.com/rerank"
API_KEY = "your_api_key_here"
# 模拟搜索返回的候选文档
documents = [
"深度学习在自然语言处理中的应用",
"如何优化搜索引擎的排序算法",
"博查 API 提供的 Rerank 技术介绍",
"Python 机器学习教程"
]
# 构造 API 请求数据
payload = {
"query": "搜索引擎排序优化",
"documents": documents,
"model": "gte-rerank",
"return_documents":True
}
headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
# 发送请求
response = requests.post(API_URL, headers=headers, data=json.dumps(payload))
# 解析响应
if response.status_code == 200:
reranked_results = response.json()["data"]["results"]
print("排序后的搜索结果:")
for idx, item in enumerate(reranked_results, 1):
docu = item["document"]["text"]
print(f"{idx}. {docu}")
else:
print("请求失败:", response.text)
输出:
排序后的搜索结果:
1. 如何优化搜索引擎的排序算法
2. 博查 API 提供的 Rerank 技术介绍
3. 深度学习在自然语言处理中的应用
4. Python 机器学习教程
三、 总结:如何选择合适的 Rerank 方案?
通过本次实践,我们学习了 Rerank 技术的核心概念,并成功使用博查 API对搜索结果进行了优化排序。
在实际应用中,如何选择合适的 Rerank 方案?
1. 搜索系统优化:如果你想提高搜索质量,博查 API 是一个高效且易用的方案。
2. 智能问答系统:GPT-Rerank 可能更适用于上下文相关的 QA 场景。
3. 企业级搜索:可以结合 Elasticsearch、Faiss 等搜索引擎,搭配 Rerank 提高效果。
如果你对搜索优化感兴趣,不妨尝试博查 API,让你的搜索系统更智能、更精准!
你觉得 Rerank 技术有用吗?欢迎在评论区留言交流!