
Stark es un punto de referencia de recuperación semiestructurado a gran escala en bases de conocimiento textual y relacional, que cubre aplicaciones en la búsqueda de productos, la búsqueda en papel académico y las consultas de biomedicina.
Con consultas diversas, de sonido natural y práctico que requieren un razonamiento específico del contexto, Stark establece un nuevo estándar para evaluar los sistemas de recuperación del mundo real impulsados por LLM y presenta desafíos significativos para futuras investigaciones.
¡Visite nuestro sitio web para obtener más visión general!
Con python> = 3.8 y <3.12
pip install stark-qa Cree una env env con python> = 3.8 y <3.12 e instale los paquetes requeridos en 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 ) El argumento raíz para load_skb especifica la ubicación para almacenar datos SKB. Sin valor predeterminado None , los datos se almacenarán en Huggingface Cache.
Los pares de respuestas de la pregunta para la tarea de recuperación se descargarán automáticamente en data/{dataset}/stark_qa de forma predeterminada. Proporcionamos división oficial en data/{dataset}/split .
Hay dos formas de cargar los datos de la base de conocimiento:
download_processed=True .download_processed=False . En este caso, Stark-imprimekg toma alrededor de 5 minutos en descargar y cargar los datos procesados. Stark-Amazon y Stark-Mag pueden tarda alrededor de una hora en procesarse desde los datos sin procesar. Si está ejecutando Eval, puede instalar los siguientes paquetes:
pip install llm2vec gritlm bm25 Nuestra evaluación requiere que incruste los documentos de nodo en candidate_emb_dict.pt , que es un diccionario node_id -> torch.Tensor . Los incrustaciones de consultas se generarán automáticamente si no están disponibles. Puede ejecutar el siguiente script de Python para descargar incrustaciones de consultas y incrustaciones de documentos generados por text-embedding-ada-002 . (Les proporcionamos para que pueda correr en nuestro punto de referencia de inmediato).
python emb_download.py --dataset amazon --emb_dir emb/O puede ejecutar el siguiente código para generar la consulta o el documento de incrustaciones por usted mismo. P.ej,
python emb_generate.py --dataset amazon --mode query --emb_dir emb/ --emb_model text-embedding-ada-002dataset : uno de amazon , mag o prime .mode : el contenido de incrustar, uno de query o doc (documentos de nodo).emb_dir : el directorio para almacenar incrustaciones.emb_model : el nombre LLM para generar integridades, como 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 para otros argumentos.Ejecute el script de Python para su evaluación. P.ej,
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_predArgumentos clave:
dataset : el conjunto de datos para evaluar, uno de amazon , mag o prime .model : el modelo a evaluar, uno de BM25 , Colbertv2 , VSS , MultiVSS , LLMReranker .--emb_model .LLMReranker , especifique el nombre LLM con 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 : el directorio para almacenar incrustaciones.split : la división para evaluar, uno de train , val , test , test-0.1 (10% de muestra aleatoria) y human_generated_eval (para ser evaluado en el conjunto de datos de consultas generado por humanos).output_dir : el directorio para almacenar salidas de evaluación.surfix : especifique cuándo los incrustaciones almacenadas están en la carpeta doc{surfix} o query{surfix} , por ejemplo, _no_compact, Considere citar nuestro documento si usa nuestro punto de referencia o código en su trabajo:
@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}
}