DMeta-Embedding-ZH ONNX
DMeta-Embedding-ZH 中文嵌入模型的 ONNX INT8 量化版本,专为语义检索和相似度计算优化。
模型特点
- ✅ ONNX 格式 - 跨平台部署
- ✅ INT8 量化 - 模型大小仅 98.7 MB
- ✅ CPU 优化 - 平均推理时间 ~12ms
- ✅ 中文优化 - 专为中文语义理解设计
- ✅ 兼容性好 - 支持 ONNX Runtime 推理
模型信息
| 属性 | 值 |
|---|---|
| Base Model | Dmeta-embedding-zh |
| Hidden Size | 768 |
| Max Position | 1024 |
| Vocabulary Size | 21128 |
| Model Size | 98.7 MB (INT8) |
| Format | ONNX |
| Quantization | INT8 |
性能基准
测试环境:Intel CPU, ONNX Runtime 1.16.3
| 输入长度 | 推理时间 |
|---|---|
| 11 tokens | 12.10 ms |
| 22 tokens | 12.56 ms |
| 17 tokens | 11.23 ms |
安装依赖
pip install onnxruntime transformers numpy
使用方法
Python
import onnxruntime as ort
from transformers import AutoTokenizer
import numpy as np
# 加载模型
model_path = "baby2008/Dmeta-embedding-zh-onnx"
tokenizer = AutoTokenizer.from_pretrained(model_path)
session = ort.InferenceSession(
f"{model_path}/model_int8.onnx",
providers=["CPUExecutionProvider"]
)
# 编码文本
text = "这是一个测试句子。"
inputs = tokenizer(
text,
max_length=512,
padding=True,
truncation=True,
return_tensors="np"
)
# 推理
input_ids = inputs["input_ids"].astype(np.int64)
attention_mask = inputs["attention_mask"].astype(np.int64)
result = session.run(None, {
"input_ids": input_ids,
"attention_mask": attention_mask
})
embedding = result[0] # shape: (1, seq_len, 768)
# 获取句子嵌入(平均池化)
sentence_embedding = embedding.mean(axis=1)
# 归一化
normalized = sentence_embedding / np.linalg.norm(sentence_embedding)
相似度计算
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
# 编码两个句子
text1 = "今天天气很好"
text2 = "阳光明媚"
# ... (获取嵌入)
# 计算相似度
similarity = cosine_similarity(embedding1, embedding2)
print(f"Similarity: {similarity:.4f}")
模型输出
- 输出形状:
(batch_size, sequence_length, 768) - 输出类型:
float32 - 推荐池化: 平均池化 (mean pooling) 或 CLS token
使用场景
- ✅ 语义检索
- ✅ 文本相似度计算
- ✅ 文本聚类
- ✅ 推荐系统
- ✅ 问答系统
与原模型对比
| 指标 | 原模型 | INT8 量化 |
|---|---|---|
| 模型大小 | ~400 MB | 98.7 MB |
| 内存占用 | 较高 | 低 |
| 推理速度 | 基准 | 相似 |
| 精度损失 | - | < 1% |
文件说明
.
├── config.json # 模型配置
├── model_int8.onnx # INT8 量化模型 (98.7 MB)
├── special_tokens_map.json # 特殊 token 映射
├── tokenizer.json # 分词器
├── tokenizer_config.json # 分词器配置
└── vocab.txt # 词汇表
注意事项
- 输入长度: 建议不超过 512 tokens
- 归一化: 输出建议进行 L2 归一化
- 池化: 使用平均池化获取句子级嵌入
- 语言: 主要优化中文,英文支持有限
许可证
Apache 2.0
参考资料
- Downloads last month
- 29
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support