🚀 DRAMA-large (0.3B): 大規模言語モデルから小規模な密ベクトル検索器への多様な拡張
DRAMA-large (0.3B) は、大規模言語モデルの骨格を枝刈りして構築された密ベクトル検索モデルです。大規模言語モデルを枝刈りし、効率的で汎用性のある多言語テキスト検索に微調整されています。
大規模言語モデルを活用した高品質なデータ拡張により、DRAMA-large は0.3Bの非埋め込みパラメータというコンパクトなサイズでありながら、英語と多言語の検索タスクの両方で高い性能を達成しています。
drama-large
のデフォルトの埋め込みサイズは1024です。マトリョーシカ表現学習を採用しているため、次元数を512や256などに柔軟に切り捨てることができます。
詳細については、論文をご確認ください。
🚀 クイックスタート
💻 使用例
基本的な使用法
以下は、drama-base
を使用して、TransformersまたはSentence Transformersを用いてMIRACLデータセットからクエリとドキュメントの例をエンコードする例です。
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-large"
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
が使用され、以下の2点が適用されます。
- 一方向の注意機構ではなく、双方向の注意機構を使用します。
- クエリテキストには
"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
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-large", 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
を使用すると、一方向の注意機構ではなく双方向の注意機構を使用するカスタムの 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-large", 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())
📚 ドキュメント
評価
このモデルは、BEIR、MIRACL、MLDR を含む複数の検索ベンチマーク、および MTEB のいくつかの多言語検索タスクで評価されています。
英語と多言語の検索タスクの両方で高い性能を示しています。
このページで公開されている drama-large
は、265Mの非埋め込みパラメータを持つDRAMA-0.3Bの行に対応しています。
サポートされる言語
DRAMA-large は Llama3.2-1B (元は Llama3.1-8B から枝刈りされたもの)から初期化されています。枝刈りと検索器のトレーニング中、トレーニングデータには以下の20の言語(アルファベット順)が含まれていました。
アラビア語、ベンガル語、中国語、英語、フィンランド語、フランス語、ドイツ語、ヒンディー語、インドネシア語、イタリア語、日本語、韓国語、ペルシャ語、ポルトガル語、ロシア語、スペイン語、スワヒリ語、テルグ語、タイ語、ヨルバ語
他の言語では性能が低下する可能性があります。
引用
当社の論文やモデルが役立つと思われる場合は、以下のように引用していただけると幸いです。
@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}
}
📄 ライセンス
このモデルは、CC BY-NC 4.0ライセンスの下で提供されています。