
Stark는 텍스트 및 관계형 지식 기반에 대한 대규모 반 구조적 검색 벤치 마크로 제품 검색, 학술 논문 검색 및 생체 의료 문의 응용 프로그램을 다루고 있습니다.
문맥 별 추론이 필요한 다양하고 자연스러운 사운드 및 실용적인 쿼리를 특징으로하는 Stark는 LLM에 의해 주도되는 실제 검색 시스템을 평가하기위한 새로운 표준을 설정하고 향후 연구에 중요한 과제를 제시합니다.
더 많은 개요는 웹 사이트를 확인하십시오!
Python> = 3.8 및 <3.12
pip install stark-qa Python> = 3.8 및 <3.12로 콘다 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는 원시 데이터에서 처리하는 데 약 1 시간이 걸릴 수 있습니다. 평가를 실행중인 경우 다음 패키지를 설치할 수 있습니다.
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 : text-embedding-ada-002 , text-embedding-3-large , voyage-large-2-instruct , gritlm/gritlm- 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 사용하는 경우 argument --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} , eG, _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}
}