
Starkは、製品検索、アカデミックペーパー検索、および生物医学の問い合わせのアプリケーションをカバーする、テキストおよびリレーショナルの知識ベースに関する大規模な半構造化検索ベンチマークです。
コンテキスト固有の推論を必要とする多様で自然なサウンドの実用的なクエリを特徴とするStarkは、LLMSによって駆動される実世界の検索システムを評価するための新しい基準を設定し、将来の研究に大きな課題を提示します。
詳細については、当社のウェブサイトをご覧ください!
Python> = 3.8および<3.12
pip install stark-qaPython> = 3.8および<3.12でConda envを作成し、 requirements.txtに必要なパッケージをインストールします。txt。
conda create -n stark python=3.11
conda activate stark
pip install -r requirements.txt from stark_qa import load_qa , load_skb
dataset_name = 'amazon'
# Load the retrieval dataset
qa_dataset = load_qa ( dataset_name )
idx_split = qa_dataset . get_idx_split ()
# Load the semi-structured knowledge base
skb = load_skb ( dataset_name , download_processed = True , root = None ) LOAD_SKBのルート引数は、SKBデータを保存する場所を指定します。デフォルト値Noneで、データはHuggingfaceキャッシュに保存されます。
質問回答ペア検索タスクのペアは、デフォルトでdata/{dataset}/stark_qaで自動的にダウンロードされます。 data/{dataset}/splitで公式の分割を提供しました。
ナレッジベースデータをロードするには、次の2つの方法があります。
download_processed=True設定時に自動的にダウンロードおよびロードされます。download_processed=Falseを設定して、ゼロから生データを処理できます。この場合、Stark-Primekgは処理されたデータをダウンロードしてロードするのに約5分かかります。 Stark-AmazonとStark-Magは、生データからの処理に約1時間かかる場合があります。 evalを実行している場合は、次のパッケージをインストールできます。
pip install llm2vec gritlm bm25私たちの評価では、ノードドキュメントをcandidate_emb_dict.pt node_id -> torch.Tensorです。クエリ埋め込みは、利用できない場合は自動的に生成されます。次のPythonスクリプトを実行して、クエリの埋め込みをダウンロードし、 text-embedding-ada-002によって生成された埋め込みをドキュメントすることができます。 (私たちはそれらを提供して、あなたが私たちのベンチマークですぐに実行できるようにします。)
python emb_download.py --dataset amazon --emb_dir emb/または、次のコードを実行してクエリまたはドキュメントの埋め込みを自分で生成することもできます。例えば、
python emb_generate.py --dataset amazon --mode query --emb_dir emb/ --emb_model text-embedding-ada-002dataset : amazon 、 mag 、またはprimeの1つ。mode :埋め込まれるコンテンツ、 queryまたはdoc (ノードドキュメント)の1つ。emb_dir :埋め込みを保存するディレクトリ。emb_model : text-embedding-ada-002 、 text-embedding-3-large 、、 voyage-large-2-instruct 、 GritLM/GritLM-7B 、 McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntpemb_generate.py参照してください。評価のためにPythonスクリプトを実行します。例えば、
python eval.py --dataset amazon --model VSS --emb_dir emb/ --output_dir output/ --emb_model text-embedding-ada-002 --split test --save_pred python eval.py --dataset amazon --model VSS --emb_dir emb/ --output_dir output/ --emb_model GritLM/GritLM-7B --split test-0.1 --save_pred python eval.py --dataset amazon --model LLMReranker --emb_dir emb/ --output_dir output/ --emb_model text-embedding-ada-002 --split human_generated_eval --llm_model gpt-4-1106-preview --save_predキーアッグ:
dataset : amazon 、 mag 、またはprimeの1つを評価するデータセット。model :評価されるモデル、 BM25 、 Colbertv2 、 VSS 、 MultiVSS 、 LLMRerankerの1つ。--emb_modelで指定してください。LLMRerankerを使用している場合は、引数を持つLLM名を指定してください--llm_model 。 export ANTHROPIC_API_KEY=YOUR_API_KEY
export OPENAI_API_KEY=YOUR_API_KEY
export OPENAI_ORG=YOUR_ORGANIZATION
export VOYAGE_API_KEY=YOUR_API_KEY
emb_dir :埋め込みを保存するディレクトリ。split :オンにするための分割、 train 、 val 、テスト、 test 、 test-0.1 (10%ランダムサンプル)、およびhuman_generated_eval (Human生成されたクエリデータセットで評価される)。output_dir :評価出力を保存するディレクトリ。surfix :保存された埋め込みがフォルダーdoc{surfix}またはquery{surfix}にあるときを指定します。 作業でベンチマークまたはコードを使用する場合は、私たちの論文を引用することを検討してください。
@inproceedings{wu24stark,
title = {STaRK: Benchmarking LLM Retrieval on Textual and Relational Knowledge Bases},
author = {
Shirley Wu and Shiyu Zhao and
Michihiro Yasunaga and Kexin Huang and
Kaidi Cao and Qian Huang and
Vassilis N. Ioannidis and Karthik Subbian and
James Zou and Jure Leskovec
},
booktitle = {NeurIPS Datasets and Benchmarks Track},
year = {2024}
}