--- 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 ---
icon

Dmeta-embedding

English | 中文

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**](https://dmetasoul.feishu.cn/share/base/form/shrcnu7mN1BDwKFfgGXG9Rb1yDf) 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](https://dmetasoul.feishu.cn/share/base/form/shrcnu7mN1BDwKFfgGXG9Rb1yDf) to submit a form. We will reply to you via 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](https://huggingface.co/DMetaSoul/Dmeta-embedding/resolve/main/weixin.jpeg) 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](https://huggingface.co/spaces/mteb/leaderboard) 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](#sentence-transformers), [Langchain](#langchain), [Huggingface Transformers](#huggingface-transformers), etc. For specific usage, please refer to the following examples. ### Sentence-Transformers Load and inference Dmeta-embedding via [sentence-transformers](https://www.SBERT.net) as following: ``` pip install -U sentence-transformers ``` ```python 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](https://www.langchain.com/) as following: ``` pip install -U langchain ``` ```python 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](https://huggingface.co/docs/transformers/index) as following: ``` pip install -U transformers ``` ```python 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](https://huggingface.co/spaces/mteb/leaderboard) (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](https://github.com/embeddings-benchmark/mteb). **MTEB Chinese**: The [Chinese leaderboard dataset](https://github.com/FlagOpen/FlagEmbedding/blob/master/C_MTEB) 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](https://huggingface.co/DMetaSoul/Dmeta-embedding) | Our | 1024 | 67.51 | 70.41 | 64.09 | 88.92 | 70 | 67.17 | 50.96 | | [gte-large-zh](https://huggingface.co/thenlper/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](https://huggingface.co/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](https://huggingface.co/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)](https://platform.openai.com/docs/guides/embeddings/what-are-embeddings) | OpenAI | 1536 | 53.02 | 52.0 | 43.35 | 69.56 | 64.31 | 54.28 | 45.68 | | [text2vec-base](https://huggingface.co/shibing624/text2vec-base-chinese) | 个人 | 768 | 47.63 | 38.79 | 43.41 | 67.41 | 62.19 | 49.45 | 37.66 | | [text2vec-large](https://huggingface.co/GanymedeNil/text2vec-large-chinese) | 个人 | 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: 1) 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. 2) 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. 3) 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](https://huggingface.co/DMetaSoul/Dmeta-embedding/discussions) to make suggestions. You can also send us an email: Zhao Zhonghao , Xiao Wenbin , Sun Kai 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.