Links de modelo/dados | Instalação | Uso | Tabela de classificação | Citando |
Repositório oficial do artigo FollowIR: Avaliando e ensinando modelos de recuperação de informações para seguir instruções. A avaliação oficial pode ser feita instalando a biblioteca mteb
e avaliando seu modelo compatível com MTEB com zero (ou apenas algumas) linhas de alterações de código!
Binário | Descrição |
---|---|
SigaIR-7B | Modelo de parâmetro 7B que documenta a reclassificação de acordo com uma consulta e instruções. É ajustado a partir do Mistral-7B nos conjuntos de dados abaixo |
Siga o trem IR | O conjunto de dados usado para treinar o FollowIR-7B. Consiste em instruções e consultas TREC e documentos sintéticos gerados pelo GPT que foram filtrados. |
FollowIR-train-raw | A versão pré-filtrada do trem definido acima. Isso não foi usado no treinamento do modelo porque alguns dados gerados pelo GPT estão incorretos. |
Você também pode encontrar os dados de teste anotados individuais (Robust04, Core17 e News21), embora o formato seja melhor usado com o código de avaliação do MTEB.
Se desejar reproduzir os experimentos no artigo você pode usar o seguinte código:
git clone https://github.com/orionw/FollowIR.git
cd FollowIR/
conda create -n followir python=3.9 -y
conda activate followir
pip install -r requirements.txt
bash launch_all_jobs.sh
Se o seu modelo for compatível SentenceTransformer
e não exigir tokens especiais para concatenar a consulta e as instruções, você pode simplesmente usar o seguinte comando de uma linha:
mteb -m $MODEL_NAME -t $DATASET
para cada um dos conjuntos de dados em {Robust04InstructionRetrieval, Core17InstructionRetrieval, News21InstructionRetrieval}
Se você tiver um modelo de dois codificadores, mas quiser fazer algo diferente do que simplesmente anexar a instrução à consulta com um espaço, poderá estender DenseRetrievalExactSearch
e verificar as instructions
em kwargs. Veja (veja models/base_sentence_transformers/ como ponto de partida para pequenas modificações e models/e5/ para um exemplo com modificações maiores).
Reclassificadores foram adicionados ao MTEB! Se estiver usando um modelo de reclassificação, você precisará estender a classe DenseRetrievalExactSearch
e definir uma função __init__
e predict
(consulte a seção modelos/reclassificadores para obter uma variedade de exemplos de reclassificação). Sua função de previsão deve receber input_to_rerank
que será uma tupla no formato:
# if there are no instructions, instructions will be a list of Nones
# Instructions will be present for all of the FollowIR datasets
queries , passages , instructions = list ( zip ( * input_to_rerank ))
Sua função predict
deve usá-los e retornar uma lista contendo uma pontuação para cada item da tupla.
Se você achou o código, dados ou modelo útil, fique à vontade para citar:
@misc { weller2024followir ,
title = { FollowIR: Evaluating and Teaching Information Retrieval Models to Follow Instructions } ,
author = { Orion Weller and Benjamin Chang and Sean MacAvaney and Kyle Lo and Arman Cohan and Benjamin Van Durme and Dawn Lawrie and Luca Soldaini } ,
year = { 2024 } ,
eprint = { 2403.15246 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.IR }
}