؟ نحن نبحث عن اختبار تجريبي لمرسولة مساعدنا الافتراضي. اتصل بنا إذا كنت مهتمًا باستخدامه على موقع الويب الخاص بك.
النقاط البارزة • نظرة عامة • المعايير • التثبيت • البدء • kubernetes • الوثائق • الدروس • المساهمة • ملاحظات الإصدار • المدونة
⚡ NBOOST عبارة عن منصة قابلة للتطوير ، وزيادة محرك البحث لتطوير ونشر النماذج الحديثة لتحسين أهمية نتائج البحث.

يقوم NBOOST بالتعزيز النماذج المحفوظة بإنشاء محركات البحث العصبية الخاصة بالمجال. يمكن للمنصة أيضًا تحسين مهام المصب الأخرى التي تتطلب مدخلات في المرتبة ، مثل الإجابة على الأسئلة.
اتصل بنا لطلب نماذج خاصة بالمجال أو ترك التعليقات
سير عمل NBOOST بسيط نسبيا. خذ الرسم أعلاه ، وتخيل أن الخادم في هذه الحالة هو Elasticsearch.

في طلب البحث التقليدي ، يرسل المستخدم استعلامًا إلى Elasticsearch ويحصل على النتائج.

في طلب بحث NBOOST ، يرسل المستخدم استعلامًا إلى النموذج . بعد ذلك ، يسأل النموذج نتائج من Elasticsearch ويختار أفضل ما للعودة إلى المستخدم.
؟ لاحظ أننا نقوم بتقييم النماذج على مجموعات تم إنشاؤها بشكل مختلف عما تم تدريبها (MS Marco vs TREC-CAR) ، مما يشير إلى تعميم هذه النماذج للعديد من مشاكل البحث في العالم الحقيقي الأخرى.
| نماذج ضبطها | التبعية | مجموعة تقييم | البحث الدعوي [1] | السرعة على وحدة معالجة الرسومات |
|---|---|---|---|---|
nboost/pt-tinybert-msmarco ( افتراضي ) | استعلامات Bing | +45 ٪ (0.26 مقابل 0.18) | ~ 50ms/query | |
nboost/pt-bert-base-uncased-msmarco | استعلامات Bing | +62 ٪ (0.29 مقابل 0.18) | ~ 300 مللي ثانية/استعلام | |
nboost/pt-bert-large-msmarco | استعلامات Bing | +77 ٪ (0.32 مقابل 0.18) | - | |
nboost/pt-biobert-base-msmarco | Biomed | +66 ٪ (0.17 مقابل 0.10) | ~ 300 مللي ثانية/استعلام |
تعليمات للاستنساخ هنا.
[1] MRR مقارنة بـ BM25 ، الافتراضي لـ Elasticsearch. Reranking أعلى 50.
[2] https://github.com/nyu-dl/dl4marco-bert
لاستخدام أحد هذه النماذج التي تم ضبطها مع NBOOST ، قم بتشغيل nboost --model_dir bert-base-uncased-msmarco على سبيل المثال ، وسيقوم بتنزيل وتذوق الذاكرة التخزين المؤقت تلقائيًا.
باستخدام نماذج فهم اللغة التي تم تدريبها مسبقًا ، يمكنك تعزيز مقاييس أهمية البحث بمقدار 2x تقريبًا مقارنةً بالبحث عن النص فقط ، مع تكوين ضئيل أو بدون تكوين إضافي. أثناء تقييم الأداء ، غالبًا ما يكون هناك مفاضلة بين دقة النموذج والسرعة ، لذلك نقوم بتقييم كل من هذين العوامل أعلاه. هذا المتصدرين هو عمل مستمر ، ونعتزم إصدار المزيد من النماذج المتطورة!
هناك طريقتان للحصول على NBOOST ، إما كصورة Docker أو كحزمة PYPI. بالنسبة للمستخدمين السحابيين ، نوصي بشدة باستخدام NBOOST عبر Docker .
؟ اعتمادًا على النموذج الخاص بك ، يجب عليك تثبيت تبعيات TensorFlow أو Pytorch المعنية. نحن نحزمهم أدناه.
لتثبيت NBOOST ، اتبع الجدول أدناه.
| التبعية | ؟ عامل ميناء | ؟ pypi | ؟ Kubernetes |
|---|---|---|---|
| Pytorch ( موصى به ) | koursaros/nboost:latest-pt | pip install nboost[pt] | helm install nboost/nboost --set image.tag=latest-pt |
| Tensorflow | koursaros/nboost:latest-tf | pip install nboost[tf] | helm install nboost/nboost --set image.tag=latest-tf |
| الجميع | koursaros/nboost:latest-all | pip install nboost[all] | helm install nboost/nboost --set image.tag=latest-all |
| - ( للاختبار ) | koursaros/nboost:latest-alpine | pip install nboost | helm install nboost/nboost --set image.tag=latest-alpine |
على أي طريقة تقوم بتثبيتها ، إذا انتهى بك الأمر إلى قراءة الرسالة التالية بعد $ nboost --help أو $ docker run koursaros/nboost --help ، فأنت مستعد للذهاب!

![]() | الوكيل هو جوهر nboost. الوكيل هو في الأساس غلاف لتمكين خدمة النموذج. إنه قادر على فهم الرسائل الواردة من واجهات برمجة تطبيقات البحث المحددة (أي Elasticsearch). عندما يتلقى الوكيل رسالة ، فإنه يزيد من كمية النتائج التي يطلبها العميل حتى يتمكن النموذج من إعادة صياغة مجموعة أكبر وإعادة نتائج أفضل (نأمل). على سبيل المثال ، إذا طلب العميل 10 نتائج للقيام به مع الاستعلام "Brown Dogs" من Elasticsearch ، فقد يزيد الوكيل من طلب النتائج إلى 100 وتصفية أفضل عشر نتائج للعميل. |
في هذا المثال ، سنقوم بإعداد وكيل للجلوس بين العميل و Elasticsearch وزيادة النتائج!
إذا كنت ترغب في تشغيل المثال على وحدة معالجة الرسومات ، فتأكد من أن لديك TensorFlow 1.14-1.15 أو Pytorch أو Onnx وقت تشغيل مع CUDA لدعم وظيفة النمذجة. ومع ذلك ، إذا كنت ترغب في تشغيله على وحدة المعالجة المركزية ، فلا تقلق بشأن ذلك. لكلا الحالتين ، فقط تشغيل:
pip install nboost[pt]؟ إذا كان لديك بالفعل خادم Elasticsearch ، فيمكنك تخطي هذه الخطوة!
إذا لم يكن لديك Elasticsearch ، لا تقلق! نوصي بإعداد مجموعة Elasticsearch المحلية باستخدام Docker (شريطة تثبيت Docker). أولاً ، احصل على صورة ES عن طريق التشغيل:
docker pull elasticsearch:7.4.2بمجرد حصولك على الصورة ، يمكنك تشغيل خادم Elasticsearch عبر:
docker run -d -p 9200:9200 -p 9300:9300 -e " discovery.type=single-node " elasticsearch:7.4.2نحن الآن على استعداد لنشر الوكيل العصبي لدينا! من السهل جدًا القيام بذلك ، تشغيل:
nboost
--uhost localhost
--uport 9200
--search_route " /<index>/_search "
--query_path url.query.q
--topk_path url.query.size
--default_topk 10
--choices_path body.hits.hits
--cvalues_path _source.passage؟ يجب أن يكون
--uhostو--uportهو نفسه خادم Elasticsearch أعلاه! تعتبر Uhost و Uport قصيرة بالنسبة للمضيف المنبع والمنافث (في إشارة إلى خادم المنبع).
إذا تلقيت هذه الرسالة: Listening: <host>:<port> ، فمن الجيد أن نذهب!
لدى NBOOST أداة فهرسة مفيدة مدمجة في ( nboost-index ). لأغراض التوضيح ، سيتم فهرسة مجموعة من المقاطع حول السفر والفنادق من خلال NBOOST. يمكنك إضافة الفهرس إلى خادم Elasticsearch عن طريق التشغيل:
travel.csvيأتي مع nboost
nboost-index --file travel.csv --index_name travel --delim , --id_colالآن دعنا نختبرها! اضغط على Elasticsearch مع:
curl " http://localhost:8000/travel/_search?pretty&q=passage:vegas&size=2 " إذا كانت نتيجة Elasticsearch تحتوي على علامة nboost ، تهانينا!

دعنا نتحقق من الواجهة الأمامية nboost . انتقل إلى متصفحك وزيارة LocalHost: 8000/NBOOST.
إذا لم يكن لديك إمكانية الوصول إلى متصفح ، فيمكنك
curl http://localhost:8000/nboost/statusلنفس المعلومات.

سجلت الواجهة الأمامية كل ما حدث:
localhost:9200 . لزيادة عدد الوكلاء المتوازيين ، ببساطة زيادة --workers . للحصول على نهج نشر أكثر قوة ، يمكنك توزيع الوكيل عبر Kubernetes (انظر أدناه).

للاطلاع على الاستعلام المتعمق DSL وغيرها من حلول API Search (مثل API Bing) ، انظر المستندات.
يمكننا بسهولة نشر NBoost في مجموعة Kubernetes باستخدام Helm.
أولاً ، نحتاج إلى تسجيل الريبو مع مجموعة Kubernetes الخاصة بك.
helm repo add nboost https://raw.githubusercontent.com/koursaros-ai/nboost/master/charts/
helm repo updateلنحاول نشر أربع نسخ متماثلة:
helm install --name nboost --set replicaCount=4 nboost/nboost جميع --set الممكنة (القيم. yaml) مدرجة أدناه:
| المعلمة | وصف | تقصير |
|---|---|---|
replicaCount | عدد النسخ المتماثلة للنشر | 3 |
image.repository | اسم صورة nboost | koursaros/nboost |
image.tag | علامة صورة nboost | latest-pt |
args.model | اسم فئة النموذج | nil |
args.model_dir | اسم أو دليل النموذج المحدود | pt-bert-base-uncased-msmarco |
args.qa | ما إذا كان لاستخدام البرنامج المساعد QA | False |
args.qa_model_dir | اسم أو دليل نموذج ضمان الجودة | distilbert-base-uncased-distilled-squad |
args.model | اسم فئة النموذج | nil |
args.host | اسم مضيف الوكيل | 0.0.0.0 |
args.port | منفذ للوكيل للاستماع إليه | 8000 |
args.uhost | اسم مضيف خادم API Search Search | elasticsearch-master |
args.uport | منفذ خادم المنبع | 9200 |
args.data_dir | دليل لنموذج التخزين المؤقت الثنائي | nil |
args.max_seq_len | ماكس طول الرمز المميز | 64 |
args.bufsize | حجم المخزن المؤقت HTTP في البايتات | 2048 |
args.batch_size | حجم الدُفعة للركض من خلال نموذج Rerank | 4 |
args.multiplier | عامل لزيادة النتائج | 5 |
args.workers | عدد المواضيع التي تخدم الوكيل | 10 |
args.query_path | Jsonpath في طلب العثور على الاستعلام | nil |
args.topk_path | Jsonpath للعثور على عدد النتائج المطلوبة | nil |
args.choices_path | Jsonpath للعثور على مجموعة من الخيارات لإعادة ترتيب | nil |
args.cvalues_path | Jsonpath للعثور على قيم STR للخيارات | nil |
args.cids_path | Jsonpath للعثور على هوية الخيارات | nil |
args.search_path | مسار عنوان URL للعلامة ل Reranking عبر NBOOST | nil |
service.type | نوع خدمة Kubernetes | LoadBalancer |
resources | احتياجات الموارد وحدودها للتطبيق على القرنة | {} |
nodeSelector | ملصقات العقدة لتعيين POD | {} |
affinity | إعدادات التقارب لتخصيص POD | {} |
tolerations | ملصقات التسامح لتعيين POD | [] |
image.pullPolicy | سياسة سحب الصورة | IfNotPresent |
imagePullSecrets | أسماء سجل Docker Secret Carray | [] (لا يضيف أسرار سحب الصورة إلى القرون المنشورة) |
nameOverride | سلسلة لتجاوز chart.name | nil |
fullnameOverride | سلسلة لتجاوز chart.fullname | nil |
serviceAccount.create | يحدد ما إذا كان يتم إنشاء حساب خدمة | nil |
serviceAccount.name | اسم حساب الخدمة للاستخدام. إذا لم يتم تعيين وإنشاء صحيح ، يتم إنشاء اسم باستخدام قالب FullName | nil |
serviceAccount.create | يحدد ما إذا كان يتم إنشاء حساب خدمة | nil |
podSecurityContext.fsGroup | معرف المجموعة للحاوية | nil |
securityContext.runAsUser | معرف المستخدم للحاوية | 1001 |
ingress.enabled | تمكين مورد الدخول | false |
ingress.hostName | اسم مضيف التثبيت الخاص بك | nil |
ingress.path | المسار داخل بنية عنوان URL | [] |
ingress.tls | تمكين الدخول مع TLS | [] |
ingress.tls.secretName | سر نوع TLS لاستخدامه | chart-example-tls |
يتم استضافة وثائق NBOOST الرسمية على nboost.readthedocs.io. يتم بناؤه تلقائيًا وتحديثه ورآنه في كل إصدار جديد.
المساهمات موضع تقدير كبير! يمكنك إجراء تصحيحات أو تحديثات والالتزام بها NBOOST. فيما يلي الخطوات:
fix-nboost-typo-1Fix/model-bert: improve the readability and move sectionsFix/model-bert: improve the readability and move sectionsيمكن العثور على مزيد من التفاصيل في إرشادات المساهمين.
إذا كنت تستخدم NBOOST في ورقة أكاديمية ، نود أن يتم الاستشهاد بها. فيما يلي طريقتان للذكر NBOOST:
footnote{https://github.com/koursaros-ai/nboost}
@misc{koursaros2019NBoost,
title={NBoost: Neural Boosting Search Results},
author={Thienes, Cole and Pertschuk, Jack},
howpublished={ url {https://github.com/koursaros-ai/nboost}},
year={2019}
}إذا قمت بتنزيل نسخة من رمز NBOOST الثنائي أو المصدر ، فيرجى ملاحظة أن الكود الثنائي والرمز المصدر NBOOST مرخصان بموجب ترخيص APACHE ، الإصدار 2.0.
Koursaros AI متحمس لجلب هذا البرنامج مفتوح المصدر إلى المجتمع.