
Stark é uma referência de recuperação semiestruturada em larga escala sobre bases de conhecimento textual e relacional, abrangendo aplicativos em pesquisa de produtos, pesquisa em papel acadêmico e consultas de biomedicina.
Apresentando consultas diversas, com som natural e prático que exigem raciocínio específico do contexto, Stark define um novo padrão para avaliar os sistemas de recuperação do mundo real impulsionados pelo LLMS e apresenta desafios significativos para pesquisas futuras.
Confira nosso site para obter mais Visão geral!
Com python> = 3,8 e <3,12
pip install stark-qa Crie um CONDA ENV com Python> = 3.8 e <3,12 e instale os pacotes necessários no 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 ) O argumento raiz para load_skb especifica o local para armazenar dados SKB. Com o valor padrão None , os dados serão armazenados no cache Huggingface.
Os pares de respostas das perguntas para a tarefa de recuperação serão baixados automaticamente em data/{dataset}/stark_qa por padrão. Fornecemos divididos oficiais em data/{dataset}/split .
Existem duas maneiras de carregar os dados da base de conhecimento:
download_processed=True .download_processed=False . Nesse caso, o Stark-Primekg leva cerca de 5 minutos para baixar e carregar os dados processados. Stark-Amazon e Stark-Mag podem levar cerca de uma hora para processar a partir dos dados brutos. Se você estiver executando avaliação, poderá instalar os seguintes pacotes:
pip install llm2vec gritlm bm25 Nossa avaliação requer incorporar os documentos do nó no candidate_emb_dict.pt , que é um dicionário node_id -> torch.Tensor . As incorporações de consulta serão geradas automaticamente se não estiverem disponíveis. Você pode executar o seguinte o script Python para baixar incorporação de consultas e incorporação de documentos gerada pelo text-embedding-ada-002 . (Nós os fornecemos para que você possa correr em nossa referência imediatamente.)
python emb_download.py --dataset amazon --emb_dir emb/Ou você pode executar o código a seguir para gerar as incorporações de consulta ou documento sozinho. Por exemplo,
python emb_generate.py --dataset amazon --mode query --emb_dir emb/ --emb_model text-embedding-ada-002dataset : um da amazon , mag ou prime .mode : o conteúdo para incorporar, um dos documentos query ou doc (documentos do nó).emb_dir : O diretório para armazenar incorporações.emb_model : o nome LLM para gerar incorporações, como text-embedding-ada-002 texto, text-embedding-3-large , voyage-large-2-instruct , GritLM/GritLM-7B , McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntpemb_generate.py para outros argumentos.Execute o script Python para avaliação. Por exemplo,
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_predPrincipais args:
dataset : o conjunto de dados a ser avaliado, um da amazon , mag ou prime .model : O modelo a ser avaliado, um dos BM25 , Colbertv2 , VSS , MultiVSS , LLMReranker .--emb_model .LLMReranker , especifique o nome LLM com argumento --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 : O diretório para armazenar incorporações.split : a divisão para avaliar, um de train , val , test , test-0.1 (amostra aleatória 10%) e human_generated_eval (a serem avaliados no conjunto de dados de consulta gerado por humanos).output_dir : o diretório para armazenar saídas de avaliação.surfix : Especifique quando os incorporados armazenados estão na pasta doc{surfix} ou query{surfix} , por exemplo, _no_compact, Por favor, considere citar nosso artigo se você usar nossa referência ou código em seu trabalho:
@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}
}