stella-base-zh / README.md
infgrad's picture
Upload 7 files
a6d4ffa
|
raw
history blame
35.1 kB
---
tags:
- mteb
model-index:
- name: stella-base-zh
results:
- task:
type: STS
dataset:
type: C-MTEB/AFQMC
name: MTEB AFQMC
config: default
split: validation
revision: None
metrics:
- type: cos_sim_pearson
value: 49.34825050234731
- type: cos_sim_spearman
value: 51.74726338428475
- type: euclidean_pearson
value: 50.14955499038012
- type: euclidean_spearman
value: 51.74730359287025
- type: manhattan_pearson
value: 50.016703594410615
- type: manhattan_spearman
value: 51.63936364317057
- task:
type: STS
dataset:
type: C-MTEB/ATEC
name: MTEB ATEC
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 52.26876163587667
- type: cos_sim_spearman
value: 52.818410137444374
- type: euclidean_pearson
value: 55.24925286208574
- type: euclidean_spearman
value: 52.818404507964686
- type: manhattan_pearson
value: 55.21236977375391
- type: manhattan_spearman
value: 52.80289117015117
- task:
type: Classification
dataset:
type: mteb/amazon_reviews_multi
name: MTEB AmazonReviewsClassification (zh)
config: zh
split: test
revision: 1399c76144fd37290681b995c656ef9b2e06e26d
metrics:
- type: accuracy
value: 40.245999999999995
- type: f1
value: 38.55443674287747
- task:
type: STS
dataset:
type: C-MTEB/BQ
name: MTEB BQ
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 61.553652835163255
- type: cos_sim_spearman
value: 63.29065064027392
- type: euclidean_pearson
value: 62.000329557485
- type: euclidean_spearman
value: 63.290650638944825
- type: manhattan_pearson
value: 62.02786936153664
- type: manhattan_spearman
value: 63.32720383880146
- task:
type: Clustering
dataset:
type: C-MTEB/CLSClusteringP2P
name: MTEB CLSClusteringP2P
config: default
split: test
revision: None
metrics:
- type: v_measure
value: 39.71224230526474
- task:
type: Clustering
dataset:
type: C-MTEB/CLSClusteringS2S
name: MTEB CLSClusteringS2S
config: default
split: test
revision: None
metrics:
- type: v_measure
value: 36.55705201882987
- task:
type: Reranking
dataset:
type: C-MTEB/CMedQAv1-reranking
name: MTEB CMedQAv1
config: default
split: test
revision: None
metrics:
- type: map
value: 85.69418720521168
- type: mrr
value: 87.97444444444446
- task:
type: Reranking
dataset:
type: C-MTEB/CMedQAv2-reranking
name: MTEB CMedQAv2
config: default
split: test
revision: None
metrics:
- type: map
value: 86.46348358482606
- type: mrr
value: 88.81428571428572
- task:
type: Retrieval
dataset:
type: C-MTEB/CmedqaRetrieval
name: MTEB CmedqaRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 23.721
- type: map_at_10
value: 35.428
- type: map_at_100
value: 37.438
- type: map_at_1000
value: 37.557
- type: map_at_3
value: 31.589
- type: map_at_5
value: 33.647
- type: mrr_at_1
value: 36.709
- type: mrr_at_10
value: 44.590999999999994
- type: mrr_at_100
value: 45.684999999999995
- type: mrr_at_1000
value: 45.732
- type: mrr_at_3
value: 42.331
- type: mrr_at_5
value: 43.532
- type: ndcg_at_1
value: 36.709
- type: ndcg_at_10
value: 41.858000000000004
- type: ndcg_at_100
value: 49.775999999999996
- type: ndcg_at_1000
value: 51.844
- type: ndcg_at_3
value: 37.067
- type: ndcg_at_5
value: 38.875
- type: precision_at_1
value: 36.709
- type: precision_at_10
value: 9.411999999999999
- type: precision_at_100
value: 1.5709999999999997
- type: precision_at_1000
value: 0.183
- type: precision_at_3
value: 21.154999999999998
- type: precision_at_5
value: 15.184000000000001
- type: recall_at_1
value: 23.721
- type: recall_at_10
value: 51.714000000000006
- type: recall_at_100
value: 84.60600000000001
- type: recall_at_1000
value: 98.414
- type: recall_at_3
value: 37.091
- type: recall_at_5
value: 42.978
- task:
type: PairClassification
dataset:
type: C-MTEB/CMNLI
name: MTEB Cmnli
config: default
split: validation
revision: None
metrics:
- type: cos_sim_accuracy
value: 73.61395069152135
- type: cos_sim_ap
value: 81.65459344597652
- type: cos_sim_f1
value: 75.66718995290425
- type: cos_sim_precision
value: 68.4918529746116
- type: cos_sim_recall
value: 84.5218611176058
- type: dot_accuracy
value: 73.61395069152135
- type: dot_ap
value: 81.64596407363373
- type: dot_f1
value: 75.66718995290425
- type: dot_precision
value: 68.4918529746116
- type: dot_recall
value: 84.5218611176058
- type: euclidean_accuracy
value: 73.61395069152135
- type: euclidean_ap
value: 81.6546013070452
- type: euclidean_f1
value: 75.66718995290425
- type: euclidean_precision
value: 68.4918529746116
- type: euclidean_recall
value: 84.5218611176058
- type: manhattan_accuracy
value: 73.51773902585688
- type: manhattan_ap
value: 81.57345451483191
- type: manhattan_f1
value: 75.7393958530681
- type: manhattan_precision
value: 68.87442572741195
- type: manhattan_recall
value: 84.12438625204582
- type: max_accuracy
value: 73.61395069152135
- type: max_ap
value: 81.6546013070452
- type: max_f1
value: 75.7393958530681
- task:
type: Retrieval
dataset:
type: C-MTEB/CovidRetrieval
name: MTEB CovidRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 73.551
- type: map_at_10
value: 81.513
- type: map_at_100
value: 81.734
- type: map_at_1000
value: 81.73700000000001
- type: map_at_3
value: 80.27300000000001
- type: map_at_5
value: 81.017
- type: mrr_at_1
value: 73.762
- type: mrr_at_10
value: 81.479
- type: mrr_at_100
value: 81.699
- type: mrr_at_1000
value: 81.702
- type: mrr_at_3
value: 80.33
- type: mrr_at_5
value: 80.999
- type: ndcg_at_1
value: 73.867
- type: ndcg_at_10
value: 84.711
- type: ndcg_at_100
value: 85.714
- type: ndcg_at_1000
value: 85.803
- type: ndcg_at_3
value: 82.244
- type: ndcg_at_5
value: 83.514
- type: precision_at_1
value: 73.867
- type: precision_at_10
value: 9.557
- type: precision_at_100
value: 1.001
- type: precision_at_1000
value: 0.101
- type: precision_at_3
value: 29.505
- type: precision_at_5
value: 18.377
- type: recall_at_1
value: 73.551
- type: recall_at_10
value: 94.521
- type: recall_at_100
value: 99.05199999999999
- type: recall_at_1000
value: 99.789
- type: recall_at_3
value: 87.777
- type: recall_at_5
value: 90.83200000000001
- task:
type: Retrieval
dataset:
type: C-MTEB/DuRetrieval
name: MTEB DuRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 26.230999999999998
- type: map_at_10
value: 80.635
- type: map_at_100
value: 83.393
- type: map_at_1000
value: 83.431
- type: map_at_3
value: 55.717000000000006
- type: map_at_5
value: 70.387
- type: mrr_at_1
value: 90.75
- type: mrr_at_10
value: 93.569
- type: mrr_at_100
value: 93.648
- type: mrr_at_1000
value: 93.65
- type: mrr_at_3
value: 93.27499999999999
- type: mrr_at_5
value: 93.482
- type: ndcg_at_1
value: 90.75
- type: ndcg_at_10
value: 87.801
- type: ndcg_at_100
value: 90.44
- type: ndcg_at_1000
value: 90.776
- type: ndcg_at_3
value: 86.556
- type: ndcg_at_5
value: 85.468
- type: precision_at_1
value: 90.75
- type: precision_at_10
value: 42.08
- type: precision_at_100
value: 4.816
- type: precision_at_1000
value: 0.49
- type: precision_at_3
value: 77.60000000000001
- type: precision_at_5
value: 65.49000000000001
- type: recall_at_1
value: 26.230999999999998
- type: recall_at_10
value: 89.00200000000001
- type: recall_at_100
value: 97.866
- type: recall_at_1000
value: 99.569
- type: recall_at_3
value: 57.778
- type: recall_at_5
value: 74.895
- task:
type: Retrieval
dataset:
type: C-MTEB/EcomRetrieval
name: MTEB EcomRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 47.599999999999994
- type: map_at_10
value: 57.296
- type: map_at_100
value: 58.011
- type: map_at_1000
value: 58.028
- type: map_at_3
value: 54.300000000000004
- type: map_at_5
value: 56.21000000000001
- type: mrr_at_1
value: 47.599999999999994
- type: mrr_at_10
value: 57.296
- type: mrr_at_100
value: 58.011
- type: mrr_at_1000
value: 58.028
- type: mrr_at_3
value: 54.300000000000004
- type: mrr_at_5
value: 56.21000000000001
- type: ndcg_at_1
value: 47.599999999999994
- type: ndcg_at_10
value: 62.458000000000006
- type: ndcg_at_100
value: 65.589
- type: ndcg_at_1000
value: 66.059
- type: ndcg_at_3
value: 56.364000000000004
- type: ndcg_at_5
value: 59.815
- type: precision_at_1
value: 47.599999999999994
- type: precision_at_10
value: 7.89
- type: precision_at_100
value: 0.928
- type: precision_at_1000
value: 0.097
- type: precision_at_3
value: 20.767
- type: precision_at_5
value: 14.14
- type: recall_at_1
value: 47.599999999999994
- type: recall_at_10
value: 78.9
- type: recall_at_100
value: 92.80000000000001
- type: recall_at_1000
value: 96.6
- type: recall_at_3
value: 62.3
- type: recall_at_5
value: 70.7
- task:
type: Classification
dataset:
type: C-MTEB/IFlyTek-classification
name: MTEB IFlyTek
config: default
split: validation
revision: None
metrics:
- type: accuracy
value: 47.46440938822624
- type: f1
value: 34.587004997852524
- task:
type: Classification
dataset:
type: C-MTEB/JDReview-classification
name: MTEB JDReview
config: default
split: test
revision: None
metrics:
- type: accuracy
value: 84.9906191369606
- type: ap
value: 52.31309789960497
- type: f1
value: 79.55556102310072
- task:
type: STS
dataset:
type: C-MTEB/LCQMC
name: MTEB LCQMC
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 69.80872804636063
- type: cos_sim_spearman
value: 75.83290476813391
- type: euclidean_pearson
value: 74.09865882324753
- type: euclidean_spearman
value: 75.83290698376118
- type: manhattan_pearson
value: 74.0616102379577
- type: manhattan_spearman
value: 75.81278969865738
- task:
type: Retrieval
dataset:
type: C-MTEB/MMarcoRetrieval
name: MTEB MMarcoRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 65.029
- type: map_at_10
value: 74.39
- type: map_at_100
value: 74.734
- type: map_at_1000
value: 74.74300000000001
- type: map_at_3
value: 72.52
- type: map_at_5
value: 73.724
- type: mrr_at_1
value: 67.192
- type: mrr_at_10
value: 74.95100000000001
- type: mrr_at_100
value: 75.25500000000001
- type: mrr_at_1000
value: 75.263
- type: mrr_at_3
value: 73.307
- type: mrr_at_5
value: 74.355
- type: ndcg_at_1
value: 67.192
- type: ndcg_at_10
value: 78.22200000000001
- type: ndcg_at_100
value: 79.76299999999999
- type: ndcg_at_1000
value: 80.018
- type: ndcg_at_3
value: 74.656
- type: ndcg_at_5
value: 76.697
- type: precision_at_1
value: 67.192
- type: precision_at_10
value: 9.513
- type: precision_at_100
value: 1.027
- type: precision_at_1000
value: 0.105
- type: precision_at_3
value: 28.204
- type: precision_at_5
value: 18.009
- type: recall_at_1
value: 65.029
- type: recall_at_10
value: 89.462
- type: recall_at_100
value: 96.418
- type: recall_at_1000
value: 98.409
- type: recall_at_3
value: 80.029
- type: recall_at_5
value: 84.882
- task:
type: Classification
dataset:
type: mteb/amazon_massive_intent
name: MTEB MassiveIntentClassification (zh-CN)
config: zh-CN
split: test
revision: 31efe3c427b0bae9c22cbb560b8f15491cc6bed7
metrics:
- type: accuracy
value: 65.56489576328177
- type: f1
value: 63.37174551232159
- task:
type: Classification
dataset:
type: mteb/amazon_massive_scenario
name: MTEB MassiveScenarioClassification (zh-CN)
config: zh-CN
split: test
revision: 7d571f92784cd94a019292a1f45445077d0ef634
metrics:
- type: accuracy
value: 71.4862138533961
- type: f1
value: 71.171374964826
- task:
type: Retrieval
dataset:
type: C-MTEB/MedicalRetrieval
name: MTEB MedicalRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 48.6
- type: map_at_10
value: 54.92700000000001
- type: map_at_100
value: 55.528
- type: map_at_1000
value: 55.584
- type: map_at_3
value: 53.55
- type: map_at_5
value: 54.379999999999995
- type: mrr_at_1
value: 48.8
- type: mrr_at_10
value: 55.028999999999996
- type: mrr_at_100
value: 55.629
- type: mrr_at_1000
value: 55.684999999999995
- type: mrr_at_3
value: 53.65
- type: mrr_at_5
value: 54.48
- type: ndcg_at_1
value: 48.6
- type: ndcg_at_10
value: 57.965999999999994
- type: ndcg_at_100
value: 61.043000000000006
- type: ndcg_at_1000
value: 62.624
- type: ndcg_at_3
value: 55.132000000000005
- type: ndcg_at_5
value: 56.621
- type: precision_at_1
value: 48.6
- type: precision_at_10
value: 6.75
- type: precision_at_100
value: 0.823
- type: precision_at_1000
value: 0.095
- type: precision_at_3
value: 19.900000000000002
- type: precision_at_5
value: 12.659999999999998
- type: recall_at_1
value: 48.6
- type: recall_at_10
value: 67.5
- type: recall_at_100
value: 82.3
- type: recall_at_1000
value: 94.89999999999999
- type: recall_at_3
value: 59.699999999999996
- type: recall_at_5
value: 63.3
- task:
type: Reranking
dataset:
type: C-MTEB/Mmarco-reranking
name: MTEB MMarcoReranking
config: default
split: dev
revision: None
metrics:
- type: map
value: 29.196130696027474
- type: mrr
value: 28.43730158730159
- task:
type: Classification
dataset:
type: C-MTEB/MultilingualSentiment-classification
name: MTEB MultilingualSentiment
config: default
split: validation
revision: None
metrics:
- type: accuracy
value: 72.48333333333333
- type: f1
value: 72.00258522357558
- task:
type: PairClassification
dataset:
type: C-MTEB/OCNLI
name: MTEB Ocnli
config: default
split: validation
revision: None
metrics:
- type: cos_sim_accuracy
value: 65.13264753654575
- type: cos_sim_ap
value: 70.52831936800807
- type: cos_sim_f1
value: 71.35353535353535
- type: cos_sim_precision
value: 57.787958115183244
- type: cos_sim_recall
value: 93.24181626187962
- type: dot_accuracy
value: 65.13264753654575
- type: dot_ap
value: 70.52828597418102
- type: dot_f1
value: 71.35353535353535
- type: dot_precision
value: 57.787958115183244
- type: dot_recall
value: 93.24181626187962
- type: euclidean_accuracy
value: 65.13264753654575
- type: euclidean_ap
value: 70.52828597418102
- type: euclidean_f1
value: 71.35353535353535
- type: euclidean_precision
value: 57.787958115183244
- type: euclidean_recall
value: 93.24181626187962
- type: manhattan_accuracy
value: 64.8077964266378
- type: manhattan_ap
value: 70.39954487476643
- type: manhattan_f1
value: 71.2270200940573
- type: manhattan_precision
value: 59.84195402298851
- type: manhattan_recall
value: 87.96198521647307
- type: max_accuracy
value: 65.13264753654575
- type: max_ap
value: 70.52831936800807
- type: max_f1
value: 71.35353535353535
- task:
type: Classification
dataset:
type: C-MTEB/OnlineShopping-classification
name: MTEB OnlineShopping
config: default
split: test
revision: None
metrics:
- type: accuracy
value: 90.34
- type: ap
value: 87.79622626876444
- type: f1
value: 90.32357430051181
- task:
type: STS
dataset:
type: C-MTEB/PAWSX
name: MTEB PAWSX
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 27.9175458105215
- type: cos_sim_spearman
value: 32.024302491613014
- type: euclidean_pearson
value: 33.01780461609846
- type: euclidean_spearman
value: 32.024301939183374
- type: manhattan_pearson
value: 32.94874897942371
- type: manhattan_spearman
value: 31.902283210178012
- task:
type: STS
dataset:
type: C-MTEB/QBQTC
name: MTEB QBQTC
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 36.288219964332754
- type: cos_sim_spearman
value: 36.46838652731507
- type: euclidean_pearson
value: 35.11414028811812
- type: euclidean_spearman
value: 36.468386523814104
- type: manhattan_pearson
value: 35.20922826624027
- type: manhattan_spearman
value: 36.55349180906185
- task:
type: STS
dataset:
type: mteb/sts22-crosslingual-sts
name: MTEB STS22 (zh)
config: zh
split: test
revision: 6d1ba47164174a496b7fa5d3569dae26a6813b80
metrics:
- type: cos_sim_pearson
value: 66.18186265837434
- type: cos_sim_spearman
value: 67.52365178443915
- type: euclidean_pearson
value: 65.46342439169497
- type: euclidean_spearman
value: 67.52365178443915
- type: manhattan_pearson
value: 67.3476263677961
- type: manhattan_spearman
value: 69.09476240936812
- task:
type: STS
dataset:
type: C-MTEB/STSB
name: MTEB STSB
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 72.53864906415339
- type: cos_sim_spearman
value: 72.63037820118355
- type: euclidean_pearson
value: 72.42255276991672
- type: euclidean_spearman
value: 72.63037820118355
- type: manhattan_pearson
value: 72.36324244766192
- type: manhattan_spearman
value: 72.58609772740323
- task:
type: Reranking
dataset:
type: C-MTEB/T2Reranking
name: MTEB T2Reranking
config: default
split: dev
revision: None
metrics:
- type: map
value: 66.45708148192449
- type: mrr
value: 76.08372693469173
- task:
type: Retrieval
dataset:
type: C-MTEB/T2Retrieval
name: MTEB T2Retrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 26.436999999999998
- type: map_at_10
value: 74.516
- type: map_at_100
value: 78.29899999999999
- type: map_at_1000
value: 78.372
- type: map_at_3
value: 52.217
- type: map_at_5
value: 64.24
- type: mrr_at_1
value: 88.23
- type: mrr_at_10
value: 91.06400000000001
- type: mrr_at_100
value: 91.18
- type: mrr_at_1000
value: 91.184
- type: mrr_at_3
value: 90.582
- type: mrr_at_5
value: 90.88300000000001
- type: ndcg_at_1
value: 88.23
- type: ndcg_at_10
value: 82.511
- type: ndcg_at_100
value: 86.531
- type: ndcg_at_1000
value: 87.244
- type: ndcg_at_3
value: 83.987
- type: ndcg_at_5
value: 82.46900000000001
- type: precision_at_1
value: 88.23
- type: precision_at_10
value: 41.245
- type: precision_at_100
value: 4.987
- type: precision_at_1000
value: 0.515
- type: precision_at_3
value: 73.675
- type: precision_at_5
value: 61.71
- type: recall_at_1
value: 26.436999999999998
- type: recall_at_10
value: 81.547
- type: recall_at_100
value: 94.548
- type: recall_at_1000
value: 98.197
- type: recall_at_3
value: 54.056000000000004
- type: recall_at_5
value: 67.93
- task:
type: Classification
dataset:
type: C-MTEB/TNews-classification
name: MTEB TNews
config: default
split: validation
revision: None
metrics:
- type: accuracy
value: 50.784
- type: f1
value: 48.89471168071432
- task:
type: Clustering
dataset:
type: C-MTEB/ThuNewsClusteringP2P
name: MTEB ThuNewsClusteringP2P
config: default
split: test
revision: None
metrics:
- type: v_measure
value: 63.19039347990962
- task:
type: Clustering
dataset:
type: C-MTEB/ThuNewsClusteringS2S
name: MTEB ThuNewsClusteringS2S
config: default
split: test
revision: None
metrics:
- type: v_measure
value: 55.357378578603225
- task:
type: Retrieval
dataset:
type: C-MTEB/VideoRetrieval
name: MTEB VideoRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 58.8
- type: map_at_10
value: 68.623
- type: map_at_100
value: 69.074
- type: map_at_1000
value: 69.085
- type: map_at_3
value: 66.767
- type: map_at_5
value: 67.972
- type: mrr_at_1
value: 58.699999999999996
- type: mrr_at_10
value: 68.573
- type: mrr_at_100
value: 69.024
- type: mrr_at_1000
value: 69.035
- type: mrr_at_3
value: 66.717
- type: mrr_at_5
value: 67.92200000000001
- type: ndcg_at_1
value: 58.8
- type: ndcg_at_10
value: 73.038
- type: ndcg_at_100
value: 75.16199999999999
- type: ndcg_at_1000
value: 75.422
- type: ndcg_at_3
value: 69.297
- type: ndcg_at_5
value: 71.475
- type: precision_at_1
value: 58.8
- type: precision_at_10
value: 8.67
- type: precision_at_100
value: 0.9650000000000001
- type: precision_at_1000
value: 0.099
- type: precision_at_3
value: 25.533
- type: precision_at_5
value: 16.38
- type: recall_at_1
value: 58.8
- type: recall_at_10
value: 86.7
- type: recall_at_100
value: 96.5
- type: recall_at_1000
value: 98.5
- type: recall_at_3
value: 76.6
- type: recall_at_5
value: 81.89999999999999
- task:
type: Classification
dataset:
type: C-MTEB/waimai-classification
name: MTEB Waimai
config: default
split: test
revision: None
metrics:
- type: accuracy
value: 86.61999999999999
- type: ap
value: 69.93149123197975
- type: f1
value: 84.99670691559903
---
## stella model
stella是一个通用的中文文本编码模型,目前有两个版本:base 和 large,**2个版本的模型均支持1024的输入长度**
完整的训练思路和训练过程已记录在[博客](https://zhuanlan.zhihu.com/p/655322183),欢迎阅读讨论。
**训练数据:**
1. 开源数据(wudao_base_200GB[1]、m3e[2]和simclue[3]),着重挑选了长度大于512的文本
2. 在通用语料库上使用LLM构造一批(question, paragraph)和(sentence, paragraph)数据
**训练方法:**
1. 对比学习损失函数
2. 带有难负例的对比学习损失函数(分别基于bm25和vector构造了难负例)
3. EWC(Elastic Weights Consolidation)[4]
4. cosent loss[5]
5. 每一种类型的数据一个迭代器,分别计算loss进行更新
**初始权重:**\
stella-base-zh和stella-large-zh分别以piccolo-base-zh[6]和piccolo-large-zh作为基础模型,512-1024的position embedding使用层次分解位置编码[7]进行初始化。\
感谢商汤科技研究院开源的[piccolo系列模型](https://huggingface.co/sensenova)。
stella is a general-purpose Chinese text encoding model, currently with two versions: base and large, **both of them
support input lengths of 1024.**
The training data mainly includes:
1. Open-source training data (wudao_base_200GB, m3e, and simclue), with a focus on selecting texts with lengths greater
than 512.
2. A batch of (question, paragraph) and (sentence, paragraph) data constructed on a general corpus using LLM.
The loss functions mainly include:
1. Contrastive learning loss function
2. Contrastive learning loss function with hard negative examples (based on bm25 and vector hard negatives)
3. EWC (Elastic Weights Consolidation)
4. cosent loss
Model weight initialization:\
stella-base-zh and stella-large-zh use piccolo-base-zh and piccolo-large-zh as the base models, respectively, and the
512-1024 position embedding uses the initialization strategy of hierarchical decomposed position encoding.
Training strategy:\
One iterator for each type of data, separately calculating the loss.
## Metric
#### C-MTEB leaderboard
stella模型在C-MTEB[8]的结果,评测脚本请参见博客。
| Model Name | Model Size (GB) | Dimension | Sequence Length | Average (35) | Classification (9) | Clustering (4) | Pair Classification (2) | Reranking (4) | Retrieval (8) | STS (8) |
|:------------------------:|:---------------:|:---------:|:---------------:|:------------:|:------------------:|:--------------:|:-----------------------:|:-------------:|:-------------:|:-------:|
| **stella-large-zh** | 0.65 | 1024 | **1024** | **64.54** | 67.62 | 48.65 | 78.72 | 65.98 | 71.02 | 58.3 |
| **stella-base-zh** | 0.2 | 768 | **1024** | **64.16** | 67.77 | 48.7 | 76.09 | 66.95 | 71.07 | 56.54 |
| piccolo-large-zh | 0.65 | 1024 | 512 | 64.11 | 67.03 | 47.04 | 78.38 | 65.98 | 70.93 | 58.02 |
| bge-large-zh | 1.3 | 1024 | 512 | 63.96 | 68.32 | 48.39 | 78.94 | 65.11 | 71.52 | 54.98 |
| piccolo-base-zh | 0.2 | 768 | 512 | 63.66 | 66.98 | 47.12 | 76.61 | 66.68 | 71.2 | 55.9 |
| bge-large-zh-no-instruct | 1.3 | 1024 | 512 | 63.4 | 68.58 | 50.01 | 76.77 | 64.9 | 70.54 | 53 |
| [bge-base-zh | 0.41 | 768 | 512 | 62.8 | 67.07 | 47.64 | 77.5 | 64.91 | 69.53 | 54.12 |
#### Evaluation for long text
经过实际观察发现,C-MTEB的评测数据长度基本都是小于512的,
更致命的是那些长度大于512的文本,其重点都在前半部分
这里以CMRC2018的数据为例说明这个问题:
```
question: 《无双大蛇z》是谁旗下ω-force开发的动作游戏?
passage:《无双大蛇z》是光荣旗下ω-force开发的动作游戏,于2009年3月12日登陆索尼playstation3,并于2009年11月27日推......
```
passage长度为800多,大于512,但是对于这个question而言只需要前面40个字就足以检索,多的内容对于模型而言是一种噪声,反而降低了效果。\
简言之,现有数据集的2个问题:\
1)长度大于512的过少\
2)即便大于512,对于检索而言也只需要前512的文本内容\
导致**无法准确评估模型的长文本编码能力。**
为了解决这个问题,搜集了相关开源数据并使用规则进行过滤,最终整理了6份长文本测试集,他们分别是:
- CMRC2018,通用百科
- CAIL,法律阅读理解
- DRCD,繁体百科,已转简体
- Military,军工问答
- Squad,英文阅读理解,已转中文
- Multifieldqa_zh,清华的大模型长文本理解能力评测数据[9]
处理规则是选取答案在512长度之后的文本,短的测试数据会欠采样一下,长短文本占比约为1:2,所以模型既得理解短文本也得理解长文本。
除了Military数据集,我们提供了其他5个测试数据的下载地址:https://drive.google.com/file/d/1WC6EWaCbVgz-vPMDFH4TwAMkLyh5WNcN/view?usp=sharing
评测指标为Recall@5, 结果如下:
| Dataset | piccolo-base-zh | piccolo-large-zh | bge-base-zh | bge-large-zh | stella-base-zh | stella-large-zh |
|:---------------:|:---------------:|:----------------:|:-----------:|:------------:|:--------------:|:---------------:|
| CMRC2018 | 94.34 | 93.82 | 91.56 | 93.12 | 96.08 | 95.56 |
| CAIL | 28.04 | 33.64 | 31.22 | 33.94 | 34.62 | 37.18 |
| DRCD | 78.25 | 77.9 | 78.34 | 80.26 | 86.14 | 84.58 |
| Military | 76.61 | 73.06 | 75.65 | 75.81 | 83.71 | 80.48 |
| Squad | 91.21 | 86.61 | 87.87 | 90.38 | 93.31 | 91.21 |
| Multifieldqa_zh | 81.41 | 83.92 | 83.92 | 83.42 | 79.9 | 80.4 |
| **Average** | 74.98 | 74.83 | 74.76 | 76.15 | **78.96** | **78.24** |
**注意:** 因为长文本评测数据数量稀少,所以构造时也使用了train部分,如果自行评测,请注意模型的训练数据以免数据泄露。
## Usage
本模型是在piccolo基础上训练的,因此**用法和piccolo完全一致**。\
**注意**:在stella中instruction里的冒号是英文冒号, 即`查询: ``结果: `
在sentence-transformer库中的使用方法:
```python
# 对于短对短数据集,下面是通用的使用方式
from sentence_transformers import SentenceTransformer
sentences = ["数据1", "数据2"]
model = SentenceTransformer('infgrad/stella-base-zh')
print(model.max_seq_length)
embeddings_1 = model.encode(sentences, normalize_embeddings=True)
embeddings_2 = model.encode(sentences, normalize_embeddings=True)
similarity = embeddings_1 @ embeddings_2.T
print(similarity)
# 如果是短对长数据集,推荐添加instruction,来帮助模型更好地进行检索。
# 注意instruction里的是英文的冒号
```
直接使用transformers库:
```python
from transformers import AutoModel, AutoTokenizer
from sklearn.preprocessing import normalize
model = AutoModel.from_pretrained('infgrad/stella-base-zh')
tokenizer = AutoTokenizer.from_pretrained('infgrad/stella-base-zh')
sentences = ["数据1", "数据ABCDEFGH"]
batch_data = tokenizer(
batch_text_or_text_pairs=sentences,
padding="longest",
return_tensors="pt",
max_length=1024,
truncation=True,
)
attention_mask = batch_data["attention_mask"]
model_output = model(**batch_data)
last_hidden = model_output.last_hidden_state.masked_fill(~attention_mask[..., None].bool(), 0.0)
vectors = last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]
vectors = normalize(vectors, norm="l2", axis=1, )
print(vectors.shape) # 2,768
```
## Training Detail
**硬件:** 单卡A100-80GB
**环境:** torch1.13.*; transformers-trainer + deepspeed + gradient-checkpointing
**学习率:** 1e-6
**batch_size:** base模型为1024,额外增加20%的难负例;large模型为768,额外增加20%的难负例
**数据量:** 约100万,其中用LLM构造的数据约有200K. LLM模型大小为13b
## ToDoList
**评测的稳定性:**
评测过程中发现Clustering任务会和官方的结果不一致,大约有±0.0x的小差距,基本上可以忽略不计,不影响评测结论。\
但是不完全一样还是比较难理解的,本人试了bge和piccolo系列的模型都存在这个问题,个人猜测可能和使用的库、batch_size等环境有关。
**更高质量的长文本训练和测试数据:** 训练数据多是用13b模型构造的,肯定会存在噪声。
测试数据基本都是从mrc数据整理来的,所以问题都是factoid类型,不符合真实分布。
**OOD的性能:** 虽然近期出现了很多向量编码模型,但是对于不是那么通用的domain,这一众模型包括stella、openai和cohere,
它们的效果均比不上BM25。
## Reference
1. https://www.scidb.cn/en/detail?dataSetId=c6a3fe684227415a9db8e21bac4a15ab
2. https://github.com/wangyuxinwhy/uniem
3. https://github.com/CLUEbenchmark/SimCLUE
4. https://arxiv.org/abs/1612.00796
5. https://kexue.fm/archives/8847
6. https://huggingface.co/sensenova/piccolo-base-zh
7. https://kexue.fm/archives/7947
8. https://github.com/FlagOpen/FlagEmbedding
9. https://github.com/THUDM/LongBench