🚀 doc2query/all-t5-base-v1
このモデルは、T5に基づくdoc2queryモデル(docT5queryとも呼ばれます)です。
以下の用途に使用できます。
- ドキュメント拡張:段落に対して20 - 40個のクエリを生成し、段落と生成されたクエリをElasticsearch、OpenSearch、またはLuceneなどの標準的なBM25インデックスにインデックス化します。生成されたクエリには同義語が含まれているため、単語検索の語彙ギャップを埋めるのに役立ちます。さらに、重要な単語には高い重みを与え、段落内であまり出現しない単語でも重み付けが行われます。BEIR論文では、BM25+docT5queryが強力な検索エンジンであることを示しています。BEIRリポジトリには、PyseriniでdocT5queryを使用する例があります。
- ドメイン固有のトレーニングデータ生成:埋め込みモデルを学習するためのトレーニングデータを生成するのに使用できます。SBERT.netには、ラベル付けされていないテキストのコレクションに対して(クエリ、テキスト)のペアを生成するためにこのモデルを使用する例があります。これらのペアは、強力な密埋め込みモデルをトレーニングするために使用できます。
🚀 クイックスタート
💻 使用例
基本的な使用法
from transformers import T5Tokenizer, T5ForConditionalGeneration
model_name = 'doc2query/all-t5-base-v1'
tokenizer = T5Tokenizer.from_pretrained(model_name)
model = T5ForConditionalGeneration.from_pretrained(model_name)
text = "Python is an interpreted, high-level and general-purpose programming language. Python's design philosophy emphasizes code readability with its notable use of significant whitespace. Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects."
input_ids = tokenizer.encode(text, max_length=384, truncation=True, return_tensors='pt')
outputs = model.generate(
input_ids=input_ids,
max_length=64,
do_sample=True,
top_p=0.95,
num_return_sequences=5)
print("Text:")
print(text)
print("\nGenerated Queries:")
for i in range(len(outputs)):
query = tokenizer.decode(outputs[i], skip_special_tokens=True)
print(f'{i + 1}: {query}')
⚠️ 重要提示
model.generate()
は非決定的です。実行するたびに異なるクエリを生成します。
🔧 技術詳細
トレーニング
このモデルは、google/t5-v1_1-baseを57万ステップのトレーニングで微調整しました。トレーニングスクリプトについては、このリポジトリの train_script.py
を参照してください。
入力テキストは384ワードピースに切り捨てられ、出力テキストは最大64ワードピースまで生成されます。
このモデルは、多数のデータセットのコレクションでトレーニングされました。正確なデータセット名と重みについては、このリポジトリの data_config.json
を参照してください。ほとんどのデータセットは https://huggingface.co/sentence-transformers で入手できます。
データセットには、以下のものが含まれます。
- Reddit の(タイトル、本文)ペア
- StackExchange と Yahoo Answers! の(タイトル、本文)ペアおよび(タイトル、回答)ペア
- Amazonレビューの(タイトル、レビュー)ペア
- MS MARCO、NQ、およびGooAQ の(クエリ、段落)ペア
- Quora と WikiAnswers の(質問、重複質問)ペア
- S2ORC の(タイトル、概要)ペア
プレフィックス
このモデルはプレフィックスなしでトレーニングされています。doc2query/all-with_prefix-t5-base-v1 とは異なり、どのようなタイプの変換(回答から質問、レビューからタイトルなど)を行うかを指定することができません。これにより、出力値が混在する可能性があります。
📄 ライセンス
このモデルは、Apache-2.0ライセンスの下で提供されています。