File size: 6,741 Bytes
dd0b4f3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
---
model-index:
- name: ListConRanker
results:
- dataset:
config: default
name: MTEB CMedQAv1-reranking (default)
revision: null
split: test
type: C-MTEB/CMedQAv1-reranking
metrics:
- type: map
value: 90.55366308098787
- type: mrr_1
value: 87.8
- type: mrr_10
value: 92.45134920634919
- type: mrr_5
value: 92.325
- type: main_score
value: 90.55366308098787
task:
type: Reranking
- dataset:
config: default
name: MTEB CMedQAv2-reranking (default)
revision: null
split: test
type: C-MTEB/CMedQAv2-reranking
metrics:
- type: map
value: 89.38076135722042
- type: mrr_1
value: 85.9
- type: mrr_10
value: 91.28769841269842
- type: mrr_5
value: 91.08999999999999
- type: main_score
value: 89.38076135722042
task:
type: Reranking
- dataset:
config: default
name: MTEB MMarcoReranking (default)
revision: null
split: dev
type: C-MTEB/Mmarco-reranking
metrics:
- type: map
value: 43.881461866703894
- type: mrr_1
value: 32.0
- type: mrr_10
value: 44.700793650793656
- type: mrr_5
value: 43.61666666666667
- type: main_score
value: 43.881461866703894
task:
type: Reranking
- dataset:
config: default
name: MTEB T2Reranking (default)
revision: null
split: dev
type: C-MTEB/T2Reranking
metrics:
- type: map
value: 69.16513825032682
- type: mrr_1
value: 67.41706161137441
- type: mrr_10
value: 80.0946053776961
- type: mrr_5
value: 79.71676822387724
- type: main_score
value: 69.16513825032682
task:
type: Reranking
tags:
- mteb
---
# ListConRanker
## Model
- We propose a **List**wise-encoded **Con**trastive text re**Ranker** (**ListConRanker**), includes a ListTransformer module for listwise encoding. The ListTransformer can facilitate global contrastive information learning between passage features, including the clustering of similar passages, the clustering between dissimilar passages, and the distinction between similar and dissimilar passages. Besides, we propose ListAttention to help ListTransformer maintain the features of the query while learning global comparative information.
- The training loss function is Circle Loss[1]. Compared with cross-entropy loss and ranking loss, it can solve the problems of low data efficiency and unsmooth gradient change.
## Data
The training data consists of approximately 2.6 million queries, each corresponding to multiple passages. The data comes from the training sets of several datasets, including cMedQA1.0, cMedQA2.0, MMarcoReranking, T2Reranking, huatuo, MARC, XL-sum, CSL and so on.
## Training
We trained the model in two stages. In the first stage, we freeze the parameters of embedding model and only train the ListTransformer for 4 epochs with a batch size of 1024. In the second stage, we do not freeze any parameter and train for another 2 epochs with a batch size of 256.
## Inference
Due to the limited memory of GPUs, we input about 20 passages at a time for each query during training. However, during actual use, there may be situations where far more than 20 passages are input at the same time (e.g, MMarcoReranking).
To reduce the discrepancy between training and inference, we propose iterative inference. The iterative inference feeds the passages into the ListConRanker multiple times, and each time it only decides the ranking of the passage at the end of the list.
## Performance
| Model | cMedQA1.0 | cMedQA2.0 | MMarcoReranking | T2Reranking | Avg. |
| :--- | :---: | :---: | :---: | :---: | :---: |
| LdIR-Qwen2-reranker-1.5B | 86.50 | 87.11 | 39.35 | 68.84 | 70.45 |
| zpoint-large-embedding-zh | 91.11 | 90.07 | 38.87 | 69.29 | 72.34 |
| xiaobu-embedding-v2 | 90.96 | 90.41 | 39.91 | 69.03 | 72.58 |
| Conan-embedding-v1 | 91.39 | 89.72 | 41.58 | 68.36 | 72.76 |
| ListConRanker | 90.55 | 89.38 | 43.88 | 69.17 | **73.25** |
| - w/o Iterative Inference | 90.20 | 89.98 | 37.52 | 69.17 | 71.72 |
## How to use
```python
from modules.listconranker import ListConRanker
reranker = ListConRanker('./ListConRanker_ckpt', use_fp16=True, list_transformer_layer=2)
# [query, passages_1, passage_2, ..., passage_n]
batch = [
[
'皮蛋是寒性的食物吗', # query
'营养医师介绍皮蛋是属于凉性的食物,中医认为皮蛋可治眼疼、牙疼、高血压、耳鸣眩晕等疾病。体虚者要少吃。', # passage_1
'皮蛋这种食品是在中国地域才常见的传统食品,它的生长汗青也是非常的悠长。', # passage_2
'喜欢皮蛋的人会觉得皮蛋是最美味的食物,不喜欢皮蛋的人则觉得皮蛋是黑暗料理,尤其很多外国朋友都不理解我们吃皮蛋的习惯' # passage_3
],
[
'月有阴晴圆缺的意义', # query
'形容的是月所有的状态,晴朗明媚,阴沉混沌,有月圆时,但多数时总是有缺陷。', # passage_1
'人有悲欢离合,月有阴晴圆缺这句话意思是人有悲欢离合的变迁,月有阴晴圆缺的转换。', # passage_2
'既然是诗歌,又哪里会有真正含义呢? 大概可以说:人生有太多坎坷,苦难,从容坦荡面对就好。', # passage_3
'一零七六年苏轼贬官密州,时年四十一岁的他政治上很不得志,时值中秋佳节,非常想念自己的弟弟子由内心颇感忧郁,情绪低沉,有感而发写了这首词。' # passage_4
]
]
# for conventional inference, please manage the batch size by yourself
scores = reranker.compute_score(batch)
print(scores)
# [[0.5126953125, 0.331298828125, 0.3642578125], [0.63671875, 0.71630859375, 0.42822265625, 0.35302734375]]
# for iterative inferfence, only a batch size of 1 is supported
# the scores do not indicate similarity but are intended only for ranking
scores = reranker.iterative_inference(batch[0])
print(scores)
# [0.5126953125, 0.331298828125, 0.3642578125]
```
To reproduce the results with iterative inference, please run:
```bash
python3 eval_listconranker_iterative_inference.py
```
To reproduce the results without iterative inference, please run:
```bash
python3 eval_listconranker.py
```
## Reference
1. https://arxiv.org/abs/2002.10857
2. https://github.com/FlagOpen/FlagEmbedding
3. https://arxiv.org/abs/2408.15710
## License
This work is licensed under a [MIT License](https://opensource.org/license/MIT) and the weight of models is licensed under a [Creative Commons Attribution-NonCommercial 4.0 International License](https://creativecommons.org/licenses/by-nc/4.0/).
|