【轻松对比】深入解析国内rerank模型:BGE与博查Semantic Reranker API的对比
大家好啊,我是大家的老朋友北极熊,今天我们来给大家介绍一下国内的reranker。在信息检索领域,如何高效、准确地对搜索结果进行排序,一直是研究的重点。但是国内外比较出名的reranker模型仍然比较少,国内的话,主要是以智源研究院推出的BGE(BAAI General Embedding)系列模型和博查AI的Semantic Reranker API最为引人注目。今天我们就将对这两者进行深入探讨
文章目录
前言
大家好啊,我是大家的老朋友北极熊,今天我们来给大家介绍一下国内的reranker。
在信息检索领域,如何高效、准确地对搜索结果进行排序,一直是研究的重点。但是国内外比较出名的reranker模型仍然比较少,国内的话,主要是以智源研究院推出的BGE(BAAI General Embedding)系列模型和博查AI的Semantic Reranker API 最为引人注目。今天我们就将对这两者进行深入探讨,分析其特点,通过示例代码展示如何在实际项目中使用,并对比其排序效果。
一、BGE模型概述
BGE是由北京智源人工智能研究院开发的通用语义向量模型,旨在提升中英文语义检索的精度和整体语义表征能力。自2023年发布以来,BGE经历了多个版本的迭代,包括BGE v1.0、v1.5以及多语言支持的BGE-M3等。最新版本BGE Re-Ranker v2.0在多个主流基准测试中取得了领先成绩,支持更多语言和更长的文本长度,并引入了“文本+图片”混合检索能力 (hub.baai.ac.cn)。
BGE模型的主要特点包括:
- 高精度的语义匹配:通过深度学习技术,BGE能够捕捉文本之间的深层语义关系,提升检索结果的相关性。
- 多模态支持:最新版本支持文本与图片的混合检索,拓宽了应用场景。
- 开源可商用:BGE模型以开源方式发布,开发者可以根据需要自行部署和调整。
BGE的基本使用示例
使用sentence-transformers
库可以快速加载BGE模型,并计算文本相似度。
from sentence_transformers import SentenceTransformer, util
import time
begin = time.time()
# 加载BGE模型
model = SentenceTransformer("BAAI/bge-reranker-large")
# 定义查询和候选文档
query = "人工智能的发展趋势"
documents = [
"人工智能在医疗领域的应用",
"最新的人工智能研究成果",
"人工智能与机器学习的区别",
"未来人工智能的发展方向"
]
# 计算嵌入向量
query_embedding = model.encode(query, convert_to_tensor=True)
doc_embeddings = model.encode(documents, convert_to_tensor=True)
# 计算相似度
scores = util.pytorch_cos_sim(query_embedding, doc_embeddings)[0]
# 按相似度排序
doc_scores = sorted(zip(documents, scores.tolist()), key=lambda x: x[1], reverse=True)
# 输出排序结果
for idx, (doc, score) in enumerate(doc_scores, 1):
print(f"{idx}. 相关性得分: {score:.4f}, 文档: {doc}")
end = time.time()
print(f"BGE模型用时为{(end - begin)}s")
二、博查Rerank API概述
博查AI推出的 Semantic Reranker API 是一种基于文本语义的排序模型,旨在提升搜索应用和RAG(Retrieval-Augmented Generation)应用中的搜索结果准确性。该API通过深层语义匹配,对初步检索得到的文档进行重新排序,确保最相关的内容呈现在前列 (open.bochaai.com)。
博查Rerank API的主要特点包括:
- 即插即用:开发者无需训练模型,只需通过API调用即可实现高效的语义重排序。
- 高效性:API响应速度快,适合实时应用场景。
- 灵活性:支持多种参数配置,满足不同应用需求。
博查Rerank API的使用示例
import requests
import json
# 设置API密钥和端点
API_KEY = "your_api_key_here"
API_URL = "https://api.bochaai.com/v1/rerank"
# 定义查询和待排序文档
data = {
"query": "人工智能的发展趋势",
"documents": [
"人工智能在医疗领域的应用",
"最新的人工智能研究成果",
"人工智能与机器学习的区别",
"未来人工智能的发展方向"
],
"model": "gte-rerank",
"top_n": 3,
"return_documents": True
}
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
response = requests.post(API_URL, headers=headers, json=data)
if response.status_code == 200:
results = response.json()["data"]["results"]
for idx, item in enumerate(results, 1):
print(f"{idx}. 相关性得分: {item['relevance_score']:.4f}, 文档: {item['document']['text']}")
else:
print(f"请求失败: {response.status_code}, {response.text}")
三、BGE与博查Rerank API的排序效果对比
我们分别使用BGE模型和博查Rerank API对相同的文本进行重排序,并对比它们的排序结果。
3.1 排序结果对比
提问的query:人工智能的发展趋势
BGE模型
博查AI推出的 Semantic Reranker API
3.2 结果分析
从结果来看,首先是排序结果,我们通过直觉对比,博查 Semantic Reranker API 的排序结果似乎更符合我们的预期,
然后从时间成本上来看,博查 Semantic Reranker API 只用了 0.5 秒就完成了排序,BGE模型却花了 5.3 秒,这还不提最开始加载模型时,还需要先下载2.4G的模型。
当然了,BGE模型的运行速度是取决于你使用的机器的,可能我使用的是CPU,所以比较慢,同时 BGE模型 在语义匹配方面的能力也是不容忽视的,更加适合用于离线任务和自定义检索系统。
不过他们的主要区别在于,
- BGE是开源模型,我们在使用时需要在自己的机器上运行,需要维护服务器;
- 博查的Semantic Reranker API是提供API服务,我们在使用时只需要几行代码即可添加使用,省时省力。
总结
BGE模型和博查Rerank API各有优势,BGE适用于定制化需求,博查Rerank API则适合快速集成。开发者可根据项目需求选择最适合的方案。
当然,我们不可否认的是,两者都是国内做的非常出色的模型。未来,我们期待还会有更加智能的重排序技术,进一步提升信息检索的效率和准确性。
🔗 系列文章推荐:

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)