Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

llm-based的reranker的一些问题请教 #756

Open
NLPJCL opened this issue May 8, 2024 · 6 comments
Open

llm-based的reranker的一些问题请教 #756

NLPJCL opened this issue May 8, 2024 · 6 comments

Comments

@NLPJCL
Copy link

NLPJCL commented May 8, 2024

您好,请教一下,基于llm-based的reranker,贵团队发布了两个版本:
1.bge-reranker-v2-gemma
2.BAAI/bge-reranker-v2-minicpm-layerwise

计算query和doc的相关性,
第一种使用的是输出yes的概率值。
第二种使用的是最后一个词的向量通过一个mlp映射到1的分值,可以使用layerwise,如果不layerwise的话,可以使用一些现成的库来做比如:MiniCPMForSequenceClassification。

请问下:
1.在相同的数据下,有比较过两种方法的差异吗?
2.在相同的数据下,同一种方法,过加不加prompt描述的差异吗?

@545999961
Copy link
Collaborator

使用的是yes的logits

  1. 在相同的数据下,两种方法的差异可以参考这里 https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/llm_reranker#evaluation
  2. 相同数据下同一方法的不同prompt差异没有在标准的数据集上全量测试过,但是训练的时候针对不同的数据集引入了不同的prompt,所以推理的时候用prompt是有帮助的

@sevenandseven
Copy link

您好,请教一下,基于llm-based的reranker,贵团队发布了两个版本: 1.bge-reranker-v2-gemma 2.BAAI/bge-reranker-v2-minicpm-layerwise

计算query和doc的相关性, 第一种使用的是输出yes的概率值。 第二种使用的是最后一个词的向量通过一个mlp映射到1的分值,可以使用layerwise,如果不layerwise的话,可以使用一些现成的库来做比如:MiniCPMForSequenceClassification。

请问下: 1.在相同的数据下,有比较过两种方法的差异吗? 2.在相同的数据下,同一种方法,过加不加prompt描述的差异吗?

你好,第一种原理时:计算query和doc的相关性,先输出yes或者no这样的标志,然后对这个标志上的数据做logits吗?
第二种原理中的最后一个词的向量进行映射是什么意思?不是逐句进行映射吗?针对以上两种原理不是很明白,期待您的回复,谢谢。

@545999961
Copy link
Collaborator

545999961 commented May 20, 2024

您好,请教一下,基于llm-based的reranker,贵团队发布了两个版本: 1.bge-reranker-v2-gemma 2.BAAI/bge-reranker-v2-minicpm-layerwise
计算query和doc的相关性, 第一种使用的是输出yes的概率值。 第二种使用的是最后一个词的向量通过一个mlp映射到1的分值,可以使用layerwise,如果不layerwise的话,可以使用一些现成的库来做比如:MiniCPMForSequenceClassification。
请问下: 1.在相同的数据下,有比较过两种方法的差异吗? 2.在相同的数据下,同一种方法,过加不加prompt描述的差异吗?

你好,第一种原理时:计算query和doc的相关性,先输出yes或者no这样的标志,然后对这个标志上的数据做logits吗? 第二种原理中的最后一个词的向量进行映射是什么意思?不是逐句进行映射吗?针对以上两种原理不是很明白,期待您的回复,谢谢。

只使用yes的logits作为score,并不会输出yes或者no这样的标志
其实使用yes的logits也是对最后一个token的hidden states经过一个线性层的映射,在embedder中这个hidden states会作为embedding,而在reranker中这个hidden states会经过一个线性层转换为一个score(也就是这里的yes的logits)

@sevenandseven
Copy link

您好,请教一下,基于llm-based的reranker,贵团队发布了两个版本: 1.bge-reranker-v2-gemma 2.BAAI/bge-reranker-v2-minicpm-layerwise
计算query和doc的相关性, 第一种使用的是输出yes的概率值。 第二种使用的是最后一个词的向量通过一个mlp映射到1的分值,可以使用layerwise,如果不layerwise的话,可以使用一些现成的库来做比如:MiniCPMForSequenceClassification。
请问下: 1.在相同的数据下,有比较过两种方法的差异吗? 2.在相同的数据下,同一种方法,过加不加prompt描述的差异吗?

你好,第一种原理时:计算query和doc的相关性,先输出yes或者no这样的标志,然后对这个标志上的数据做logits吗? 第二种原理中的最后一个词的向量进行映射是什么意思?不是逐句进行映射吗?针对以上两种原理不是很明白,期待您的回复,谢谢。

只使用yes的logits作为score,并不会输出yes或者no这样的标志 其实使用yes的logits也是对最后一个token的hidden states经过一个线性层的映射,在embedder中这个hidden states会作为embedding,而在reranker中这个hidden states会经过一个线性层转换为一个score(也就是这里的yes的logits)

这个地方为什么是对最后一个token的hidden states做映射,一个query或者doc应该由很多个token组成的吧,最后的得分不应该是多个token组成的吗?

@NLPJCL
Copy link
Author

NLPJCL commented May 20, 2024

您好,请教一下,基于llm-based的reranker,贵团队发布了两个版本: 1.bge-reranker-v2-gemma 2.BAAI/bge-reranker-v2-minicpm-layerwise
计算query和doc的相关性, 第一种使用的是输出yes的概率值。 第二种使用的是最后一个词的向量通过一个mlp映射到1的分值,可以使用layerwise,如果不layerwise的话,可以使用一些现成的库来做比如:MiniCPMForSequenceClassification。
请问下: 1.在相同的数据下,有比较过两种方法的差异吗? 2.在相同的数据下,同一种方法,过加不加prompt描述的差异吗?

你好,第一种原理时:计算query和doc的相关性,先输出yes或者no这样的标志,然后对这个标志上的数据做logits吗? 第二种原理中的最后一个词的向量进行映射是什么意思?不是逐句进行映射吗?针对以上两种原理不是很明白,期待您的回复,谢谢。

只使用yes的logits作为score,并不会输出yes或者no这样的标志 其实使用yes的logits也是对最后一个token的hidden states经过一个线性层的映射,在embedder中这个hidden states会作为embedding,而在reranker中这个hidden states会经过一个线性层转换为一个score(也就是这里的yes的logits)

这里说的"经过一个线性层转换为一个score",就是把最后一个词的向量,来预测生成下一个词的MLP吧,mlp的维度是[hidden_siize,词表的大小]?最后取yes的那个词的分值,作为最后的得分吧?

@545999961
Copy link
Collaborator

您好,请教一下,基于llm-based的reranker,贵团队发布了两个版本: 1.bge-reranker-v2-gemma 2.BAAI/bge-reranker-v2-minicpm-layerwise
计算query和doc的相关性, 第一种使用的是输出yes的概率值。 第二种使用的是最后一个词的向量通过一个mlp映射到1的分值,可以使用layerwise,如果不layerwise的话,可以使用一些现成的库来做比如:MiniCPMForSequenceClassification。
请问下: 1.在相同的数据下,有比较过两种方法的差异吗? 2.在相同的数据下,同一种方法,过加不加prompt描述的差异吗?

你好,第一种原理时:计算query和doc的相关性,先输出yes或者no这样的标志,然后对这个标志上的数据做logits吗? 第二种原理中的最后一个词的向量进行映射是什么意思?不是逐句进行映射吗?针对以上两种原理不是很明白,期待您的回复,谢谢。

只使用yes的logits作为score,并不会输出yes或者no这样的标志 其实使用yes的logits也是对最后一个token的hidden states经过一个线性层的映射,在embedder中这个hidden states会作为embedding,而在reranker中这个hidden states会经过一个线性层转换为一个score(也就是这里的yes的logits)

这里说的"经过一个线性层转换为一个score",就是把最后一个词的向量,来预测生成下一个词的MLP吧,mlp的维度是[hidden_siize,词表的大小]?最后取yes的那个词的分值,作为最后的得分吧?

是的,将最后一个token的hidden state转变为一个score,不过这里的LLM用的是linear层映射,而不是MLP映射

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants