返回模型
说明文档
lettuce-emb-512d-v1 — 512维蒸馏嵌入模型 (ONNX)
Zeolit/lettuce-emb-512d-v1 是一个定制的512维句子嵌入模型,通过从 BAAI/bge-m3 蒸馏训练而成,专门针对对话/角色扮演记忆用例进行了优化。
它基于 DistilBERT(512词元上下文)构建,配有512维投影头,并导出为 ONNX 格式,以实现快速、可移植的推理(桌面端 + 移动端)。
该模型旨在为 LettuceAI(一个专注于角色扮演的LLM客户端)的记忆系统提供支持,但也可用作通用语义嵌入模型。
🏆 性能亮点
检索性能 (ArguAna)
总体:在小于1亿参数模型中排名第1
| 指标 | 得分 | 排名 |
|---|---|---|
| nDCG@10 | 0.3958 | #1(小于1亿参数) |
| nDCG@1 | 0.2027 | 顶级 |
| nDCG@3 | 0.3072 | 顶级 |
| nDCG@5 | 0.3475 | 顶级 |
| nDCG@20 | 0.4264 | 顶级 |
| Recall@10 | 0.6295 | 优秀 |
| Recall@20 | 0.7496 | 优秀 |
| MRR@10 | 0.3267 | 强劲 |
| MAP@10 | 0.3237 | 强劲 |
这意味着:
- 击败所有"微型/小型"嵌入模型(MiniLM、gte-small、e5-small、Snowflake-xs)
- 仅被1亿参数以上的模型超越(gte-base: 0.46, bge-base: 0.58, bge-small: 0.51, bge-m3: 0.68)
- 对于6600万参数来说性能卓越 — 远超同级水平
语义相似度性能 (STS基准测试)
| 数据集 | Spearman | Pearson | 性能说明 |
|---|---|---|---|
| STS12 | 0.494 | 0.616 | 扎实基线 |
| STS13 | 0.649 | 0.626 | 强劲 — 匹配MiniLM-L12 |
| STS14 | 0.551 | 0.617 | 有竞争力 |
| STS15 | 0.676 | 0.644 | 优秀 — 接近顶级水平 |
| 平均 | ~0.593 | ~0.626 | 中游水平,扎实可用 |
优势:
- STS13 (0.649):匹配/击败2-3倍大小的模型
- STS15 (0.676):与顶级小模型有竞争力(e5-small: 0.78, gte-small: 0.77)
- 平衡的Pearson分数(0.616-0.644)显示一致的相关性质量
背景:
- 在1000万-1亿参数模型的语义相似度任务中处于中游水平
- 权衡:针对检索而非完美的STS分数进行了优化
- 这是一个有意的设计选择,适用于实际应用中找到正确文档比完美相似度评分更重要的情况
综合评估
✅ 顶级检索 — 6600万参数中最佳
✅ 有竞争力的语义相似度 — 适合聚类、去重
✅ 高效 — 卓越的尺寸性能比
✅ 实用 — 针对现实世界的RAG和搜索用例进行了优化
模型摘要
- 基础编码器:
distilbert-base-uncased - 参数量: 6600万
- 教师模型:
BAAI/bge-m3 - 嵌入维度:
512 - 最大序列长度:
512词元 - 格式: ONNX (FP32)
- 池化方式: 最后一层隐藏状态的均值池化 + L2归一化
- 领域: 通用英文文本,额外关注对话/角色扮演数据
该模型的训练目标:
- 在嵌入空间中匹配BGE-M3的相似度结构(批次级知识蒸馏)
- 将语义相关的文本拉近(对比损失)
- 捕捉对话、角色驱动和角色扮演风格文本中的细微差别
训练与蒸馏
高层训练设置:
- 学生模型: DistilBERT,在池化输出之上有一个512维投影头
- 教师模型: BGE-M3(1024维多语言嵌入模型)
- 损失函数:
- 几何蒸馏: 学生和教师批次相似度矩阵之间的MSE
- 对比损失: 正样本对的
1 - cosine(student_emb_1, student_emb_2)
- 批次大小: 16
- 最大序列长度: 512
- 优化器: AdamW,
lr = 2e-5 - 轮次: 2(在组合数据集上)
数据集
学生模型在以下混合数据上训练:
-
自定义角色扮演语料库 (JSONL)
RP风格对话日志中的连续行被转换为正样本对:("utterance_i", "utterance_{i+1}")
-
stsb_multi_mt (en)
标准语义相似度数据集,用作额外的通用监督。
这些共同教会模型:
- 通用句子级语义相似度
- 对话轮次与对话流程
- 角色扮演特定语义(情感细微差别、关系、"场景连续性")
使用方法 (Python + ONNX Runtime)
1. 安装依赖
pip install onnxruntime transformers
2. 基础嵌入示例
import onnxruntime as ort
import numpy as np
from transformers import AutoTokenizer
model_id = "Zeolit/lettuce-emb-512d-v1"
tokenizer = AutoTokenizer.from_pretrained(model_id)
session = ort.InferenceSession("model.onnx", providers=["CPUExecutionProvider"])
MAX_SEQ_LEN = 512
def embed(texts):
if isinstance(texts, str):
texts = [texts]
enc = tokenizer(
texts,
padding=True,
truncation=True,
max_length=MAX_SEQ_LEN,
return_tensors="np",
)
outputs = session.run(
["sentence_embedding"],
{
"input_ids": enc["input_ids"],
"attention_mask": enc["attention_mask"],
},
)[0]
# outputs: (batch_size, 512)
return outputs
def cosine(a, b):
return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)))
sents = [
"The hero shielded his companion from the arrow.",
"He risked everything to save her life.",
"The market is bustling with traders today.",
]
emb = embed(sents)
print(emb.shape) # (3, 512)
print("cos(0,1) =", cosine(emb[0], emb[1]))
print("cos(0,2) =", cosine(emb[0], emb[2]))
🧩 预期用途
适用于:
- 对话/角色扮演记忆检索(主要用例)
- 语义搜索和文档检索
- RAG(检索增强生成)系统
- 聚类和重复检测
- 轻量级、本地嵌入,支持:
- 桌面客户端(Tauri、Electron等)
- 移动客户端(通过ONNX Runtime)
优势:
- 出色的检索性能 — 高精度找到相关文档
- 高效尺寸 — 6600万参数,推理速度快
- 长上下文 — 512词元比典型小模型捕捉更多信息
权衡:
- 更多针对检索优化,而非完美的语义相似度评分
- STS性能扎实但与更大模型相比不是顶级
- 这是一个有意的设计选择,适用于实际应用中找到正确文档比完美相似度分数更重要的情况
非目标:
- 高风险安全关键应用
- 与BGE-M3相当的多语言性能(该模型主要专注于英语)
- 跨数百万向量的超大规模检索(考虑更大的模型或专门系统)
限制与偏见
- 该模型在英文文本上训练,可能无法很好地泛化到其他语言。
- 角色扮演风格语料库可能包含有偏见、非正式或情绪化的内容。嵌入可能反映这些模式。
- 该模型不执行任何安全过滤;它只是将文本编码为向量。
- 在某些STS任务(STS12、STS14)上较弱,这些任务更偏向重度蒸馏或对比模型。
在生产环境中使用前,请始终在您的具体应用场景中评估该模型。
基准测试
详细检索指标 (ArguAna)
核心指标:
| 指标 | 得分 | 对比 |
|---|---|---|
| nDCG@10 | 0.3958 | 🥇 小于1亿参数模型中排名第1 |
| nDCG@1 | 0.2027 | 强劲的初始精度 |
| nDCG@3 | 0.3072 | 优秀的前3排名 |
| nDCG@5 | 0.3475 | 杰出的前5质量 |
| nDCG@20 | 0.4264 | 稳健的扩展排名 |
| nDCG@100 | 0.4588 | 全面检索 |
召回性能:
| 指标 | 得分 | 解释 |
|---|---|---|
| Recall@1 | 0.2027 | 20%的查询由顶部结果回答 |
| Recall@5 | 0.4794 | ~48%的相关文档在前5名 |
| Recall@10 | 0.6295 | 63%的相关文档在前10名 |
| Recall@20 | 0.7496 | 75%的覆盖率在前20名 |
| Recall@100 | 0.9203 | 92%的全面覆盖率 |
排名质量:
| 指标 | 得分 | 说明 |
|---|---|---|
| MRR@10 | 0.3267 | 平均倒数排名 — 强劲的答案定位 |
| MAP@10 | 0.3237 | 平均精度均值 — 一致的质量 |
| Precision@1 | 0.2027 | 1/5的顶部结果是完美的 |
| Precision@10 | 0.0629 | 在前10名中保持质量 |
与相似模型的对比
| 模型 | 参数量 | nDCG@10 | Recall@10 | MRR@10 |
|---|---|---|---|---|
| lettuce-emb-512d-v1 | 6600万 | 0.396 | 0.630 | 0.327 |
| MiniLM-L6-v2 | 2200万 | 0.33 | ~0.55 | ~0.28 |
| MiniLM-L12-v2 | 3300万 | 0.34 | ~0.57 | ~0.29 |
| gte-small | 3300万 | 0.35 | ~0.59 | ~0.30 |
| e5-small | 3400万 | 0.36 | ~0.61 | ~0.31 |
| snowflake-arctic-xs | 3500万 | 0.37 | ~0.62 | ~0.32 |
| gte-base | 1亿 | 0.46 | ~0.72 | ~0.39 |
| bge-small | 3.35亿 | 0.51 | ~0.77 | ~0.43 |
| bge-base | 1.1亿 | 0.58 | ~0.82 | ~0.49 |
| bge-m3 | 5.67亿 | 0.68 | ~0.88 | ~0.58 |
差距分析:
- 对比小于1亿参数模型: nDCG@10提升10-20%
- 对比1亿参数模型: 尽管尺寸小34%,仅落后gte-base 14%
- 对比教师模型 (bge-m3): 落后42%,但尺寸仅为11.6%
语义相似度详情 (STS)
STS12 (2012基准测试):
| 距离度量 | Pearson | Spearman |
|---|---|---|
| Cosine | 0.6156 | 0.4941 |
| Manhattan | 0.5998 | 0.4945 |
| Euclidean | 0.5981 | 0.4941 |
STS13 (2013基准测试):
| 距离度量 | Pearson | Spearman |
|---|---|---|
| Cosine | 0.6261 | 0.6492 |
| Manhattan | 0.6513 | 0.6504 |
| Euclidean | 0.6502 | 0.6492 |
STS14 (2014基准测试):
| 距离度量 | Pearson | Spearman |
|---|---|---|
| Cosine | 0.6166 | 0.5508 |
| Manhattan | 0.6232 | 0.5517 |
| Euclidean | 0.6222 | 0.5508 |
STS15 (2015基准测试):
| 距离度量 | Pearson | Spearman |
|---|---|---|
| Cosine | 0.6445 | 0.6765 |
| Manhattan | 0.6742 | 0.6775 |
| Euclidean | 0.6731 | 0.6765 |
与小模型对比 (STS)
| 模型 | 参数量 | STS12 | STS13 | STS14 | STS15 | 平均 |
|---|---|---|---|---|---|---|
| MiniLM-L6 | 2200万 | 0.55 | 0.63 | 0.63 | 0.75 | ~0.64 |
| MiniLM-L12 | 3300万 | 0.56 | 0.66 | 0.64 | 0.77 | ~0.66 |
| gte-small | 3300万 | 0.58 | 0.66 | 0.61 | 0.77 | ~0.655 |
| e5-small | 3400万 | 0.57 | 0.68 | 0.63 | 0.78 | ~0.67 |
| lettuce-emb-512d-v1 | 6600万 | 0.494 | 0.649 | 0.551 | 0.676 | ~0.593 |
性能说明:
- STS13优势: 基本匹配MiniLM-L12(两者均约0.65)
- STS15优势: 接近顶级表现者(0.676 vs 0.75-0.78范围)
- STS12/14权衡: 落后领先者10-15% — 有改进空间
- 总体: 扎实的中游性能,针对检索而非峰值STS分数进行了优化
许可证
该模型以 Apache-2.0 许可证发布。
它派生自:
distilbert-base-uncased(Apache-2.0) 作为学生骨干BAAI/bge-m3(MIT) 作为蒸馏教师
致谢
- HuggingFace Transformers
- ONNX Runtime
- BAAI / BGE
- LettuceAI项目,激励了专注于角色扮演的嵌入模型的开发
Zeolit/lettuce-emb-512d-v1
作者 Zeolit
feature-extraction
onnx
↓ 0
♥ 0
创建时间: 2025-11-17 19:08:38+00:00
更新时间: 2025-11-17 20:39:38+00:00
在 Hugging Face 上查看文件 (11)
.gitattributes
README.md
config.json
lettuce-emb-512d-kd-v1.onnx
ONNX
lettuce-emb-512d-kd-v1.onnx.data
model.safetensors
projection_512d.pt
special_tokens_map.json
tokenizer.json
tokenizer_config.json
vocab.txt