بيريريني
Pyserini عبارة عن مجموعة أدوات Python لأبحاث استرجاع المعلومات القابلة للتكرار من خلال تمثيلات متفرقة وكثيفة. يتم توفير الاسترجاع باستخدام تمثيلات متفرقة من خلال التكامل مع مجموعة أدوات Anserini IR الخاصة بمجموعتنا، والتي تم بناؤها على Lucene. يتم توفير الاسترجاع باستخدام التمثيلات الكثيفة من خلال التكامل مع مكتبة فايس على فيسبوك.
تم تصميم Pyserini في المقام الأول لتوفير استرجاع فعال وقابل للتكرار وسهل الاستخدام للمرحلة الأولى في بنية تصنيف متعددة المراحل. مجموعة الأدوات الخاصة بنا قائمة بذاتها كحزمة Python قياسية وتأتي مع الاستعلامات والأحكام ذات الصلة والفهارس المعدة مسبقًا والبرامج النصية للتقييم للعديد من مجموعات اختبار IR شائعة الاستخدام. مع Pyserini، من السهل إعادة إنتاج عمليات التشغيل على عدد من مجموعات اختبار الأشعة تحت الحمراء القياسية!
لمزيد من التفاصيل، توفر ورقتنا في SIGIR 2021 نظرة عامة لطيفة.
جديد! دليل العمل مع MS MARCO 2.1 Document Corpus لمسار TREC 2024 RAG.
❗ تمت ترقية Anserini من JDK 11 إلى JDK 21 عند الالتزام 272565
(2024/04/03)، والذي يتوافق مع إصدار الإصدار 0.35.0. في المقابل، تمت ترقية Pyserini إلى JDK 21 عند الالتزام b2f677
(2024/04/04).
؟ تثبيت
التثبيت عبر PyPI:
تم بناء Pyserini على Python 3.10 (قد تعمل الإصدارات الأخرى، ولكن YMMV) وJava 21 (نظرًا لاعتمادها على Anserini). سيؤدي تثبيت pip
تلقائيًا إلى سحب التبعيات الرئيسية مثل PyTorch و؟ المحولات ووقت تشغيل ONNX.
تحتوي مجموعة الأدوات أيضًا على عدد من التبعيات الاختيارية:
pip install 'pyserini[optional]'
ومن الجدير بالذكر أن faiss-cpu
و lightgbm
و nmslib
متضمنة في هذه التبعيات الاختيارية. يمكن أن يكون تثبيت هذه الحزم أمرًا مزاجيًا، ولهذا السبب لم يتم تضمينها في التبعيات الأساسية. قد تكون فكرة جيدة أن تقوم بتثبيتها بنفسك بشكل منفصل.
يتطور النظام البيئي للبرمجيات بسرعة، والمصدر المحتمل للإحباط هو عدم التوافق بين الإصدارات المختلفة من التبعيات الأساسية. نحن نقدم تعليمات التثبيت التفصيلية الإضافية هنا.
إذا كنت تخطط لاستخدام Pyserini فقط، فيجب أن تكون تعليمات pip
(بدون التبعيات الاختيارية) جيدة. ومع ذلك، إذا كنت تخطط للمساهمة في قاعدة التعليمات البرمجية أو ترغب في العمل مع أحدث الميزات التي لم يتم إصدارها بعد، فسوف تحتاج إلى تثبيت التطوير. يتم توفير التعليمات هنا.
؟ كيف أقوم بالبحث؟
يدعم Pyserini أنواعًا مختلفة من نماذج الاسترجاع. راجع هذا الدليل للحصول على تفاصيل حول كيفية البحث في النصوص المشتركة في أبحاث IR وNLP (على سبيل المثال، MS MARCO، وNaturalQuestions، وBEIR، وما إلى ذلك) باستخدام الفهارس التي أنشأناها لك بالفعل. فيما يلي روابط مباشرة في الدليل:
- النماذج المعجمية التقليدية (على سبيل المثال، BM25) باستخدام لوسين.
- تعلم نماذج الاسترجاع المتفرقة (على سبيل المثال، uniCOIL، SPLADE، وما إلى ذلك) باستخدام Lucene.
- تعلم نماذج الاسترجاع الكثيفة (على سبيل المثال، DPR، وContriever، وBGE، وما إلى ذلك) باستخدام Lucene أو Faiss.
- نماذج الاسترجاع الهجين (على سبيل المثال، الاندماج الكثيف المتناثر).
بمجرد حصولك على نتائج top- k ، ستحتاج بالفعل إلى جلب نص المستند... راجع هذا الدليل لمعرفة كيفية القيام بذلك.
؟ كيف أقوم بفهرسة مجموعتي الخاصة؟
حسنًا، يعتمد ذلك على نوع نموذج الاسترجاع الذي تريد البحث به:
- بناء مؤشر BM25 (التنفيذ المباشر لجافا)
- بناء مؤشر BM25 (تنفيذ بايثون القابل للتضمين)
- بناء مؤشر ناقلات متفرق
- بناء مؤشر متجه كثيف
تختلف الخطوات باختلاف فئات النماذج: يصف هذا الدليل (مثل الروابط أعلاه) التفاصيل.
؟ أسئلة وأجوبة إضافية
- كيف أقوم بتكوين البحث؟ (دليل البحث التفاعلي)
- كيف أقوم بتنزيل الفهارس يدويًا؟ (دليل البحث التفاعلي)
- كيف أقوم بإجراء الاسترجاع الكثيف والهجين؟ (دليل البحث التفاعلي)
- كيف يمكنني التكرار على مصطلحات الفهرس والوصول إلى إحصائيات المصطلحات؟ (واجهة برمجة تطبيقات قارئ الفهرس)
- كيف يمكنني اجتياز المشاركات؟ (واجهة برمجة تطبيقات قارئ الفهرس)
- كيف يمكنني الوصول إلى ناقلات المصطلح ومعالجتها؟ (واجهة برمجة تطبيقات قارئ الفهرس)
- كيف يمكنني حساب درجة tf-idf أو BM25 للمستند؟ (واجهة برمجة تطبيقات قارئ الفهرس)
- كيف يمكنني الوصول إلى إحصائيات الفهرس الأساسية؟ (واجهة برمجة تطبيقات قارئ الفهرس)
- كيف يمكنني الوصول إلى أجهزة تحليل Lucene الأساسية؟ (واجهة برمجة تطبيقات المحلل)
- كيف أقوم بإنشاء استعلامات Lucene مخصصة؟ (واجهة برمجة تطبيقات منشئ الاستعلام)
- كيف يمكنني التكرار على المجموعات الأولية؟ (واجهة برمجة تطبيقات المجموعة)
⚗️ الاستنساخ
مع Pyserini، من السهل إعادة إنتاج عمليات التشغيل على عدد من مجموعات اختبار الأشعة تحت الحمراء القياسية! نحن نقدم عددًا من الفهارس المعدة مسبقًا والتي تدعم بشكل مباشر إمكانية التكرار "خارج الصندوق".
في ورقة SIGIR 2022 الخاصة بنا، قدمنا "نسخًا بنقرتين" تسمح لأي شخص بإعادة إنتاج عمليات التشغيل التجريبية بنقرتين فقط (أي النسخ واللصق). يتم تنظيم التوثيق في مصفوفات إعادة الإنتاج لمختلف المجموعات التي توفر ملخصًا للظروف التجريبية المختلفة ومجموعات الاستعلام:
- ممر MS ماركو V1
- مستند MS MARCO V1
- ممر MS ماركو V2
- وثيقة MS ماركو V2
- بير
- السيد تيدي
- معجزة
- الإجابة على أسئلة المجال المفتوح
- سيرال
لمزيد من التفاصيل، راجع مقالتنا حول بناء ثقافة التكرار في البحث الأكاديمي.
توفر أدلة الاستنساخ الإضافية أدناه إرشادات مفصلة خطوة بخطوة.
استرجاع متفرق
استرجاع متفرق
- إعادة إنتاج خطوط الأساس Robust04 للاسترجاع المخصص
- إعادة إنتاج خط الأساس BM25 لتصنيف مرور MS MARCO V1
- إعادة إنتاج خط الأساس BM25 لتصنيف مستندات MS MARCO V1
- إعادة إنتاج خط الأساس BM25 متعدد المجالات لتصنيف مستندات MS MARCO V1 من Elasticsearch
- إعادة إنتاج خطوط الأساس BM25 على مجموعات MS MARCO V2
- إعادة إنتاج تجارب التصفية LTR: MS MARCO V1 Passage، وMS MARCO V1 Document
- إعادة إنتاج تجارب IRST على مجموعات MS MARCO V1
- إعادة إنتاج DeepImpact: ممر MS MARCO V1
- إعادة إنتاج uniCOIL باستخدام doc2query-T5: MS MARCO V1، MS MARCO V2
- إعادة إنتاج uniCOIL باستخدام TILDE: MS MARCO V1 Passage، MS MARCO V2 Passage
- إعادة إنتاج SPLADEv2: ممر MS MARCO V1
- استنساخ تجارب السيد TyDi
- إعادة إنتاج خطوط الأساس BM25 لـ HC4
- إعادة إنتاج خطوط الأساس BM25 لـ HC4 على NeuCLIR22
- استنساخ تجارب SLIM
- الخطوط الأساسية لـ KILT: معيار للمهام اللغوية كثيفة المعرفة
- الخطوط الأساسية لـ TripClick: مجموعة بيانات واسعة النطاق لسجلات النقرات في المجال الصحي
- خطوط الأساس (في Anserini) لمجموعة بيانات FEVER (استخراج الحقائق والتحقق منها).
استرجاع كثيف
استرجاع كثيف
- إعادة إنتاج تجارب TCT-ColBERTv1: MS MARCO V1
- إعادة إنتاج تجارب TCT-ColBERTv2: MS MARCO V1، MS MARCO V2
- استنساخ تجارب DPR
- استنساخ تجارب إعادة هندسة العمليات
- استنساخ تجارب ANCE
- استنساخ تجارب DistilBERT KD
- إعادة إنتاج تجارب أخذ العينات المتوازنة للموضوع من DistilBERT
- استنساخ تجارب الاسترجاع الكثيفة SBERT
- إعادة إنتاج تجارب الاسترجاع الكثيفة ADORE
- استنساخ تجارب المتجهات PRF
- استنساخ تجارب ANCE-PRF
- استنساخ تجارب السيد TyDi
- استنساخ تجارب DKRR
استرجاع هجين متناثر كثيف
استرجاع هجين متناثر كثيف
- إعادة إنتاج تجارب uniCOIL + TCT-ColBERTv2 على مجموعات MS MARCO V2
المتاحة
المتاحة
الجسد | مقاس | المجموع الاختباري |
---|
مرور MS MARCO V1: uniCOIL (noexp) | 2.7 جيجابايت | f17ddd8c7c00ff121c3c3b147d2e17d8 |
مرور MS MARCO V1: uniCOIL (d2q-T5) | 3.4 جيجابايت | 78eef752c78c8691f7d61600ceed306f |
مستند MS MARCO V1: uniCOIL (noexp) | 11 جيجابايت | 11b226e1cacd9c8ae0a660fd14cdd710 |
مستند MS MARCO V1: uniCOIL (d2q-T5) | 19 جيجابايت | 6a00e2c0c375cb1e52c83ae5ac377ebb |
مرور MS MARCO V2: uniCOIL (noexp) | 24 جيجابايت | d9cc1ed3049746e68a2c91bf90e5212d |
مرور MS MARCO V2: uniCOIL (d2q-T5) | 41 جيجابايت | 1949a00bfd5e1f1a230a04bbc1f01539 |
مستند MS MARCO V2: uniCOIL (noexp) | 55 جيجابايت | 97ba262c497164de1054f357caea0c63 |
مستند MS MARCO V2: uniCOIL (d2q-T5) | 72 جيجابايت | c5639748c2cbad0152e10b0ebde3b804 |
؟ وثائق إضافية
- دليل للفهارس المعدة مسبقا
- دليل البحث التفاعلي
- دليل لتصنيف النص باستخدام مجموعة بيانات 20Newsgroups
- دليل العمل مع مجموعة بيانات الأبحاث المفتوحة لكوفيد-19 (CORD-19)
- دليل العمل مع ربط الكيانات
- دليل للعمل مع SpaCy
- استخدام واجهة برمجة التطبيقات للمحلل
- استخدام واجهة برمجة تطبيقات قارئ الفهرس
- استخدام واجهة برمجة تطبيقات Query Builder
- استخدام واجهة برمجة تطبيقات المجموعة
- التفاعل المباشر عبر Pyjnius
️ تاريخ الإصدار
- الإصدار 0.43.0 (مع Anserini v0.38.0): 11 نوفمبر 2024 [ملاحظات الإصدار]
- الإصدار 0.42.0 (مع Anserini v0.38.0): 8 نوفمبر 2024 [ملاحظات الإصدار] [المشكلات المعروفة]
- الإصدار 0.41.0 (مع Anserini v0.38.0): 7 نوفمبر 2024 [ملاحظات الإصدار] [المشكلات المعروفة]
- الإصدار 0.40.0 (مع Anserini v0.38.0): 28 أكتوبر 2024 [ملاحظات الإصدار]
- الإصدار 0.39.0 (مع Anserini v0.38.0): 27 سبتمبر 2024 [ملاحظات الإصدار]
- الإصدار 0.38.0 (مع Anserini v0.38.0): 11 سبتمبر 2024 [ملاحظات الإصدار]
- الإصدار 0.37.0 (مع Anserini v0.37.0): 26 أغسطس 2024 [ملاحظات الإصدار]
- الإصدار 0.36.0 (مع Anserini v0.36.1): 17 يونيو 2024 [ملاحظات الإصدار]
- الإصدار 0.35.0 (مع Anserini v0.35.0): 4 أبريل 2024 [ملاحظات الإصدار]
كبار السن... (والملاحظات التاريخية)
- الإصدار 0.25.0 (مع Anserini v0.25.0): 31 مارس 2024 [ملاحظات الإصدار]
- الإصدار 0.24.0 (مع Anserini v0.24.0): 28 ديسمبر 2023 [ملاحظات الإصدار]
- الإصدار 0.23.0 (مع Anserini v0.23.0): 17 نوفمبر 2023 [ملاحظات الإصدار]
- الإصدار 0.22.1 (مع Anserini v0.22.1): 19 أكتوبر 2023 [ملاحظات الإصدار]
- الإصدار 0.22.0 (مع Anserini v0.22.0): 31 أغسطس 2023 [ملاحظات الإصدار]
- الإصدار 0.21.0 (مع Anserini v0.21.0): 6 أبريل 2023 [ملاحظات الإصدار]
- الإصدار 0.20.0 (مع Anserini v0.20.0): 1 فبراير 2023 [ملاحظات الإصدار]
- الإصدار 0.19.2 (مع Anserini v0.16.2): 16 ديسمبر 2022 [ملاحظات الإصدار]
- الإصدار 0.19.1 (مع Anserini v0.16.1): 12 نوفمبر 2022 [ملاحظات الإصدار]
- الإصدار 0.19.0 (مع Anserini v0.16.1): 2 نوفمبر 2022 [ملاحظات الإصدار] [المشكلات المعروفة]
- الإصدار 0.18.0 (مع Anserini v0.15.0): 26 سبتمبر 2022 [ملاحظات الإصدار] (الإصدار الأول يعتمد على Lucene 9)
- الإصدار 0.17.1 (مع Anserini v0.14.4): 13 أغسطس 2022 [ملاحظات الإصدار] (الإصدار النهائي استنادًا إلى Lucene 8)
- الإصدار 0.17.0 (مع Anserini v0.14.3): 28 مايو 2022 [ملاحظات الإصدار]
- الإصدار 0.16.1 (مع Anserini v0.14.3): 12 مايو 2022 [ملاحظات الإصدار]
- الإصدار 0.16.0 (مع Anserini v0.14.1): 1 مارس 2022 [ملاحظات الإصدار]
- الإصدار 0.15.0 (مع Anserini v0.14.0): 21 يناير 2022 [ملاحظات الإصدار]
- الإصدار 0.14.0 (مع Anserini v0.13.5): 8 نوفمبر 2021 [ملاحظات الإصدار]
- الإصدار 0.13.0 (مع Anserini v0.13.1): 3 يوليو 2021 [ملاحظات الإصدار]
- الإصدار 0.12.0 (مع Anserini v0.12.0): 5 مايو 2021 [ملاحظات الإصدار]
- الإصدار 0.11.0.0: 18 فبراير 2021 [ملاحظات الإصدار]
- الإصدار 0.10.1.0: 8 يناير 2021 [ملاحظات الإصدار]
- الإصدار 0.10.0.1: 2 ديسمبر 2020 [ملاحظات الإصدار]
- الإصدار 0.10.0.0: 26 نوفمبر 2020 [ملاحظات الإصدار]
- الإصدار 0.9.4.0: 26 يونيو 2020 [ملاحظات الإصدار]
- الإصدار 0.9.3.1: 11 يونيو 2020 [ملاحظات الإصدار]
- الإصدار 0.9.3.0: 27 مايو 2020 [ملاحظات الإصدار]
- الإصدار 0.9.2.0: 15 مايو 2020 [ملاحظات الإصدار]
- الإصدار 0.9.1.0: 6 مايو 2020 [ملاحظات الإصدار]
- الإصدار 0.9.0.0: 18 أبريل 2020 [ملاحظات الإصدار]
- الإصدار 0.8.1.0: 22 مارس 2020 [ملاحظات الإصدار]
- الإصدار 0.8.0.0: 12 مارس 2020 [ملاحظات الإصدار]
- الإصدار 0.7.2.0: 25 يناير 2020 [ملاحظات الإصدار]
- الإصدار 0.7.1.0: 9 يناير 2020 [ملاحظات الإصدار]
- الإصدار 0.7.0.0: 13 ديسمبر 2019 [ملاحظات الإصدار]
- الإصدار 0.6.0.0: 2 نوفمبر 2019
️ ملاحظات تاريخية
⁉️ انتقال لوسين 8 إلى لوسين 9. في عام 2022، خضعت بايسيريني للانتقال من لوسين 8 إلى لوسين 9. تمت إعادة بناء معظم الفهارس المعدة مسبقًا باستخدام لوسين 9، ولكن لا يزال هناك عدد قليل منها يعتمد على لوسين 8.
مزيد من التفاصيل:
- PyPI v0.17.1 (الالتزام
33c87c
، تم إصداره بتاريخ 2022/08/13) هو الإصدار الأخير من Pyserini المبني على Lucene 8، استنادًا إلى Anserini v0.14.4. بعد ذلك، تمت ترقية صندوق Anserini إلى Lucene 9. - تم إنشاء PyPI v0.18.0 (الالتزام
5fab14
، الذي تم إصداره بتاريخ 26/09/2022) على Anserini v0.15.0، باستخدام Lucene 9. وبعد ذلك، تقدم صندوق Pyserini إلى Lucene 9.
التفسيرات:
ما هو التأثير؟ الفهارس المبنية باستخدام Lucene 8 غير متوافقة تمامًا مع كود Lucene 9 (انظر Anserini #1952). يتمثل الحل البديل في تعطيل عملية كسر التعادل المتسقة، والتي تحدث تلقائيًا إذا اكتشف Pyserini مؤشر Lucene 8. ومع ذلك، فإن كود Lucene 9 الذي يعمل على فهارس Lucene 8 سيعطي نتائج مختلفة قليلاً عن كود Lucene 8 الذي يعمل على فهارس Lucene 8. لاحظ أن كود Lucene 8 غير قادر على قراءة الفهارس المبنية باستخدام Lucene 9.
لماذا هذا ضروري؟ على الرغم من أنها مزعجة، إلا أن الترقية إلى Lucene 9 ضرورية للاستفادة من مؤشرات Lucene's HNSW، والتي ستزيد من قدرات Pyserini وتفتح مساحة التصميم للهجائن الكثيفة/المتناثرة.
مع الإصدار 0.11.0.0 وما قبله، اعتمدت إصدارات Pyserini اتفاقية XYZW ، حيث يتتبع XYZ إصدار Anserini، ويتم استخدام W للتمييز بين الإصدارات المختلفة في نهاية Python. بدءًا من Anserini v0.12.0، تم فصل إصدارات Anserini وPyserini.
تم تصميم Anserini للعمل مع JDK 11. كان هناك تغيير في مسار JRE أعلى من JDK 9 والذي يكسر pyjnius 1.2.0، كما هو موثق في هذه المشكلة، كما تم الإبلاغ عنه في Anserini هنا وهنا. تم إصلاح هذه المشكلة باستخدام pyjnius 1.2.1 (تم إصداره في ديسمبر 2019). تم توثيق الخطأ السابق في دفتر الملاحظات هذا ويوثق هذا الدفتر الإصلاح.
مراجع
إذا كنت تستخدم بايسيريني، يرجى ذكر الورقة التالية:
@INPROCEEDINGS{Lin_etal_SIGIR2021_Pyserini,
author = "Jimmy Lin and Xueguang Ma and Sheng-Chieh Lin and Jheng-Hong Yang and Ronak Pradeep and Rodrigo Nogueira",
title = "{Pyserini}: A {Python} Toolkit for Reproducible Information Retrieval Research with Sparse and Dense Representations",
booktitle = "Proceedings of the 44th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR 2021)",
year = 2021,
pages = "2356--2362",
}
شكر وتقدير
يتم دعم هذا البحث في المقام الأول جزئيًا من قبل مجلس أبحاث العلوم الطبيعية والهندسة (NSERC) في كندا.