stark
1.0.0

Stark是关于文本和关系知识库的大规模半结构化检索基准,涵盖了产品搜索,学术纸搜索和生物医学查询中的应用。
Stark采用需要特定于上下文的推理的多样,自然和实用的查询,为评估由LLMS驱动的现实世界检索系统设定了新的标准,并为未来的研究带来了重大挑战。
查看我们的网站以获取更多概述!
使用Python> = 3.8和<3.12
pip install stark-qa使用Python> = 3.8和<3.12创建一个conda env,并在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 ) LOAD_SKB的根参数指定存储SKB数据的位置。对于默认值None ,数据将存储在HuggingFace缓存中。
检索任务的问题答案对将自动在data/{dataset}/stark_qa中下载。我们提供了data/{dataset}/split中的官方拆分。
有两种加载知识库数据的方法:
download_processed=True时,所有三个基准的知识库数据将自动下载和加载。download_processed=False处理原始数据。在这种情况下,Stark-Primekg大约需要5分钟才能下载并加载处理后的数据。 Stark-Amazon和Stark-Mag可能需要大约一个小时的时间来处理原始数据。 如果您正在运行评估,则可以安装以下软件包:
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之一。mode :要嵌入的内容,一个query或doc之一(节点文档)。emb_dir :存储嵌入的目录。emb_model :要生成嵌入的LLM名称,例如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键Args:
dataset : amazon , mag或prime的数据集之一。model :要评估的模型BM25 , Colbertv2 , VSS , MultiVSS , LLMReranker之一。--emb_model指定嵌入模型的名称。LLMReranker ,请用参数--llm_model指定LLM名称。 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 (在人类生成的查询数据集上进行评估)。output_dir :存储评估输出的目录。surfix :指定何时存储的嵌入在文件夹doc{surfix}或query{surfix}中,例如,_no_compact, 如果您在工作中使用我们的基准或代码,请考虑引用我们的论文:
@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}
}