روابط النموذج/البيانات | التثبيت | الاستخدام | المتصدرين | نقلا عن |
المستودع الرسمي للورقة FollowIR: تقييم وتعليم نماذج استرجاع المعلومات لاتباع التعليمات. يمكن إجراء التقييم الرسمي عن طريق تثبيت مكتبة mteb
وتقييم نموذجك المتوافق مع MTEB مع صفر (أو بضعة أسطر فقط) من تغييرات التعليمات البرمجية!
ثنائي | وصف |
---|---|
اتبعIR-7B | نموذج معلمة 7B يقوم بإعادة ترتيب المستندات بناءً على استعلام وتعليمات. تم ضبطه من Mistral-7B في مجموعات البيانات أدناه |
اتبع قطار IR | مجموعة البيانات المستخدمة لتدريب FollowIR-7B. وهو يتألف من تعليمات واستعلامات TREC، ومستندات تركيبية تم إنشاؤها بواسطة GPT والتي تمت تصفيتها. |
اتبع IR-train-raw | النسخة التي تمت تصفيتها مسبقًا من القطار المحدد أعلاه. لم يتم استخدام هذا في التدريب النموذجي نظرًا لأن بعض البيانات التي تم إنشاؤها في GPT غير صحيحة. |
يمكنك أيضًا العثور على بيانات الاختبار المشروحة الفردية (Robust04، وCore17، وNews21) على الرغم من أنه من الأفضل استخدام التنسيق مع رمز تقييم MTEB.
إذا كنت ترغب في إعادة إنتاج التجارب الموجودة في الورقة، يمكنك استخدام الكود التالي:
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
إذا كان النموذج الخاص بك متوافقًا مع SentenceTransformer
ولا يتطلب أي رموز مميزة لتسلسل الاستعلام والتعليمات، فيمكنك ببساطة استخدام الأمر التالي المكون من سطر واحد:
mteb -m $MODEL_NAME -t $DATASET
لكل مجموعة من مجموعات البيانات في {Robust04InstructionRetrieval, Core17InstructionRetrieval, News21InstructionRetrieval}
إذا كان لديك نموذج تشفير ثنائي ولكنك تريد القيام بشيء مختلف عن مجرد إلحاق التعليمات بالاستعلام بمسافة، فيمكنك توسيع DenseRetrievalExactSearch
والتحقق من instructions
باللغة kwargs. انظر (انظرmodels/base_sentence_transformers/ كنقطة انطلاق للتعديلات الصغيرة والنماذج/e5/ للحصول على مثال مع تعديلات أكبر).
تمت الآن إضافة أدوات إعادة الترتيب إلى MTEB! إذا كنت تستخدم نموذج إعادة الترتيب، فستحتاج إلى توسيع فئة DenseRetrievalExactSearch
وتحديد وظيفة __init__
predict
(راجع قسم النماذج/إعادة الترتيب للحصول على مجموعة متنوعة من أمثلة إعادة الترتيب). يجب أن تأخذ وظيفة التنبؤ الخاصة بك input_to_rerank
والتي ستكون صفًا من النموذج:
# 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 ))
يجب أن تستخدم وظيفة predict
هذه العناصر وترجع قائمة تحتوي على نقاط لكل عنصر من عناصر الصف.
إذا وجدت الكود أو البيانات أو النموذج مفيدًا، فلا تتردد في الاستشهاد بما يلي:
@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 }
}