Views
No views yet


| Model Name | Model Size (GB) | Dimension | Sequence Length | Language | Need instruction for retrieval? |
|---|---|---|---|---|---|
| acge-text-embedding | 0.65 | [1024, 1792] | 1024 | Chinese | NO |
| Model Name | GPU | tensor-type | Model Size (GB) | Dimension | Sequence Length | Average (35) | Classification (9) | Clustering (4) | Pair Classification (2) | Reranking (4) | Retrieval (8) | STS (8) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| acge_text_embedding | NVIDIA TESLA A10 | bfloat16 | 0.65 | 1792 | 1024 | 68.91 | 72.76 | 58.22 | 87.82 | 67.67 | 72.48 | 62.24 |
| acge_text_embedding | NVIDIA TESLA A100 | bfloat16 | 0.65 | 1792 | 1024 | 68.91 | 72.77 | 58.35 | 87.82 | 67.53 | 72.48 | 62.24 |
| acge_text_embedding | NVIDIA TESLA A100 | float16 | 0.65 | 1792 | 1024 | 68.99 | 72.76 | 58.68 | 87.84 | 67.89 | 72.49 | 62.24 |
| acge_text_embedding | NVIDIA TESLA A100 | float32 | 0.65 | 1792 | 1024 | 68.98 | 72.76 | 58.58 | 87.83 | 67.91 | 72.49 | 62.24 |
| acge_text_embedding | NVIDIA TESLA A100 | float16 | 0.65 | 1792 | 768 | 68.95 | 72.76 | 58.68 | 87.84 | 67.86 | 72.48 | 62.07 |
| acge_text_embedding | NVIDIA TESLA A100 | float16 | 0.65 | 1792 | 512 | 69.07 | 72.75 | 58.7 | 87.84 | 67.99 | 72.93 | 62.09 |
1import torch
2import argparse
3import functools
4from C_MTEB.tasks import *
5from typing import List, Dict
6from sentence_transformers import SentenceTransformer
7from mteb import MTEB, DRESModel
8
9
10class RetrievalModel(DRESModel):
11 def __init__(self, encoder, **kwargs):
12 self.encoder = encoder
13
14 def encode_queries(self, queries: List[str], **kwargs) -> np.ndarray:
15 input_texts = ['{}'.format(q) for q in queries]
16 return self._do_encode(input_texts)
17
18 def encode_corpus(self, corpus: List[Dict[str, str]], **kwargs) -> np.ndarray:
19 input_texts = ['{} {}'.format(doc.get('title', ''), doc['text']).strip() for doc in corpus]
20 input_texts = ['{}'.format(t) for t in input_texts]
21 return self._do_encode(input_texts)
22
23 @torch.no_grad()
24 def _do_encode(self, input_texts: List[str]) -> np.ndarray:
25 return self.encoder.encode(
26 sentences=input_texts,
27 batch_size=512,
28 normalize_embeddings=True,
29 convert_to_numpy=True
30 )
31
32
33def get_args():
34 parser = argparse.ArgumentParser()
35 parser.add_argument('--model_name_or_path', default="acge_text_embedding", type=str)
36 parser.add_argument('--task_type', default=None, type=str)
37 parser.add_argument('--pooling_method', default='cls', type=str)
38 parser.add_argument('--output_dir', default='zh_results',
39 type=str, help='output directory')
40 parser.add_argument('--max_len', default=1024, type=int, help='max length')
41 return parser.parse_args()
42
43
44if __name__ == '__main__':
45 args = get_args()
46 encoder = SentenceTransformer(args.model_name_or_path).half()
47 encoder.encode = functools.partial(encoder.encode, normalize_embeddings=True)
48 encoder.max_seq_length = int(args.max_len)
49
50 task_names = [t.description["name"] for t in MTEB(task_types=args.task_type,
51 task_langs=['zh', 'zh-CN']).tasks]
52 TASKS_WITH_PROMPTS = ["T2Retrieval", "MMarcoRetrieval", "DuRetrieval", "CovidRetrieval", "CmedqaRetrieval",
53 "EcomRetrieval", "MedicalRetrieval", "VideoRetrieval"]
54 for task in task_names:
55 evaluation = MTEB(tasks=[task], task_langs=['zh', 'zh-CN'])
56 if task in TASKS_WITH_PROMPTS:
57 evaluation.run(RetrievalModel(encoder), output_folder=args.output_dir, overwrite_results=False)
58 else:
59 evaluation.run(encoder, output_folder=args.output_dir, overwrite_results=False)
60
611from sentence_transformers import SentenceTransformer
2
3sentences = ["数据1", "数据2"]
4model = SentenceTransformer('acge_text_embedding')
5print(model.max_seq_length)
6embeddings_1 = model.encode(sentences, normalize_embeddings=True)
7embeddings_2 = model.encode(sentences, normalize_embeddings=True)
8similarity = embeddings_1 @ embeddings_2.T
9print(similarity)1from sklearn.preprocessing import normalize
2from sentence_transformers import SentenceTransformer
3
4sentences = ["数据1", "数据2"]
5model = SentenceTransformer('acge_text_embedding')
6embeddings = model.encode(sentences, normalize_embeddings=False)
7matryoshka_dim = 1024
8embeddings = embeddings[..., :matryoshka_dim] # Shrink the embedding dimensions
9embeddings = normalize(embeddings, norm="l2", axis=1)
10print(embeddings.shape)
11# => (2, 1024)
12