Modell-/Datenverknüpfungen | Installation | Verwendung | Bestenliste | Zitieren |
Offizielles Repository für den Artikel FollowIR: Evaluating and Teaching Information Retrieval Models to Follow Instructions. Die offizielle Evaluierung kann durch die Installation der mteb
-Bibliothek und die Evaluierung Ihres MTEB-kompatiblen Modells ohne (oder nur wenige) Zeilen Codeänderungen erfolgen!
Binär | Beschreibung |
---|---|
Folgen Sie IR-7B | 7B-Parametermodell, das anhand einer Abfrage und Anweisungen eine Neubewertung des Dokuments durchführt. Die Feinabstimmung erfolgte anhand der unten aufgeführten Datensätze von Mistral-7B |
Folgen Sie dem IR-Zug | Der Datensatz, der zum Trainieren von FollowIR-7B verwendet wird. Es besteht aus TREC-Anweisungen und -Abfragen sowie GPT-generierten synthetischen Dokumenten, die gefiltert wurden. |
Folgen Sie IR-train-raw | Die vorgefilterte Version des Zugsets oben. Dies wurde im Modelltraining nicht verwendet, da einige von GPT generierte Daten falsch sind. |
Sie können auch die einzelnen kommentierten Testdaten (Robust04, Core17 und News21) finden, obwohl das Format am besten mit dem Evaluierungscode von MTEB verwendet wird.
Wenn Sie die Experimente in der Arbeit reproduzieren möchten, können Sie den folgenden Code verwenden:
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
Wenn Ihr Modell SentenceTransformer
kompatibel ist und keine speziellen Token zum Verketten der Abfrage und Anweisungen erfordert, können Sie einfach den folgenden einzeiligen Befehl verwenden:
mteb -m $MODEL_NAME -t $DATASET
für jeden der Datensätze in {Robust04InstructionRetrieval, Core17InstructionRetrieval, News21InstructionRetrieval}
Wenn Sie über ein Bi-Encoder-Modell verfügen, aber etwas anderes tun möchten, als die Anweisung einfach mit einem Leerzeichen an die Abfrage anzuhängen, können Sie DenseRetrievalExactSearch
erweitern und in kwargs nach instructions
suchen. Siehe (siehe models/base_sentence_transformers/ als Ausgangspunkt für kleine Modifikationen und models/e5/ für ein Beispiel mit größeren Modifikationen).
Reranker wurden jetzt zu MTEB hinzugefügt! Wenn Sie ein Reranker-Modell verwenden, müssen Sie die DenseRetrievalExactSearch
-Klasse erweitern und eine __init__
und predict
definieren (siehe Abschnitt „Modelle/Reranker“ für eine Vielzahl von Reranker-Beispielen). Ihre Vorhersagefunktion sollte input_to_rerank
aufnehmen, was ein Tupel der Form ist:
# 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 ))
Ihre predict
sollte diese verwenden und eine Liste zurückgeben, die eine Punktzahl für jedes Tupelelement enthält.
Wenn Sie den Code, die Daten oder das Modell nützlich fanden, können Sie Folgendes zitieren:
@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 }
}