Anserini عبارة عن مجموعة أدوات لأبحاث استرجاع المعلومات القابلة للتكرار. من خلال البناء على لوسين، نهدف إلى سد الفجوة بين أبحاث استرجاع المعلومات الأكاديمية وممارسة بناء تطبيقات البحث في العالم الحقيقي. ومن بين الأهداف الأخرى، تهدف جهودنا إلى أن تكون عكس ذلك.* نشأت Anserini من دراسة إمكانية تكرار نتائج محركات استرجاع متعددة مفتوحة المصدر في عام 2016 (Lin et al., ECIR 2016). انظر يانغ وآخرون. (SIGIR 2017) ويانغ وآخرون. (JDIQ 2018) للحصول على لمحات عامة.
❗ تمت ترقية Anserini من JDK 11 إلى JDK 21 عند الالتزام 272565
(2024/04/03)، والذي يتوافق مع إصدار الإصدار 0.35.0.
يتم تعبئة Anserini في فتجار مستقل، والذي يوفر أيضًا أبسط طريقة للبدء. بافتراض أنك قمت بالفعل بتثبيت Java، قم بإحضار Fatjar:
wget https://repo1.maven.org/maven2/io/anserini/anserini/0.38.0/anserini-0.38.0-fatjar.jar
ستقوم الأوامر التالية بإنشاء SPLADE++ ED يتم تشغيله باستخدام استعلامات التطوير (المشفرة باستخدام ONNX) في مجموعة مرور MS MARCO:
java -cp anserini-0.38.0-fatjar.jar io.anserini.search.SearchCollection
-index msmarco-v1-passage.splade-pp-ed
-topics msmarco-v1-passage.dev
-encoder SpladePlusPlusEnsembleDistil
-output run.msmarco-v1-passage-dev.splade-pp-ed-onnx.txt
-impact -pretokenized
للتقييم:
java -cp anserini-0.38.0-fatjar.jar trec_eval -c -M 10 -m recip_rank msmarco-passage.dev-subset run.msmarco-v1-passage-dev.splade-pp-ed-onnx.txt
راجع التعليمات التفصيلية لإصدار Fatjar الحالي من Anserini (v0.38.0) لإعادة إنتاج تجارب الانحدار على مجموعة MS MARCO V2.1 لـ TREC 2024 RAG، وعلى MS MARCO V1 Passage، وعلى BEIR، كل ذلك مباشرةً من Fatjar!
كما يأتي Anserini مزودًا بتطبيق ويب مدمج للاستعلام التفاعلي بالإضافة إلى REST API التي يمكن استخدامها بواسطة تطبيقات أخرى. تحقق من وثائقنا هنا.
يتم عرض معظم ميزات Anserini في واجهة Pyserini Python. إذا كنت أكثر راحة مع بايثون، فابدأ من هناك، على الرغم من أن Anserini تشكل لبنة بناء مهمة في Pyserini، لذلك يظل من المفيد التعرف على Anserini.
ستحتاج إلى Java 21 وMaven 3.9+ لإنشاء Anserini. انسخ الريبو الخاص بنا باستخدام خيار --recurse-submodules
للتأكد من استنساخ الوحدة الفرعية eval/
(بدلاً من ذلك، استخدم git submodule update --init
). ثم قم بالبناء باستخدام Maven:
mvn clean package
دليل tools/
، الذي يحتوي على أدوات التقييم والبرامج النصية الأخرى، هو في الواقع هذا الريبو، مدمج كوحدة فرعية لـ Git (بحيث يمكن مشاركته عبر المشاريع ذات الصلة). قم بالبناء على النحو التالي (قد تحصل على تحذيرات، ولكن لا بأس بتجاهلها):
cd tools/eval && tar xvfz trec_eval.9.0.4.tar.gz && cd trec_eval.9.0.4 && make && cd ../../..
cd tools/eval/ndeval && make && cd ../../..
مع ذلك، يجب أن تكون على استعداد للذهاب. يبدأ مسار تأهيل Anserini من هنا!
إذا كنت تستخدم Windows، الرجاء استخدام WSL2 لإنشاء Anserini. الرجاء الرجوع إلى مستند تثبيت WSL2 لتثبيت WSL2 إذا لم تقم بذلك بالفعل.
لاحظ أنه في نظام التشغيل Windows الذي لا يحتوي على WSL2، قد تفشل الاختبارات بسبب مشكلات في التشفير، راجع #1466. الحل البسيط هو تخطي الاختبارات عن طريق إضافة -Dmaven.test.skip=true
إلى أمر mvn
أعلاه. راجع رقم 1121 للحصول على مناقشات إضافية حول تصحيح أخطاء إنشاء Windows.
تم تصميم Anserini لدعم التجارب الشاملة على مجموعات اختبار الأشعة تحت الحمراء القياسية المتنوعة خارج الصندوق. يبدأ كل من هذه الانحدارات الشاملة من المجموعة الأولية، ويبني الفهرس الضروري، وينفذ عمليات الاسترجاع، ويولد نتائج التقييم. انظر الصفحات الفردية للحصول على التفاصيل.
ديف | DL19 | DL20 | |
---|---|---|---|
متفرق غير خاضعة للرقابة | |||
خطوط أساس لوسين بو | ؟ | ؟ | ؟ |
الكمي BM25 | ؟ | ؟ | ؟ |
خطوط أساس WordPiece (مميزة مسبقًا) | ؟ | ؟ | ؟ |
خطوط أساس WordPiece (وجه العناق) | ؟ | ؟ | ؟ |
WordPiece + خطوط أساس Lucene BoW | ؟ | ؟ | ؟ |
doc2query | ؟ | ||
doc2query-T5 | ؟ | ؟ | ؟ |
Learned Spase (عائلة uniCOIL) | |||
uniCOIL noexp | ؟ | ؟ | ؟ |
uniCOIL مع doc2query-T5 | ؟ | ؟ | ؟ |
يونيكويل مع تيلدا | ؟ | ||
تعلمت متفرق (أخرى) | |||
ديب إمباكت | ؟ | ||
SPLADEv2 | ؟ | ||
SPLADE++ CoCondenser-EnsembleDistil | ؟ | ؟ | ؟ |
SPLADE++ CoCondenser-SelfDistil | ؟ | ؟ | ؟ |
تعلمت الكثيفة (فهارس HNSW) | |||
cosDPR-distil | ممتلىء:؟ | ممتلىء:؟ | ممتلىء:؟ |
BGE-base-en-v1.5 | ممتلىء:؟ | ممتلىء:؟ | ممتلىء:؟ |
OpenAI Ada2 | ممتلىء:؟ كثافة العمليات 8:؟ | ممتلىء:؟ كثافة العمليات 8:؟ | ممتلىء:؟ كثافة العمليات 8:؟ |
كوهير الإنجليزية v3.0 | ممتلىء:؟ كثافة العمليات 8:؟ | ممتلىء:؟ كثافة العمليات 8:؟ | ممتلىء:؟ كثافة العمليات 8:؟ |
تعلمت الكثيفة (الفهارس المسطحة) | |||
cosDPR-distil | ممتلىء:؟ | ممتلىء:؟ | ممتلىء:؟ |
BGE-base-en-v1.5 | ممتلىء:؟ | ممتلىء:؟ | ممتلىء:؟ |
OpenAI Ada2 | ممتلىء:؟ int8: ?️ | ممتلىء:؟ كثافة العمليات 8:؟ | ممتلىء:؟ كثافة العمليات 8:؟ |
كوهير الإنجليزية v3.0 | ممتلىء:؟ كثافة العمليات 8:؟ | ممتلىء:؟ كثافة العمليات 8:؟ | ممتلىء:؟ كثافة العمليات 8:؟ |
تعلمت كثيفة (مقلوبة، تجريبية) | |||
cosDPR-distil مع "كلمات مزيفة" | ؟ | ؟ | ؟ |
cosDPR-distil مع "LexLSH" | ؟ | ؟ | ؟ |
مفتاح:
الجسد | مقاس | المجموع الاختباري |
---|---|---|
الكمي BM25 | 1.2 جيجابايت | 0a623e2c97ac6b7e814bf1323a97b435 |
يونيكويل (noexp) | 2.7 جيجابايت | f17ddd8c7c00ff121c3c3b147d2e17d8 |
يوني كويل (d2q-T5) | 3.4 جيجابايت | 78eef752c78c8691f7d61600ceed306f |
يونيكويل (تيلدا) | 3.9 جيجابايت | 12a9c289d94e32fd63a7d39c9677d75c |
ديب إمباكت | 3.6 جيجابايت | 73843885b503af3c8b3ee62e5f5a9900 |
SPLADEv2 | 9.9 جيجابايت | b5d126f5d9a8e1b3ef3f5cb0ba651725 |
SPLADE++ CoCondenser-EnsembleDistil | 4.2 جيجابايت | e489133bdc54ee1e7c62a32aa582bc77 |
SPLADE++ CoCondenser-SelfDistil | 4.8 جيجابايت | cb7e264222f2bf2221dd2c9d28190be1 |
cosDPR-distil | 57 جيجابايت | e20ffbc8b5e7f760af31298aefeaebbd |
BGE-base-en-v1.5 | 59 جيجابايت | 353d2c9e72e858897ad479cca4ea0db1 |
OpenAI-ada2 | 109 جيجابايت | a4d843d522ff3a3af7edbee789a63402 |
Cohere embed-english-v3.0 | 38 جيجابايت | 06a6e38a0522850c6aa504db7b2617f5 |
ديف | DL19 | DL20 | |
---|---|---|---|
معجم غير خاضع للرقابة، وثيقة كاملة * | |||
خطوط أساس لوسين بو | + | + | + |
خطوط أساس WordPiece (مميزة مسبقًا) | + | + | + |
خطوط أساس WordPiece (رمز Huggingface) | + | + | + |
WordPiece + خطوط أساس Lucene BoW | + | + | + |
doc2query-T5 | + | + | + |
معجم غير خاضع للرقابة، مستند مجزأ * | |||
خطوط أساس لوسين بو | + | + | + |
خطوط أساس WordPiece (مميزة مسبقًا) | + | + | + |
WordPiece + خطوط أساس Lucene BoW | + | + | + |
doc2query-T5 | + | + | + |
تعلمت معجمية متفرقة | |||
uniCOIL noexp | ✓ | ✓ | ✓ |
uniCOIL مع doc2query-T5 | ✓ | ✓ | ✓ |
الجسد | مقاس | المجموع الاختباري |
---|---|---|
مستند MS MARCO V1: uniCOIL (noexp) | 11 جيجابايت | 11b226e1cacd9c8ae0a660fd14cdd710 |
مستند MS MARCO V1: uniCOIL (d2q-T5) | 19 جيجابايت | 6a00e2c0c375cb1e52c83ae5ac377ebb |
ديف | DL21 | DL22 | DL23 | |
---|---|---|---|---|
المعجمية غير الخاضعة للرقابة، المجموعة الأصلية | ||||
خطوط الأساس | + | + | + | + |
doc2query-T5 | + | + | + | + |
معجم غير خاضع للرقابة، مجموعة المعززة | ||||
خطوط الأساس | + | + | + | + |
doc2query-T5 | + | + | + | + |
تعلمت معجمية متفرقة | ||||
uniCOIL noexp صفر طلقة | ✓ | ✓ | ✓ | ✓ |
uniCOIL مع doc2query-T5 بدون طلقة | ✓ | ✓ | ✓ | ✓ |
SPLADE++ CoCondenser-EnsembleDistil (الاستعلامات المخزنة مؤقتًا) | ✓ | ✓ | ✓ | ✓ |
SPLADE++ CoCondenser-EnsembleDistil (ONNX) | ✓ | ✓ | ✓ | ✓ |
SPLADE++ CoCondenser-SelfDistil (الاستعلامات المخزنة مؤقتًا) | ✓ | ✓ | ✓ | ✓ |
SPLADE++ مكثف مشترك-لتقطير الذاتي (ONNX) | ✓ | ✓ | ✓ | ✓ |
الجسد | مقاس | المجموع الاختباري |
---|---|---|
يونيكويل (noexp) | 24 جيجابايت | d9cc1ed3049746e68a2c91bf90e5212d |
يوني كويل (d2q-T5) | 41 جيجابايت | 1949a00bfd5e1f1a230a04bbc1f01539 |
SPLADE++ CoCondenser-EnsembleDistil | 66 جيجابايت | 2cdb2adc259b8fa6caf666b20ebdc0e8 |
SPLADE++ CoCondenser-SelfDistil | 76 جيجابايت | 061930dd615c7c807323ea7fc7957877 |
ديف | DL21 | DL22 | DL23 | |
---|---|---|---|---|
معجم غير خاضع للرقابة، وثيقة كاملة | ||||
خطوط الأساس | + | + | + | + |
doc2query-T5 | + | + | + | + |
وثيقة معجمية غير خاضعة للرقابة ومجزأة | ||||
خطوط الأساس | + | + | + | + |
doc2query-T5 | + | + | + | + |
تعلمت معجمية متفرقة | ||||
uniCOIL noexp صفر طلقة | ✓ | ✓ | ✓ | ✓ |
uniCOIL مع doc2query-T5 بدون طلقة | ✓ | ✓ | ✓ | ✓ |
الجسد | مقاس | المجموع الاختباري |
---|---|---|
مستند MS MARCO V2: uniCOIL (noexp) | 55 جيجابايت | 97ba262c497164de1054f357caea0c63 |
مستند MS MARCO V2: uniCOIL (d2q-T5) | 72 جيجابايت | c5639748c2cbad0152e10b0ebde3b804 |
تم اشتقاق مجموعة MS MARCO V2.1 من مجموعة V2 لمسار TREC 2024 RAG. تلتقط التجارب أدناه موضوعات وqrels تستهدف في الأصل مجموعة V2، ولكن تم "إسقاطها" على مجموعة V2.1.
ديف | DL21 | DL22 | DL23 | راجي ديف | |
---|---|---|---|---|---|
معجم غير خاضع للرقابة، وثيقة كاملة | |||||
خطوط الأساس | + | + | + | + | + |
وثيقة معجمية غير خاضعة للرقابة ومجزأة | |||||
خطوط الأساس | + | + | + | + | + |
مفتاح:
bert-base-uncased
)، واستعلامات الكلمات الرئيسية (؟)راجع الإرشادات الموجودة أسفل الجدول لمعرفة كيفية إعادة إنتاج النتائج لنموذج على كافة مجموعات BEIR "دفعة واحدة".
جسد | F1 | F2 | مف | U1 | S1 | بجي (مسطحة) | BGE (HNSW) |
---|---|---|---|---|---|---|---|
تريك-كوفيد | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
BioASQ | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
نكوربوس | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
NQ | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
HotpotQA | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
FIQA-2018 | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
الإشارة-1M(RT) | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
تريك-أخبار | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
Robust04 | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
أرجوانا | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
تاتش2020 | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-Android | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-الإنجليزية | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-Gaming | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-Gis | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-Mathematica | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-الفيزياء | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-Programmers | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-Stats | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-Tex | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-Unix | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-مشرفي المواقع | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
CQADupStack-ووردبريس | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
كورا | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
DBedia | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
سكيدوكس | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
حمى | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
حمى المناخ | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
حقيقة علمية | ؟ | ؟ | ؟ | ؟ | ؟ | ممتلىء:؟ | ممتلىء:؟ |
لإعادة إنتاج نتائج SPLADE++ CoCondenser-EnsembleDistil، ابدأ بتنزيل المجموعة:
wget https://rgw.cs.uwaterloo.ca/pyserini/data/beir-v1.0.0-splade-pp-ed.tar -P collections/
tar xvf collections/beir-v1.0.0-splade-pp-ed.tar -C collections/
يبلغ حجم كرة القطران 42 جيجابايت وتحتوي على المجموع الاختباري MD5 9c7de5b444a788c9e74c340bf833173b
. بمجرد الانتهاء من تفكيك البيانات، سيتم تكرار الأوامر التالية على جميع مجموعات BEIR وتشغيل الانحدارات:
MODEL= " splade-pp-ed " ; CORPORA=(trec-covid bioasq nfcorpus nq hotpotqa fiqa signal1m trec-news robust04 arguana webis-touche2020 cqadupstack-android cqadupstack-english cqadupstack-gaming cqadupstack-gis cqadupstack-mathematica cqadupstack-physics cqadupstack-programmers cqadupstack-stats cqadupstack-tex cqadupstack-unix cqadupstack-webmasters cqadupstack-wordpress quora dbpedia-entity scidocs fever climate-fever scifact) ; for c in " ${CORPORA[@]} "
do
echo " Running $c ... "
python src/main/python/run_regression.py --index --verify --search --regression beir-v1.0.0- ${c} . ${MODEL} .onnx > logs/log.beir-v1.0.0- ${c} - ${MODEL} .onnx 2>&1
done
يمكنك التحقق من النتائج عن طريق فحص ملفات السجل في logs/
.
بالنسبة للنماذج الأخرى، قم بتعديل الأوامر المذكورة أعلاه على النحو التالي:
مفتاح | جسد | المجموع الاختباري | MODEL |
---|---|---|---|
F1 | corpus | faefd5281b662c72ce03d22021e4ff6b | flat |
F2 | corpus-wp | 3cf8f3dcdcadd49362965dd4466e6ff2 | flat-wp |
مف | corpus | faefd5281b662c72ce03d22021e4ff6b | multifield |
U1 | unicoil-noexp | 4fd04d2af816a6637fc12922cccc8a83 | unicoil-noexp |
S1 | splade-pp-ed | 9c7de5b444a788c9e74c340bf833173b | splade-pp-ed |
BGE | bge-base-en-v1.5 | e4e8324ba3da3b46e715297407a24f00 | bge-base-en-v1.5-hnsw |
يجب استبدال "المجموعة" أعلاه باسم الملف الكامل beir-v1.0.0-${corpus}.tar
، على سبيل المثال، beir-v1.0.0-bge-base-en-v1.5.tar
. يجب أن تعمل الأوامر المذكورة أعلاه مع بعض التعديلات الطفيفة: ستحتاج إلى تعديل المعلمة --regression
لمطابقة مخطط ملفات تكوين YAML في src/main/resources/regression/
.
لا ترتبط التجارب الموضحة أدناه باختبار الانحدار الشامل الصارم وبالتالي توفر مستوى أقل من إمكانية التكرار. بالنسبة للجزء الأكبر، يلزم نسخ الأوامر ولصقها يدويًا في الصدفة لإعادة إنتاج نتائجنا.
إذا وجدت Anserini مفيدًا، فلدينا طلب بسيط منك للمساهمة مرة أخرى. في سياق إعادة إنتاج النتائج الأساسية في مجموعات الاختبار القياسية، يرجى إعلامنا إذا كنت ناجحًا عن طريق إرسال طلب سحب إلينا مع ملاحظة بسيطة، مثل ما يظهر في أسفل الصفحة للأقراص 4 و5. إن إعادة الإنتاج مهمة لنا، ونود أن نعرف عن النجاحات وكذلك الإخفاقات. نظرًا لأن وثائق الانحدار يتم إنشاؤها تلقائيًا، فيجب إرسال طلبات السحب مقابل القوالب الأولية. ومن ثم يمكن إنشاء وثائق الانحدار باستخدام البرنامج النصي bin/build.sh
. وفي المقابل، سيتم الاعتراف بك كمساهم.
علاوة على ذلك، هناك دائمًا مشكلات مفتوحة نود تقديم المساعدة بشأنها!
272565
(8/2/2022): أدت هذه الترقية إلى حدوث مشكلات في التوافق مع الإصدارات السابقة، راجع رقم 1952. سوف يقوم Anserini تلقائيًا باكتشاف فهارس Lucene 8 وتعطيل عملية كسر التعادل المتسقة لتجنب أخطاء وقت التشغيل. ومع ذلك، فإن كود Lucene 9 الذي يعمل على فهارس Lucene 8 قد يعطي نتائج مختلفة قليلاً عن كود Lucene 8 الذي يعمل على فهارس Lucene 8. لن يتم تشغيل كود Lucene 8 على فهارس Lucene 9. تمت ترقية Pyserini أيضًا وتنطبق مشكلات مماثلة: كود Lucene 9 الذي يعمل على فهارس Lucene 8 قد يعطي نتائج مختلفة قليلاً عن كود Lucene 8 الذي يعمل على فهارس Lucene 8.17b702d
(7/11/2019) من Java 8. مطلوب أيضًا Maven 3.3+.75e36f9
(12/6/2019)؛ قبل ذلك، كانت مجموعة الأدوات تستخدم Lucene 7.6. استنادًا إلى التجارب الأولية، تم تحسين زمن استجابة تقييم الاستعلام بشكل كبير في Lucene 8. ونتيجة لهذه الترقية، تغيرت نتائج جميع الانحدارات بشكل طفيف. لاستنساخ النتائج القديمة من Lucene 7.6، استخدم الإصدار 0.5.1. يتم دعم هذا البحث جزئيًا من قبل مجلس أبحاث العلوم الطبيعية والهندسة (NSERC) في كندا. وجاء الدعم السابق من مؤسسة العلوم الوطنية الأمريكية تحت IIS-1423002 وCNS-1405688. أي آراء ونتائج واستنتاجات أو توصيات تم التعبير عنها لا تعكس بالضرورة آراء الرعاة.