
Stark ist ein groß angelegter halbstrukturierter Abruf-Benchmark zu textuellen und relationalen Wissensbasis, die Anwendungen bei Produktsuche, akademischer Papiersuche und Biomedizinanfragen abdecken.
Mit vielfältigen, natürlichen und praktischen Abfragen, die kontextspezifisches Denken erfordern, setzt Stark einen neuen Standard für die Beurteilung von realen Abrufsystemen, die von LLMs angetrieben werden, und stellt erhebliche Herausforderungen für die zukünftige Forschung vor.
Weitere Übersicht finden Sie auf unserer Website!
Mit Python> = 3,8 und <3,12
pip install stark-qa Erstellen Sie eine Conda Env mit Python> = 3,8 und <3.12 und installieren Sie die erforderlichen Pakete in requirements.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 ) Das Root -Argument für Load_SKB gibt den Speicherort zur Speicherung von SKB -Daten an. Mit Standardwert None werden die Daten im Huggingface -Cache gespeichert.
Frage -Antwortpaare für die Abrufaufgabe werden standardmäßig automatisch in data/{dataset}/stark_qa heruntergeladen. Wir haben offizielle Split in data/{dataset}/split bereitgestellt.
Es gibt zwei Möglichkeiten, die Wissensbasisdaten zu laden:
download_processed=True eingestellt wird.download_processed=False einstellen. In diesem Fall dauert Stark-Primekg ungefähr 5 Minuten, um die verarbeiteten Daten herunterzuladen und zu laden. Stark-Amazon und Stark-MAG können etwa eine Stunde dauern, um die Rohdaten zu verarbeiten. Wenn Sie Eval ausführen, können Sie die folgenden Pakete installieren:
pip install llm2vec gritlm bm25 Unsere Bewertung erfordert, dass die Knotendokumente in candidate_emb_dict.pt eingebettet sind, ein Wörterbuch node_id -> torch.Tensor . Abfragemedings werden automatisch generiert, wenn sie nicht verfügbar sind. Sie können entweder das folgende Python-Skript ausführen, um Abfragen auszubetten und Dokumenteinbettungen zu dokumentieren, die durch text-embedding-ada-002 generiert werden. (Wir stellen sie zur Verfügung, damit Sie sofort auf unserem Benchmark laufen können.)
python emb_download.py --dataset amazon --emb_dir emb/Oder Sie können den folgenden Code ausführen, um die Abfrage- oder Dokument -Einbettungen selbst zu generieren. Z.B,
python emb_generate.py --dataset amazon --mode query --emb_dir emb/ --emb_model text-embedding-ada-002dataset : einer von amazon , mag oder prime .mode : Der Inhalt zum Einbetten, eine von query oder doc (Knotendokumente).emb_dir : Das Verzeichnis zum Speichern von Einbettungen.emb_model : Der LLM-Name, um Einbettungen wie 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 für andere Argumente.Führen Sie das Python -Skript zur Bewertung aus. Z.B,
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_predSchlüsselgüter:
dataset : Der Datensatz, der auf amazon , mag oder prime bewertet werden soll.model : Das zu bewertende Modell, eines von BM25 , Colbertv2 , VSS , MultiVSS , LLMReranker .--emb_model an.LLMReranker verwenden, geben Sie bitte den LLM -Namen mit Argument --llm_model an. 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 : Das Verzeichnis zum Speichern von Einbettungen.split : Der aufgeteilte Split auf, einer von train , val , test , test-0.1 (10% Zufallsstichprobe) und human_generated_eval (zu bewertet auf dem menschlichen Datensatz für Abfragen bewertet werden).output_dir : Das Verzeichnis zum Speichern von Ausgaben.surfix : Geben Sie an, wann die gespeicherten Einbetten in Ordner doc{surfix} oder query{surfix} , z. Bitte erwägen Sie, unser Papier zu zitieren, wenn Sie unseren Benchmark oder Code in Ihrer Arbeit verwenden:
@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}
}