链载Ai

标题: Jina AI将LLM Reranker延迟打下来了:21秒变3秒! [打印本页]

作者: 链载Ai    时间: 1 小时前
标题: Jina AI将LLM Reranker延迟打下来了:21秒变3秒!
Jina Reranker v2之后,Jina AI又开源了PE-Rank,一种新的基于LLM的重新排序器,用于高效的列表式段落重新排序。不是将原始文本输入到LLM的上下文窗口,而是使用嵌入模型将每个段落表示为一个特殊标记


ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: 4px solid rgb(248, 57, 41);">PE-Rank背景

使用大型语言模型(LLM)作为重新排序器有什么吸引人的地方?
但在实践中,是什么阻止人们使用LLM作为重新排序器?

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: 4px solid rgb(248, 57, 41);">PE-Rank原理

使用PE-Rank,LLM的输入基本上是指令+查询+嵌入的段落,每个都作为一个特殊标记,如下所示:
用于学习排名阶段训练的数据格式

其次,使用特殊段落标记来表示原始文本的想法类似于软提示。但在PE-Rank中,使用像Jina/BGE这样的外部嵌入模型来编码文档。这在外部嵌入和主干LLM自己的标记嵌入之间引入了一些差异,这意味着需要学习一个映射函数。为了做到这一点,冻结了嵌入模型和LLM,并仅训练了一个2层的多层感知器(MLP)来转换嵌入空间。

在两阶段排名范式下的 PE-Rank 概览。(a) 是检索阶段,检索 n 个段落嵌入;(b) 是大型语言模型(LLM)的前向传递过程;(c) 展示了列表式解码过程。

但是,如何微调一个大型语言模型(LLM)呢?经典的监督式微调(SFT)方法在这里有用吗?实际上,并不是特别有用。因为解码空间仅限于特殊的段落嵌入标记,应用标准的SFT并不直接。在PE-Rank中,结合了两种损失:ListMLE,它最大化生成下一个最相关段落标记的概率;以及上下文ListMLE,它进一步基于原始内容本身进行条件化。这种方法提高了模型利用查询和段落之间标记级交互的能力,并有助于在仅使用嵌入进行排名时转移这种能力。
两种类型的训练数据和学习排名的训练过程的说明

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: 4px solid rgb(248, 57, 41);">PE-Rank效果评测

使用 Mistral-7B-Instruct-v0.2 作为 PE-Rank 的大型语言模型(LLM)的基础模型,以及 Jina-embeddings-v2/BGE-v1.5 作为外部嵌入。通过这种设置,实现了与将原始文档投入 GPT-4(表中的 RankGPT4)相当的性能,但延迟仅为其六分之一,将总时间成本从20秒减少到3秒。如果只重新排序前20个候选项,单个查询的延迟可以进一步降低到0.5秒,使其在现实世界的应用中变得相当实用。
在TREC DL和BEIR上重新排序前100个段落的结果(NDCG@10)。Ret表示第一阶段使用的检索模型。

在推理过程中重新排序前100名候选者在不同阶段的延迟

在 Jina 嵌入和 BGE 嵌入之间切换时,发现 PE-Rank 可以一致地改进基础检索器的性能,无论是 BM25、Jina 还是 BGE。一个有趣的点是,尽管 BGE 在 MTEB 上的得分高于 Jina,但使用 BGE 嵌入重新排序 BM25 检索结果的性能在三个不同的数据集上始终低于使用 Jina 嵌入。这表明在像 MTEB 这样的通用嵌入基准测试中表现出色的模型,在这个特定上下文中可能不一定表现良好,而 Jina 嵌入在这里显示出更好的扩展性。

https://github.com/liuqi6777/pe_rankhttps://arxiv.org/pdf/2406.14848LeveragingPassageEmbeddingsforEfficientListwiseRerankingwithLargeLanguageModels







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5