tags:
- sentence-transformers
- feature-extraction
- sentence-similarity
- mteb
- RAG
model-index:
- name: Dmeta-embedding
results:
- task:
type: STS
dataset:
type: C-MTEB/AFQMC
name: MTEB AFQMC
config: default
split: validation
revision: None
metrics:
- type: cos_sim_pearson
value: 65.60825224706932
- type: cos_sim_spearman
value: 71.12862586297193
- type: euclidean_pearson
value: 70.18130275750404
- type: euclidean_spearman
value: 71.12862586297193
- type: manhattan_pearson
value: 70.14470398075396
- type: manhattan_spearman
value: 71.05226975911737
- task:
type: STS
dataset:
type: C-MTEB/ATEC
name: MTEB ATEC
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 65.52386345655479
- type: cos_sim_spearman
value: 64.64245253181382
- type: euclidean_pearson
value: 73.20157662981914
- type: euclidean_spearman
value: 64.64245253178956
- type: manhattan_pearson
value: 73.22837571756348
- type: manhattan_spearman
value: 64.62632334391418
- task:
type: Classification
dataset:
type: mteb/amazon_reviews_multi
name: MTEB AmazonReviewsClassification (zh)
config: zh
split: test
revision: 1399c76144fd37290681b995c656ef9b2e06e26d
metrics:
- type: accuracy
value: 44.925999999999995
- type: f1
value: 42.82555191308971
- task:
type: STS
dataset:
type: C-MTEB/BQ
name: MTEB BQ
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 71.35236446393156
- type: cos_sim_spearman
value: 72.29629643702184
- type: euclidean_pearson
value: 70.94570179874498
- type: euclidean_spearman
value: 72.29629297226953
- type: manhattan_pearson
value: 70.84463025501125
- type: manhattan_spearman
value: 72.24527021975821
- task:
type: Clustering
dataset:
type: C-MTEB/CLSClusteringP2P
name: MTEB CLSClusteringP2P
config: default
split: test
revision: None
metrics:
- type: v_measure
value: 40.24232916894152
- task:
type: Clustering
dataset:
type: C-MTEB/CLSClusteringS2S
name: MTEB CLSClusteringS2S
config: default
split: test
revision: None
metrics:
- type: v_measure
value: 39.167806226929706
- task:
type: Reranking
dataset:
type: C-MTEB/CMedQAv1-reranking
name: MTEB CMedQAv1
config: default
split: test
revision: None
metrics:
- type: map
value: 88.48837920106357
- type: mrr
value: 90.36861111111111
- task:
type: Reranking
dataset:
type: C-MTEB/CMedQAv2-reranking
name: MTEB CMedQAv2
config: default
split: test
revision: None
metrics:
- type: map
value: 89.17878171657071
- type: mrr
value: 91.35805555555555
- task:
type: Retrieval
dataset:
type: C-MTEB/CmedqaRetrieval
name: MTEB CmedqaRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 25.751
- type: map_at_10
value: 38.946
- type: map_at_100
value: 40.855000000000004
- type: map_at_1000
value: 40.953
- type: map_at_3
value: 34.533
- type: map_at_5
value: 36.905
- type: mrr_at_1
value: 39.235
- type: mrr_at_10
value: 47.713
- type: mrr_at_100
value: 48.71
- type: mrr_at_1000
value: 48.747
- type: mrr_at_3
value: 45.086
- type: mrr_at_5
value: 46.498
- type: ndcg_at_1
value: 39.235
- type: ndcg_at_10
value: 45.831
- type: ndcg_at_100
value: 53.162
- type: ndcg_at_1000
value: 54.800000000000004
- type: ndcg_at_3
value: 40.188
- type: ndcg_at_5
value: 42.387
- type: precision_at_1
value: 39.235
- type: precision_at_10
value: 10.273
- type: precision_at_100
value: 1.627
- type: precision_at_1000
value: 0.183
- type: precision_at_3
value: 22.772000000000002
- type: precision_at_5
value: 16.524
- type: recall_at_1
value: 25.751
- type: recall_at_10
value: 57.411
- type: recall_at_100
value: 87.44
- type: recall_at_1000
value: 98.386
- type: recall_at_3
value: 40.416000000000004
- type: recall_at_5
value: 47.238
- task:
type: PairClassification
dataset:
type: C-MTEB/CMNLI
name: MTEB Cmnli
config: default
split: validation
revision: None
metrics:
- type: cos_sim_accuracy
value: 83.59591100420926
- type: cos_sim_ap
value: 90.65538153970263
- type: cos_sim_f1
value: 84.76466651795673
- type: cos_sim_precision
value: 81.04073363190446
- type: cos_sim_recall
value: 88.84732288987608
- type: dot_accuracy
value: 83.59591100420926
- type: dot_ap
value: 90.64355541781003
- type: dot_f1
value: 84.76466651795673
- type: dot_precision
value: 81.04073363190446
- type: dot_recall
value: 88.84732288987608
- type: euclidean_accuracy
value: 83.59591100420926
- type: euclidean_ap
value: 90.6547878194287
- type: euclidean_f1
value: 84.76466651795673
- type: euclidean_precision
value: 81.04073363190446
- type: euclidean_recall
value: 88.84732288987608
- type: manhattan_accuracy
value: 83.51172579675286
- type: manhattan_ap
value: 90.59941589844144
- type: manhattan_f1
value: 84.51827242524917
- type: manhattan_precision
value: 80.28613507258574
- type: manhattan_recall
value: 89.22141688099134
- type: max_accuracy
value: 83.59591100420926
- type: max_ap
value: 90.65538153970263
- type: max_f1
value: 84.76466651795673
- task:
type: Retrieval
dataset:
type: C-MTEB/CovidRetrieval
name: MTEB CovidRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 63.251000000000005
- type: map_at_10
value: 72.442
- type: map_at_100
value: 72.79299999999999
- type: map_at_1000
value: 72.80499999999999
- type: map_at_3
value: 70.293
- type: map_at_5
value: 71.571
- type: mrr_at_1
value: 63.541000000000004
- type: mrr_at_10
value: 72.502
- type: mrr_at_100
value: 72.846
- type: mrr_at_1000
value: 72.858
- type: mrr_at_3
value: 70.39
- type: mrr_at_5
value: 71.654
- type: ndcg_at_1
value: 63.541000000000004
- type: ndcg_at_10
value: 76.774
- type: ndcg_at_100
value: 78.389
- type: ndcg_at_1000
value: 78.678
- type: ndcg_at_3
value: 72.47
- type: ndcg_at_5
value: 74.748
- type: precision_at_1
value: 63.541000000000004
- type: precision_at_10
value: 9.115
- type: precision_at_100
value: 0.9860000000000001
- type: precision_at_1000
value: 0.101
- type: precision_at_3
value: 26.379
- type: precision_at_5
value: 16.965
- type: recall_at_1
value: 63.251000000000005
- type: recall_at_10
value: 90.253
- type: recall_at_100
value: 97.576
- type: recall_at_1000
value: 99.789
- type: recall_at_3
value: 78.635
- type: recall_at_5
value: 84.141
- task:
type: Retrieval
dataset:
type: C-MTEB/DuRetrieval
name: MTEB DuRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 23.597
- type: map_at_10
value: 72.411
- type: map_at_100
value: 75.58500000000001
- type: map_at_1000
value: 75.64800000000001
- type: map_at_3
value: 49.61
- type: map_at_5
value: 62.527
- type: mrr_at_1
value: 84.65
- type: mrr_at_10
value: 89.43900000000001
- type: mrr_at_100
value: 89.525
- type: mrr_at_1000
value: 89.529
- type: mrr_at_3
value: 89
- type: mrr_at_5
value: 89.297
- type: ndcg_at_1
value: 84.65
- type: ndcg_at_10
value: 81.47
- type: ndcg_at_100
value: 85.198
- type: ndcg_at_1000
value: 85.828
- type: ndcg_at_3
value: 79.809
- type: ndcg_at_5
value: 78.55
- type: precision_at_1
value: 84.65
- type: precision_at_10
value: 39.595
- type: precision_at_100
value: 4.707
- type: precision_at_1000
value: 0.485
- type: precision_at_3
value: 71.61699999999999
- type: precision_at_5
value: 60.45
- type: recall_at_1
value: 23.597
- type: recall_at_10
value: 83.34
- type: recall_at_100
value: 95.19800000000001
- type: recall_at_1000
value: 98.509
- type: recall_at_3
value: 52.744
- type: recall_at_5
value: 68.411
- task:
type: Retrieval
dataset:
type: C-MTEB/EcomRetrieval
name: MTEB EcomRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 53.1
- type: map_at_10
value: 63.359
- type: map_at_100
value: 63.9
- type: map_at_1000
value: 63.909000000000006
- type: map_at_3
value: 60.95
- type: map_at_5
value: 62.305
- type: mrr_at_1
value: 53.1
- type: mrr_at_10
value: 63.359
- type: mrr_at_100
value: 63.9
- type: mrr_at_1000
value: 63.909000000000006
- type: mrr_at_3
value: 60.95
- type: mrr_at_5
value: 62.305
- type: ndcg_at_1
value: 53.1
- type: ndcg_at_10
value: 68.418
- type: ndcg_at_100
value: 70.88499999999999
- type: ndcg_at_1000
value: 71.135
- type: ndcg_at_3
value: 63.50599999999999
- type: ndcg_at_5
value: 65.92
- type: precision_at_1
value: 53.1
- type: precision_at_10
value: 8.43
- type: precision_at_100
value: 0.955
- type: precision_at_1000
value: 0.098
- type: precision_at_3
value: 23.633000000000003
- type: precision_at_5
value: 15.340000000000002
- type: recall_at_1
value: 53.1
- type: recall_at_10
value: 84.3
- type: recall_at_100
value: 95.5
- type: recall_at_1000
value: 97.5
- type: recall_at_3
value: 70.89999999999999
- type: recall_at_5
value: 76.7
- task:
type: Classification
dataset:
type: C-MTEB/IFlyTek-classification
name: MTEB IFlyTek
config: default
split: validation
revision: None
metrics:
- type: accuracy
value: 48.303193535975375
- type: f1
value: 35.96559358693866
- task:
type: Classification
dataset:
type: C-MTEB/JDReview-classification
name: MTEB JDReview
config: default
split: test
revision: None
metrics:
- type: accuracy
value: 85.06566604127579
- type: ap
value: 52.0596483757231
- type: f1
value: 79.5196835127668
- task:
type: STS
dataset:
type: C-MTEB/LCQMC
name: MTEB LCQMC
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 74.48499423626059
- type: cos_sim_spearman
value: 78.75806756061169
- type: euclidean_pearson
value: 78.47917601852879
- type: euclidean_spearman
value: 78.75807199272622
- type: manhattan_pearson
value: 78.40207586289772
- type: manhattan_spearman
value: 78.6911776964119
- task:
type: Reranking
dataset:
type: C-MTEB/Mmarco-reranking
name: MTEB MMarcoReranking
config: default
split: dev
revision: None
metrics:
- type: map
value: 24.75987466552363
- type: mrr
value: 23.40515873015873
- task:
type: Retrieval
dataset:
type: C-MTEB/MMarcoRetrieval
name: MTEB MMarcoRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 58.026999999999994
- type: map_at_10
value: 67.50699999999999
- type: map_at_100
value: 67.946
- type: map_at_1000
value: 67.96600000000001
- type: map_at_3
value: 65.503
- type: map_at_5
value: 66.649
- type: mrr_at_1
value: 60.20100000000001
- type: mrr_at_10
value: 68.271
- type: mrr_at_100
value: 68.664
- type: mrr_at_1000
value: 68.682
- type: mrr_at_3
value: 66.47800000000001
- type: mrr_at_5
value: 67.499
- type: ndcg_at_1
value: 60.20100000000001
- type: ndcg_at_10
value: 71.697
- type: ndcg_at_100
value: 73.736
- type: ndcg_at_1000
value: 74.259
- type: ndcg_at_3
value: 67.768
- type: ndcg_at_5
value: 69.72
- type: precision_at_1
value: 60.20100000000001
- type: precision_at_10
value: 8.927999999999999
- type: precision_at_100
value: 0.9950000000000001
- type: precision_at_1000
value: 0.104
- type: precision_at_3
value: 25.883
- type: precision_at_5
value: 16.55
- type: recall_at_1
value: 58.026999999999994
- type: recall_at_10
value: 83.966
- type: recall_at_100
value: 93.313
- type: recall_at_1000
value: 97.426
- type: recall_at_3
value: 73.342
- type: recall_at_5
value: 77.997
- 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: 71.1600537995965
- type: f1
value: 68.8126216609964
- 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: 73.54068594485541
- type: f1
value: 73.46845879869848
- task:
type: Retrieval
dataset:
type: C-MTEB/MedicalRetrieval
name: MTEB MedicalRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 54.900000000000006
- type: map_at_10
value: 61.363
- type: map_at_100
value: 61.924
- type: map_at_1000
value: 61.967000000000006
- type: map_at_3
value: 59.767
- type: map_at_5
value: 60.802
- type: mrr_at_1
value: 55.1
- type: mrr_at_10
value: 61.454
- type: mrr_at_100
value: 62.016000000000005
- type: mrr_at_1000
value: 62.059
- type: mrr_at_3
value: 59.882999999999996
- type: mrr_at_5
value: 60.893
- type: ndcg_at_1
value: 54.900000000000006
- type: ndcg_at_10
value: 64.423
- type: ndcg_at_100
value: 67.35900000000001
- type: ndcg_at_1000
value: 68.512
- type: ndcg_at_3
value: 61.224000000000004
- type: ndcg_at_5
value: 63.083
- type: precision_at_1
value: 54.900000000000006
- type: precision_at_10
value: 7.3999999999999995
- type: precision_at_100
value: 0.882
- type: precision_at_1000
value: 0.097
- type: precision_at_3
value: 21.8
- type: precision_at_5
value: 13.98
- type: recall_at_1
value: 54.900000000000006
- type: recall_at_10
value: 74
- type: recall_at_100
value: 88.2
- type: recall_at_1000
value: 97.3
- type: recall_at_3
value: 65.4
- type: recall_at_5
value: 69.89999999999999
- task:
type: Classification
dataset:
type: C-MTEB/MultilingualSentiment-classification
name: MTEB MultilingualSentiment
config: default
split: validation
revision: None
metrics:
- type: accuracy
value: 75.15666666666667
- type: f1
value: 74.8306375354435
- task:
type: PairClassification
dataset:
type: C-MTEB/OCNLI
name: MTEB Ocnli
config: default
split: validation
revision: None
metrics:
- type: cos_sim_accuracy
value: 83.10774228478614
- type: cos_sim_ap
value: 87.17679348388666
- type: cos_sim_f1
value: 84.59302325581395
- type: cos_sim_precision
value: 78.15577439570276
- type: cos_sim_recall
value: 92.18585005279832
- type: dot_accuracy
value: 83.10774228478614
- type: dot_ap
value: 87.17679348388666
- type: dot_f1
value: 84.59302325581395
- type: dot_precision
value: 78.15577439570276
- type: dot_recall
value: 92.18585005279832
- type: euclidean_accuracy
value: 83.10774228478614
- type: euclidean_ap
value: 87.17679348388666
- type: euclidean_f1
value: 84.59302325581395
- type: euclidean_precision
value: 78.15577439570276
- type: euclidean_recall
value: 92.18585005279832
- type: manhattan_accuracy
value: 82.67460747157553
- type: manhattan_ap
value: 86.94296334435238
- type: manhattan_f1
value: 84.32327166504382
- type: manhattan_precision
value: 78.22944896115628
- type: manhattan_recall
value: 91.4466737064414
- type: max_accuracy
value: 83.10774228478614
- type: max_ap
value: 87.17679348388666
- type: max_f1
value: 84.59302325581395
- task:
type: Classification
dataset:
type: C-MTEB/OnlineShopping-classification
name: MTEB OnlineShopping
config: default
split: test
revision: None
metrics:
- type: accuracy
value: 93.24999999999999
- type: ap
value: 90.98617641063584
- type: f1
value: 93.23447883650289
- task:
type: STS
dataset:
type: C-MTEB/PAWSX
name: MTEB PAWSX
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 41.071417937737856
- type: cos_sim_spearman
value: 45.049199344455424
- type: euclidean_pearson
value: 44.913450096830786
- type: euclidean_spearman
value: 45.05733424275291
- type: manhattan_pearson
value: 44.881623825912065
- type: manhattan_spearman
value: 44.989923561416596
- task:
type: STS
dataset:
type: C-MTEB/QBQTC
name: MTEB QBQTC
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 41.38238052689359
- type: cos_sim_spearman
value: 42.61949690594399
- type: euclidean_pearson
value: 40.61261500356766
- type: euclidean_spearman
value: 42.619626605620724
- type: manhattan_pearson
value: 40.8886109204474
- type: manhattan_spearman
value: 42.75791523010463
- 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: 62.10977863727196
- type: cos_sim_spearman
value: 63.843727112473225
- type: euclidean_pearson
value: 63.25133487817196
- type: euclidean_spearman
value: 63.843727112473225
- type: manhattan_pearson
value: 63.58749018644103
- type: manhattan_spearman
value: 63.83820575456674
- task:
type: STS
dataset:
type: C-MTEB/STSB
name: MTEB STSB
config: default
split: test
revision: None
metrics:
- type: cos_sim_pearson
value: 79.30616496720054
- type: cos_sim_spearman
value: 80.767935782436
- type: euclidean_pearson
value: 80.4160642670106
- type: euclidean_spearman
value: 80.76820284024356
- type: manhattan_pearson
value: 80.27318714580251
- type: manhattan_spearman
value: 80.61030164164964
- task:
type: Reranking
dataset:
type: C-MTEB/T2Reranking
name: MTEB T2Reranking
config: default
split: dev
revision: None
metrics:
- type: map
value: 66.26242871142425
- type: mrr
value: 76.20689863623174
- task:
type: Retrieval
dataset:
type: C-MTEB/T2Retrieval
name: MTEB T2Retrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 26.240999999999996
- type: map_at_10
value: 73.009
- type: map_at_100
value: 76.893
- type: map_at_1000
value: 76.973
- type: map_at_3
value: 51.339
- type: map_at_5
value: 63.003
- type: mrr_at_1
value: 87.458
- type: mrr_at_10
value: 90.44
- type: mrr_at_100
value: 90.558
- type: mrr_at_1000
value: 90.562
- type: mrr_at_3
value: 89.89
- type: mrr_at_5
value: 90.231
- type: ndcg_at_1
value: 87.458
- type: ndcg_at_10
value: 81.325
- type: ndcg_at_100
value: 85.61999999999999
- type: ndcg_at_1000
value: 86.394
- type: ndcg_at_3
value: 82.796
- type: ndcg_at_5
value: 81.219
- type: precision_at_1
value: 87.458
- type: precision_at_10
value: 40.534
- type: precision_at_100
value: 4.96
- type: precision_at_1000
value: 0.514
- type: precision_at_3
value: 72.444
- type: precision_at_5
value: 60.601000000000006
- type: recall_at_1
value: 26.240999999999996
- type: recall_at_10
value: 80.42
- type: recall_at_100
value: 94.118
- type: recall_at_1000
value: 98.02199999999999
- type: recall_at_3
value: 53.174
- type: recall_at_5
value: 66.739
- task:
type: Classification
dataset:
type: C-MTEB/TNews-classification
name: MTEB TNews
config: default
split: validation
revision: None
metrics:
- type: accuracy
value: 52.40899999999999
- type: f1
value: 50.68532128056062
- task:
type: Clustering
dataset:
type: C-MTEB/ThuNewsClusteringP2P
name: MTEB ThuNewsClusteringP2P
config: default
split: test
revision: None
metrics:
- type: v_measure
value: 65.57616085176686
- task:
type: Clustering
dataset:
type: C-MTEB/ThuNewsClusteringS2S
name: MTEB ThuNewsClusteringS2S
config: default
split: test
revision: None
metrics:
- type: v_measure
value: 58.844999922904925
- task:
type: Retrieval
dataset:
type: C-MTEB/VideoRetrieval
name: MTEB VideoRetrieval
config: default
split: dev
revision: None
metrics:
- type: map_at_1
value: 58.4
- type: map_at_10
value: 68.64
- type: map_at_100
value: 69.062
- type: map_at_1000
value: 69.073
- type: map_at_3
value: 66.567
- type: map_at_5
value: 67.89699999999999
- type: mrr_at_1
value: 58.4
- type: mrr_at_10
value: 68.64
- type: mrr_at_100
value: 69.062
- type: mrr_at_1000
value: 69.073
- type: mrr_at_3
value: 66.567
- type: mrr_at_5
value: 67.89699999999999
- type: ndcg_at_1
value: 58.4
- type: ndcg_at_10
value: 73.30600000000001
- type: ndcg_at_100
value: 75.276
- type: ndcg_at_1000
value: 75.553
- type: ndcg_at_3
value: 69.126
- type: ndcg_at_5
value: 71.519
- type: precision_at_1
value: 58.4
- type: precision_at_10
value: 8.780000000000001
- type: precision_at_100
value: 0.968
- type: precision_at_1000
value: 0.099
- type: precision_at_3
value: 25.5
- type: precision_at_5
value: 16.46
- type: recall_at_1
value: 58.4
- type: recall_at_10
value: 87.8
- type: recall_at_100
value: 96.8
- type: recall_at_1000
value: 99
- type: recall_at_3
value: 76.5
- type: recall_at_5
value: 82.3
- task:
type: Classification
dataset:
type: C-MTEB/waimai-classification
name: MTEB Waimai
config: default
split: test
revision: None
metrics:
- type: accuracy
value: 86.21000000000001
- type: ap
value: 69.17460264576461
- type: f1
value: 84.68032984659226
license: apache-2.0
language:
- zh
- en
pipeline_tag: feature-extraction
Dmeta-embedding
Usage | Evaluation (MTEB) | FAQ | Contact | License (Free)
Update News
2024.02.07, The Embedding API service based on the Dmeta-embedding model now open for internal beta testing. Click the link to apply, and you will receive 400M tokens for free, which can encode approximately GB-level Chinese text.
- Our original intention. Let everyone use Embedding technology at low cost, pay more attention to their own business and product services, and leave the complex technical parts to us.
- How to apply and use. Click the link to submit a form. We will reply to you via aigc@dmetasoul.com within 48 hours. In order to be compatible with the large language model (LLM) technology ecosystem, our Embedding API is used in the same way as OpenAI. We will explain the specific usage in the reply email.
- Join the ours. In the future, we will continue to work in the direction of large language models/AIGC to bring valuable technologies to the community. You can click on the picture and scan the QR code to join our WeChat community and cheer for the AIGC together!
Dmeta-embedding is a cross-domain, cross-task, out-of-the-box Chinese embedding model. It is suitable for various scenarios such as search engine, Q&A, intelligent customer service, LLM+RAG, etc. It supports inference using tools like Transformers/Sentence-Transformers/Langchain.
Features:
- Excellent cross-domain and scene generalization performance, currently ranked second on the MTEB Chinese leaderboard. (2024.01.25)
- The parameter size of model is just 400MB, which can greatly reduce the cost of inference.
- The context window length is up to 1024, more suitable for long text retrieval, RAG and other scenarios
Usage
The model supports inference through frameworks such as Sentence-Transformers, Langchain, Huggingface Transformers, etc. For specific usage, please refer to the following examples.
Sentence-Transformers
Load and inference Dmeta-embedding via sentence-transformers as following:
pip install -U sentence-transformers
from sentence_transformers import SentenceTransformer
texts1 = ["胡子长得太快怎么办?", "在香港哪里买手表好"]
texts2 = ["胡子长得快怎么办?", "怎样使胡子不浓密!", "香港买手表哪里好", "在杭州手机到哪里买"]
model = SentenceTransformer('DMetaSoul/Dmeta-embedding')
embs1 = model.encode(texts1, normalize_embeddings=True)
embs2 = model.encode(texts2, normalize_embeddings=True)
similarity = embs1 @ embs2.T
print(similarity)
for i in range(len(texts1)):
scores = []
for j in range(len(texts2)):
scores.append([texts2[j], similarity[i][j]])
scores = sorted(scores, key=lambda x:x[1], reverse=True)
print(f"查询文本:{texts1[i]}")
for text2, score in scores:
print(f"相似文本:{text2},打分:{score}")
print()
Output:
查询文本:胡子长得太快怎么办?
相似文本:胡子长得快怎么办?,打分:0.9535336494445801
相似文本:怎样使胡子不浓密!,打分:0.6776421070098877
相似文本:香港买手表哪里好,打分:0.2297907918691635
相似文本:在杭州手机到哪里买,打分:0.11386542022228241
查询文本:在香港哪里买手表好
相似文本:香港买手表哪里好,打分:0.9843372106552124
相似文本:在杭州手机到哪里买,打分:0.45211508870124817
相似文本:胡子长得快怎么办?,打分:0.19985519349575043
相似文本:怎样使胡子不浓密!,打分:0.18558596074581146
Langchain
Load and inference Dmeta-embedding via langchain as following:
pip install -U langchain
import torch
import numpy as np
from langchain.embeddings import HuggingFaceEmbeddings
model_name = "DMetaSoul/Dmeta-embedding"
model_kwargs = {'device': 'cuda' if torch.cuda.is_available() else 'cpu'}
encode_kwargs = {'normalize_embeddings': True} # set True to compute cosine similarity
model = HuggingFaceEmbeddings(
model_name=model_name,
model_kwargs=model_kwargs,
encode_kwargs=encode_kwargs,
)
texts1 = ["胡子长得太快怎么办?", "在香港哪里买手表好"]
texts2 = ["胡子长得快怎么办?", "怎样使胡子不浓密!", "香港买手表哪里好", "在杭州手机到哪里买"]
embs1 = model.embed_documents(texts1)
embs2 = model.embed_documents(texts2)
embs1, embs2 = np.array(embs1), np.array(embs2)
similarity = embs1 @ embs2.T
print(similarity)
for i in range(len(texts1)):
scores = []
for j in range(len(texts2)):
scores.append([texts2[j], similarity[i][j]])
scores = sorted(scores, key=lambda x:x[1], reverse=True)
print(f"查询文本:{texts1[i]}")
for text2, score in scores:
print(f"相似文本:{text2},打分:{score}")
print()
HuggingFace Transformers
Load and inference Dmeta-embedding via HuggingFace Transformers as following:
pip install -U transformers
import torch
from transformers import AutoTokenizer, AutoModel
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0] #First element of model_output contains all token embeddings
input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
def cls_pooling(model_output):
return model_output[0][:, 0]
texts1 = ["胡子长得太快怎么办?", "在香港哪里买手表好"]
texts2 = ["胡子长得快怎么办?", "怎样使胡子不浓密!", "香港买手表哪里好", "在杭州手机到哪里买"]
tokenizer = AutoTokenizer.from_pretrained('DMetaSoul/Dmeta-embedding')
model = AutoModel.from_pretrained('DMetaSoul/Dmeta-embedding')
model.eval()
with torch.no_grad():
inputs1 = tokenizer(texts1, padding=True, truncation=True, return_tensors='pt')
inputs2 = tokenizer(texts2, padding=True, truncation=True, return_tensors='pt')
model_output1 = model(**inputs1)
model_output2 = model(**inputs2)
embs1, embs2 = cls_pooling(model_output1), cls_pooling(model_output2)
embs1 = torch.nn.functional.normalize(embs1, p=2, dim=1).numpy()
embs2 = torch.nn.functional.normalize(embs2, p=2, dim=1).numpy()
similarity = embs1 @ embs2.T
print(similarity)
for i in range(len(texts1)):
scores = []
for j in range(len(texts2)):
scores.append([texts2[j], similarity[i][j]])
scores = sorted(scores, key=lambda x:x[1], reverse=True)
print(f"查询文本:{texts1[i]}")
for text2, score in scores:
print(f"相似文本:{text2},打分:{score}")
print()
Evaluation
The Dmeta-embedding model ranked first in open source on the MTEB Chinese list (2024.01.25, first on the Baichuan list, that is not open source). For specific evaluation data and code, please refer to the MTEB official.
MTEB Chinese:
The Chinese leaderboard dataset was collected by the BAAI. It contains 6 classic tasks and a total of 35 Chinese datasets, covering classification, retrieval, reranking, sentence pair classification, STS and other tasks. It is the most comprehensive Embedding model at present. The world's authoritative benchmark of ability assessments.
Model | Vendor | Embedding dimension | Avg | Retrieval | STS | PairClassification | Classification | Reranking | Clustering |
---|---|---|---|---|---|---|---|---|---|
Dmeta-embedding | Our | 1024 | 67.51 | 70.41 | 64.09 | 88.92 | 70 | 67.17 | 50.96 |
gte-large-zh | AliBaba Damo | 1024 | 66.72 | 72.49 | 57.82 | 84.41 | 71.34 | 67.4 | 53.07 |
BAAI/bge-large-zh-v1.5 | BAAI | 1024 | 64.53 | 70.46 | 56.25 | 81.6 | 69.13 | 65.84 | 48.99 |
BAAI/bge-base-zh-v1.5 | BAAI | 768 | 63.13 | 69.49 | 53.72 | 79.75 | 68.07 | 65.39 | 47.53 |
text-embedding-ada-002(OpenAI) | OpenAI | 1536 | 53.02 | 52.0 | 43.35 | 69.56 | 64.31 | 54.28 | 45.68 |
text2vec-base | 个人 | 768 | 47.63 | 38.79 | 43.41 | 67.41 | 62.19 | 49.45 | 37.66 |
text2vec-large | 个人 | 1024 | 47.36 | 41.94 | 44.97 | 70.86 | 60.66 | 49.16 | 30.02 |
FAQ
1. Why does the model have so good generalization performance, and can be used to many task scenarios out of the box?
The excellent generalization ability of the model comes from the diversity of pre-training data, as well as the design of different optimization objectives for multi-task scenarios when pre-training the model.
Specifically, the mainly technical features:
The first is large-scale weak label contrastive learning. Industry experience shows that out-of-the-box language models perform poorly on Embedding-related tasks. However, due to the high cost of supervised data annotation and acquisition, large-scale, high-quality weak label learning has become an optional technical route. By extracting weak labels from semi-structured data such as forums, news, Q&A communities, and encyclopedias on the Internet, and using large models to perform low-quality filtering, 1 billion-level weakly supervised text pair data is obtained.
The second is high-quality supervised learning. We have collected and compiled a large-scale open source annotated sentence pair data set, including a total of 30 million sentence pair samples in encyclopedia, education, finance, medical care, law, news, academia and other fields. At the same time, we mine hard-to-negative sample pairs and use contrastive learning to better optimize the model.
The last step is the optimization of retrieval tasks. Considering that search, question and answer, RAG and other scenarios are important application positions for the Embedding model, in order to enhance the cross-domain and cross-scenario performance of the model, we have specially optimized the model for retrieval tasks. The core lies in mining data from question and answer, retrieval and other data. Hard-to-negative samples use sparse and dense retrieval and other methods to construct a million-level hard-to-negative sample pair data set, which significantly improves the cross-domain retrieval performance of the model.
2. Can the model be used commercially?
Our model is based on the Apache-2.0 license and fully supports free commercial use.
3. How to reproduce the MTEB evaluation?
We provide the mteb_eval.py script in this model hub. You can run this script directly to reproduce our evaluation results.
4. What are the follow-up plans?
We will continue to work hard to provide the community with embedding models that have excellent performance, lightweight reasoning, and can be used in multiple scenarios out of the box. At the same time, we will gradually integrate embedding into the existing technology ecosystem and grow with the community!
Contact
If you encounter any problems during use, you are welcome to go to the discussion to make suggestions.
You can also send us an email: Zhao Zhonghao zhongh@dmetasoul.com, Xiao Wenbin xiaowenbin@dmetasoul.com, Sun Kai sunkai@dmetasoul.com
At the same time, you are welcome to scan the QR code to join our WeChat group and build the AIGC technology ecosystem together!
License
Dmeta-embedding is licensed under the Apache-2.0 License. The released models can be used for commercial purposes free of charge.