Drama 1b
模型简介
模型特点
模型能力
使用案例
🚀 DRAMA-1B:从大语言模型到小型密集检索器的多样化增强
DRAMA-1B 是一个基于剪枝大语言模型骨干构建的密集检索模型。它通过对大语言模型进行剪枝得到,并针对高效且具有泛化能力的多语言文本检索进行了微调。 通过利用大语言模型进行高质量的数据增强,尽管 DRAMA-1B 模型规模紧凑,但它在英语和多语言检索任务中均取得了出色的性能。
drama-1b
的默认嵌入维度为 2048。由于采用了套娃表示学习(Matryoshka Representation Learning),其维度可以灵活截断为 768 或 256 等维度。
更多详细信息请查看我们的 论文。
🚀 快速开始
模型信息
属性 | 详情 |
---|---|
模型类型 | 句子相似度模型 |
支持库 | Transformers |
标签 | 句子转换器 |
支持语言 | 阿拉伯语、孟加拉语、中文、英语、芬兰语、法语、德语、印地语、印尼语、意大利语、日语、韩语、波斯语、葡萄牙语、俄语、西班牙语、斯瓦希里语、泰卢固语、泰语、约鲁巴语 |
许可证 | CC BY-NC 4.0 |
✨ 主要特性
- 高效多语言检索:基于剪枝大语言模型骨干,经过微调后可实现高效且具有泛化能力的多语言文本检索。
- 数据增强:利用大语言模型进行高质量的数据增强,在英语和多语言检索任务中表现出色。
- 灵活维度:采用套娃表示学习,嵌入维度可灵活截断。
💻 使用示例
基础用法
以下是使用 drama-base
对 MIRACL 数据集中的查询和文档示例进行编码的示例,分别展示了使用 Transformers 和 Sentence Transformers 的方法:
Transformers
import torch
from transformers import AutoTokenizer, AutoModel
queries = [
'What percentage of the Earth\'s atmosphere is oxygen?',
'意大利首都是哪里?',
]
documents = [
"The amount of oxygen in the atmosphere has fluctuated over the last 600 million years, reaching a peak of 35% during the Carboniferous period, significantly higher than today's 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())
# Expected output: [[0.5062, 0.1475], [0.1837, 0.6331]]
⚠️ 重要提示
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())
# Expected output: [[0.6579, 0.3296], [0.3388, 0.7547]]
Sentence Transformers
from sentence_transformers import SentenceTransformer
queries = [
'What percentage of the Earth\'s atmosphere is oxygen?',
'意大利首都是哪里?',
]
documents = [
"The amount of oxygen in the atmosphere has fluctuated over the last 600 million years, reaching a peak of 35% during the Carboniferous period, significantly higher than today's 21%.",
"羅馬是欧洲国家意大利首都和罗马首都广域市的首府及意大利全国的政治、经济、文化和交通中心,位于意大利半島中部的台伯河下游平原地,建城初期在七座小山丘上,故又名“七丘之城”。按城市范围内的人口计算,罗马是意大利人口最多的城市,也是欧盟人口第三多的城市。",
]
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())
# Expected output: [[0.5062, 0.1475], [0.1837, 0.6331]]
⚠️ 重要提示
trust_remote_code
将使用我们自定义的drama_modeling.py
,该文件使用双向注意力而非单向注意力。- 对于查询,你必须使用
prompt_name="query"
来选择 名为 "query" 的提示,或者使用prompt="Query: "
手动指定提示字符串。
DRAMA 模型使用套娃表示学习(MRL)进行训练,以支持灵活的维度。查询和文档都可以编码为更小的维度,例如 256,示例如下:
from sentence_transformers import SentenceTransformer
queries = [
'What percentage of the Earth\'s atmosphere is oxygen?',
'意大利首都是哪里?',
]
documents = [
"The amount of oxygen in the atmosphere has fluctuated over the last 600 million years, reaching a peak of 35% during the Carboniferous period, significantly higher than today's 21%.",
"羅馬是欧洲国家意大利首都和罗马首都广域市的首府及意大利全国的政治、经济、文化和交通中心,位于意大利半島中部的台伯河下游平原地,建城初期在七座小山丘上,故又名“七丘之城”。按城市范围内的人口计算,罗马是意大利人口最多的城市,也是欧盟人口第三多的城市。",
]
model = SentenceTransformer("facebook/drama-1b", truncate_dim=256, 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())
# Expected output: [[0.6579, 0.3296], [0.3388, 0.7547]]
📚 详细文档
评估
该模型已在多个检索基准上进行了评估,包括 BEIR、MIRACL、MLDR 以及 MTEB 中的多个多语言检索任务。它在英语和多语言检索任务中均表现出色。
本页面发布的 drama-1b
对应于具有 10 亿非嵌入参数的 DRAMA-1B 模型。
支持语言
DRAMA-1B 基于 Llama3.2-1B 初始化(该模型最初从 Llama3.1-8B 剪枝而来)。在检索器训练期间,训练数据涵盖了以下 20 种语言(按字母顺序排列):
阿拉伯语、孟加拉语、中文、英语、芬兰语、法语、德语、印地语、印尼语、意大利语、日语、韩语、波斯语、葡萄牙语、俄语、西班牙语、斯瓦希里语、泰卢固语、泰语、约鲁巴语
对于其他语言,模型性能可能会下降。
📄 许可证
本模型采用 CC BY-NC 4.0 许可证。
📚 引用
如果您认为我们的论文或模型有帮助,请考虑按以下方式引用:
@article{drama,
title={{Drama}: Diverse Augmentation from Large Language Models To Smaller Dense Retrievers},
author={Ma, Xueguang and Lin, Victoria Xi and Oguz, Barlas and Lin, Jimmy and Yih, Wen-tau and Chen, Xilun},
journal={arXiv:2502.18460},
year={2025}
}







