知识库搜到了十段相似文字,BGE Reranker 帮你再挑一遍
为什么值得关注
对已找回的资料逐对评分,把更可能回答问题的段落排到前面。
适合谁:已有资料检索结果、想改进相关段落排序的开发者
这次有哪些亮点
- 输入问题与候选段落对
- 每对返回相关性分数
- 可用sigmoid映射分数到0至1
使用前需要知道
该型号权重采用Apache 2.0;不负责首次检索,不生成答案;归一化分数不是准确率或事实可信概率。
知识库里搜到十段文字,标题和关键词都挺像,真正能回答问题的却可能只有两段。把候选全部塞给回答模型,会占用上下文,也可能让无关段落干扰答案。BGE-reranker-v2-m3承担的,就是在初步找回之后再挑一遍材料。
它不替你重建整个知识库。手头已经有一批候选结果时,才是理解这个模型最直接的位置。
它每次看一对问题与段落
普通嵌入检索通常先为资料建立向量,再将查询向量与它们比较。重排模型的输入则更直接:把问题和候选段落放成一对,让模型为这一对返回相关性分数。
官方模型卡用熊猫问题展示了差异。一个候选只是打招呼,另一个候选介绍大熊猫;给它们分别评分后,介绍熊猫的段落得到更高结果。这个例子说明输入输出关系,不是我们对某个中文知识库跑出的测评。
对应用而言,一条问题配十段候选,就对应十个需要评分的组合。随后按分数排序,选择适量内容进入回答阶段。原始文档的名称、页码或链接仍应跟着段落保留,不能因为重排了顺序,就丢掉来源位置。
分数落在0到1,不等于答案可信度
模型原始分数可以为负。官方接口提供 normalize=True,用sigmoid函数映射到0至1范围,让数值更便于处理。这个变换不会把它变成“这段话有99%的概率正确”。
相关性回答的是段落与问题有多匹配,不负责鉴定段落本身的事实。如果两份说明分别属于新旧版本,旧版段落也可能因为措辞很贴切而排在前面。发布时间、文档版本和访问范围,仍需要检索系统自己的过滤逻辑。
同样,一个在某组候选里很有用的分数阈值,也未必能直接搬到另一类材料上。更有解释力的观察,是比较重排前后前几条结果有没有更接近实际问题,以及需要的段落是否被挤掉。
为什么通常先检索,再重排
官方教程将重排作为独立阶段介绍,并列出不同型号。本文固定为v2-m3,模型卡将该权重标为Apache 2.0;不能把其他Gemma或可选层数型号的特性直接加到它身上。
逐对读取问题与段落,比只比较预先存好的向量多了一步计算。如果一开始就拿问题与全库每段文字都跑一遍,成本会随材料数量上升。因此,通常先用检索缩小候选,再在有限集合中细选。第一步没有找回的材料,重排也不能凭空补出来。
它最适合解决的反馈很具体:“资料搜到了,但正确那段总在下面。”遇到这种情况,可以保留同一组查询与候选,比较加入重排前后的前几项。改善如果出现在这里,才有理由继续调整候选数量和回答上下文,而不是只看一个孤立分数。
以上为编辑整理,功能、许可与使用条件以官方说明为准。