Model reference · open weights

acge_text_embedding

Available as managed deployment Embeddings aspire · community Embeddings 1 variants 505 dl/mo

acge_text_embedding is an open-weight embedding model from aspire. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.

Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.

What it is

Released byaspire
TypeEmbedding models
TaskEmbeddings
Parameters (lead)326M
Context1k tokens
Runs withsentence-transformers
Released2024-03-09
Popularity505 downloads / month
LicenceUnknown

About

What acge_text_embedding is

acge model

acge模型来自于合合信息技术团队,对外技术试用平台TextIn, github开源链接为github。合合信息是行业领先的人工智能及大数据科技企业,致力于通过智能文字识别及商业大数据领域的核心技术、C端和B端产品以及行业解决方案为全球企业和个人用户提供创新的数字化、智能化服务。

技术交流请联系,商务合作请联系,可以点击图片,扫面二维码来加入我们的微信社群。想加入合合信息,做“文档解析”、“文档检索”、“文档预研”的同学可以投简历给min_du@intsig.net,也可直接添加HR微信详聊岗位内容。

Read the full model card

acge是一个通用的文本编码模型,是一个可变长度的向量化模型,使用了Matryoshka Representation Learning,如图所示:

建议使用的维度为1024或者1792

Model NameModel Size (GB)DimensionSequence LengthLanguageNeed instruction for retrieval?
acge-text-embedding0.65[1024, 1792]1024ChineseNO

Metric

C-MTEB leaderboard (Chinese)

测试的时候因为数据的随机性、显卡、推理的数据类型导致每次推理的结果不一致,我总共测试了4次,不同的显卡(A10 A100),不同的数据类型,测试结果放在了result文件夹中,选取了一个精度最低的测试作为最终的精度测试。 根据infgrad的建议,选取不用的输入的长度作为测试,Sequence Length为512时测试最佳。

Model NameGPUtensor-typeModel Size (GB)DimensionSequence LengthAverage (35)Classification (9)Clustering (4)Pair Classification (2)Reranking (4)Retrieval (8)STS (8)
acge_text_embeddingNVIDIA TESLA A10bfloat160.651792102468.9172.7658.2287.8267.6772.4862.24
acge_text_embeddingNVIDIA TESLA A100bfloat160.651792102468.9172.7758.3587.8267.5372.4862.24
acge_text_embeddingNVIDIA TESLA A100float160.651792102468.9972.7658.6887.8467.8972.4962.24
acge_text_embeddingNVIDIA TESLA A100float320.651792102468.9872.7658.5887.8367.9172.4962.24
acge_text_embeddingNVIDIA TESLA A100float160.65179276868.9572.7658.6887.8467.8672.4862.07
acge_text_embeddingNVIDIA TESLA A100float160.65179251269.0772.7558.787.8467.9972.9362.09
Reproduce our results

C-MTEB:

import torch
import argparse
import functools
from C_MTEB.tasks import *
from typing import List, Dict
from sentence_transformers import SentenceTransformer
from mteb import MTEB, DRESModel

class RetrievalModel(DRESModel):
    def __init__(self, encoder, **kwargs):
        self.encoder = encoder

    def encode_queries(self, queries: List[str], **kwargs) -> np.ndarray:
        input_texts = ['{}'.format(q) for q in queries]
        return self._do_encode(input_texts)

    def encode_corpus(self, corpus: List[Dict[str, str]], **kwargs) -> np.ndarray:
        input_texts = ['{} {}'.format(doc.get('title', ''), doc['text']).strip() for doc in corpus]
        input_texts = ['{}'.format(t) for t in input_texts]
        return self._do_encode(input_texts)

    @torch.no_grad()
    def _do_encode(self, input_texts: List[str]) -> np.ndarray:
        return self.encoder.encode(
            sentences=input_texts,
            batch_size=512,
            normalize_embeddings=True,
            convert_to_numpy=True
        )

def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('--model_name_or_path', default="acge_text_embedding", type=str)
    parser.add_argument('--task_type', default=None, type=str)
    parser.add_argument('--pooling_method', default='cls', type=str)
    parser.add_argument('--output_dir', default='zh_results',
                        type=str, help='output directory')
    parser.add_argument('--max_len', default=1024, type=int, help='max length')
    return parser.parse_args()

if __name__ == '__main__':
    args = get_args()
    encoder = SentenceTransformer(args.model_name_or_path).half()
    encoder.encode = functools.partial(encoder.encode, normalize_embeddings=True)
    encoder.max_seq_length = int(args.max_len)

    task_names = [t.description["name"] for t in MTEB(task_types=args.task_type,
                                                      task_langs=['zh', 'zh-CN']).tasks]
    TASKS_WITH_PROMPTS = ["T2Retrieval", "MMarcoRetrieval", "DuRetrieval", "CovidRetrieval", "CmedqaRetrieval",
                          "EcomRetrieval", "MedicalRetrieval", "VideoRetrieval"]
    for task in task_names:
        evaluation = MTEB(tasks=[task], task_langs=['zh', 'zh-CN'])
        if task in TASKS_WITH_PROMPTS:
            evaluation.run(RetrievalModel(encoder), output_folder=args.output_dir, overwrite_results=False)
        else:
            evaluation.run(encoder, output_folder=args.output_dir, overwrite_results=False)

Usage

acge 中文系列模型

在sentence-transformer库中的使用方法:

from sentence_transformers import SentenceTransformer

sentences = ["数据1", "数据2"]
model = SentenceTransformer('acge_text_embedding')
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)

在sentence-transformer库中的使用方法,选取不同的维度:

from sklearn.preprocessing import normalize
from sentence_transformers import SentenceTransformer

sentences = ["数据1", "数据2"]
model = SentenceTransformer('acge_text_embedding')
embeddings = model.encode(sentences, normalize_embeddings=False)
matryoshka_dim = 1024
embeddings = embeddings[..., :matryoshka_dim]  # Shrink the embedding dimensions
embeddings = normalize(embeddings, norm="l2", axis=1)
print(embeddings.shape)
# => (2, 1024)

From the published model card. Full card on the HuggingFace links in the sidebar.

Benchmarks

Reported results

As published on the model card — the maker's own numbers, not measured by AxForge.

TaskDatasetMetricScore
STSMTEB AFQMCcos_sim_pearson54.034
STSMTEB AFQMCcos_sim_spearman58.807
STSMTEB AFQMCeuclidean_pearson57.472
STSMTEB AFQMCeuclidean_spearman58.808
STSMTEB AFQMCmanhattan_pearson57.463
STSMTEB AFQMCmanhattan_spearman58.802
STSMTEB ATECcos_sim_pearson53.526
STSMTEB ATECcos_sim_spearman57.945
STSMTEB ATECeuclidean_pearson61.170
STSMTEB ATECeuclidean_spearman57.946
STSMTEB ATECmanhattan_pearson61.168
STSMTEB ATECmanhattan_spearman57.945
ClassificationMTEB AmazonReviewsClassification (zh)accuracy48.538
ClassificationMTEB AmazonReviewsClassification (zh)f146.599
STSMTEB BQcos_sim_pearson68.275
STSMTEB BQcos_sim_spearman70.371
STSMTEB BQeuclidean_pearson69.427
STSMTEB BQeuclidean_spearman70.370
STSMTEB BQmanhattan_pearson69.403
STSMTEB BQmanhattan_spearman70.348
ClusteringMTEB CLSClusteringP2Pv_measure47.080
ClusteringMTEB CLSClusteringS2Sv_measure44.053
RerankingMTEB CMedQAv1map88.660
RerankingMTEB CMedQAv1mrr90.648

Using it via the API

Call it like any OpenAI endpoint

Once AxForge deploys acge-text-embedding for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (acge-text-embedding below is illustrative; you get the exact model name on deployment.)

$ curl -sS https://api.axforge.ai/v1/embeddings \
  -H "Authorization: Bearer $AXFORGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"acge-text-embedding","input":"text to embed"}'

Create an account — your API key is available in the console. 3M free tokens every 30 days with every new account.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms