
Stark-это крупномасштабный полуструктурированный эталон поиска по текстовым и реляционным базам знаний, охватывающий приложения для поиска продуктов, поиска в академических документах и запросов на биомедицины.
Показывая разнообразные, естественные и практические запросы, которые требуют контекстных рассуждений, Stark устанавливает новый стандарт для оценки реальных систем поиска, основанных на LLMS, и представляет значительные проблемы для будущих исследований.
Проверьте наш сайт для получения дополнительной информации!
С Python> = 3,8 и <3.12
pip install stark-qa Создайте Conda Env с Python> = 3,8 и <3.12 и установите необходимые пакеты в 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 , данные будут храниться в кэше HurgingFace.
Пары ответов на вопрос для задачи поиска будут автоматически загружены в data/{dataset}/stark_qa по умолчанию. Мы предоставили официальное разделение в data/{dataset}/split .
Есть два способа загрузить данные базы знаний:
download_processed=True .download_processed=False . В этом случае Stark-Primekg занимает около 5 минут, чтобы загрузить и загрузить обработанные данные. Stark-Amazon и Stark-Mag могут потребоваться около часа, чтобы обработать необработанные данные. Если вы запускаете 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 .mode : Содержание в Enced, один из query или doc (узлы документов).emb_dir : каталог для хранения вставки.emb_model : название LLM для генерации встроений, таких как text-embedding-ada-002 voyage-large-2-instruct text-embedding-3-large 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 .model : модель, которая должна быть оценена, одна из BM25 , Colbertv2 , VSS , MultiVSS , LLMReranker .--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 (для оценки в наборе данных запросов, генерируемого человеком).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}
}