许可协议: cc-by-nc-4.0
支持语言:
- 阿拉伯语
- 孟加拉语
- 中文
- 英语
- 芬兰语
- 法语
- 德语
- 印地语
- 印尼语
- 意大利语
- 日语
- 韩语
- 波斯语
- 葡萄牙语
- 俄语
- 西班牙语
- 斯瓦希里语
- 泰卢固语
- 泰语
- 约鲁巴语
任务类型: 句子相似度
库名称: transformers
标签:
- 句子转换器
DRAMA-1B:基于大语言模型增强的小型稠密检索模型
DRAMA-1B是基于剪枝后大语言模型架构构建的稠密检索模型。该模型通过对大语言模型进行剪枝,并针对高效且可泛化的多语言文本检索任务进行微调。通过利用大语言模型进行高质量数据增强,DRAMA-1B在保持紧凑体积的同时,在英语及多语言检索任务中均展现出强劲性能。
drama-1b
的默认嵌入维度为2048。由于采用套娃表示学习技术(Matryoshka Representation Learning),其维度可灵活截断至768或256等不同尺寸。
详情请参阅我们的论文。
使用示例
以下展示使用drama-base
编码MIRACL数据集中的查询和文档的示例,支持Transformers和Sentence Transformers两种方式:
Transformers方式
import torch
from transformers import AutoTokenizer, AutoModel
queries = [
'地球大气中氧气占比多少?',
'意大利首都是哪里?',
]
documents = [
"过去6亿年间大气含氧量持续波动,在石炭纪达到35%的峰值,远高于现今21%的水平。",
"罗马是欧洲国家意大利的首都,也是罗马广域市的行政中心,作为意大利政治、经济、文化和交通枢纽,坐落于台伯河下游平原。因建城之初环绕七座山丘,故别称'七丘之城'。按城区人口统计,罗马不仅是意大利人口最多的城市,也是欧盟第三大人口城市。",
]
model_name = "facebook/drama-1b"
device = "cuda" if torch.cuda.is_available() else "cpu"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name, trust_remote_code=True).to(device)
query_embs = model.encode_queries(tokenizer, queries)
doc_embs = model.encode_documents(tokenizer, documents)
scores = query_embs @ doc_embs.T
print(scores.tolist())
设置trust_remote_code
将启用我们定制的drama_modeling.py
,包含两个特性:
- 采用双向注意力机制而非单向注意力
- 自动为查询文本添加
"Query: "
前缀(文档不添加前缀)
DRAMA模型通过套娃表示学习(MRL)支持动态维度调整。查询和文档均可编码为更小维度(如256):
query_embs = model.encode_queries(tokenizer, queries, dim=256)
doc_embs = model.encode_documents(tokenizer, documents, dim=256)
scores = query_embs @ doc_embs.T
print(scores.tolist())
Sentence Transformers方式
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("facebook/drama-1b", trust_remote_code=True)
query_embs = model.encode(queries, prompt_name="query")
doc_embs = model.encode(documents)
scores = model.similarity(query_embs, doc_embs)
print(scores.tolist())
trust_remote_code
将启用采用双向注意力的定制模型
- 查询编码需指定
prompt_name="query"
或手动设置prompt="Query: "
动态维度编码示例(以256维为例):
model = SentenceTransformer("facebook/drama-1b", truncate_dim=256, trust_remote_code=True)
评估表现
模型已在BEIR、MIRACL、MLDR及MTEB的多语言检索任务中进行全面评估,在英语及多语言检索场景均表现优异。
本页发布的drama-1b
对应评估图中参数量为1B的非嵌入层版本。
支持语言
DRAMA-1B基于Llama3.2-1B(其本身从Llama3.1-8B剪枝而来)初始化。训练数据覆盖以下20种语言(按字母排序):
阿拉伯语、孟加拉语、中文、英语、芬兰语、法语、德语、印地语、印尼语、意大利语、日语、韩语、波斯语、葡萄牙语、俄语、西班牙语、斯瓦希里语、泰卢固语、泰语、约鲁巴语
其他语言性能可能有所下降。
引用
如果我们的研究或模型对您有帮助,请引用:
@article{drama,
title={{Drama}: 基于大语言模型增强的小型稠密检索模型},
author={马雪光、林维多利亚、Oğuz, Barlas and 林志明 and 叶文涛 and 陈希伦},
journal={arXiv:2502.18460},
year={2025}
}