? Kami mencari penguji beta untuk widget asisten virtual kami. Hubungi kami jika Anda tertarik menggunakannya di situs web Anda.
Sorotan • Gambaran Umum • Tolok Ukur • Instal • Memulai • Kubernetes • Dokumentasi • Tutorial • Kontribusi • Catatan Rilis • Blog
⚡ NBOOST adalah platform yang dapat diskalakan, pencarian mesin untuk mengembangkan dan menggunakan model canggih untuk meningkatkan relevansi hasil pencarian.

NBoost memanfaatkan model finetuned untuk menghasilkan mesin pencari saraf khusus domain. Platform ini juga dapat meningkatkan tugas hilir lainnya yang membutuhkan input peringkat, seperti menjawab pertanyaan.
Hubungi kami untuk meminta model khusus domain atau meninggalkan umpan balik
Alur kerja nBoost relatif sederhana. Ambil grafik di atas, dan bayangkan bahwa server dalam kasus ini adalah Elasticsearch.

Dalam permintaan pencarian konvensional , pengguna mengirimkan kueri ke Elasticsearch dan mendapatkan kembali hasilnya.

Dalam permintaan pencarian NBOOST , pengguna mengirimkan kueri ke model . Kemudian, model meminta hasil dari Elasticsearch dan memilih yang terbaik untuk kembali ke pengguna.
? Perhatikan bahwa kami mengevaluasi model pada set yang dibangun secara berbeda dari yang dilatih (MS Marco vs TREC-CAR), menunjukkan generalisasi model ini untuk banyak masalah pencarian dunia nyata lainnya.
| Model yang disesuaikan | Ketergantungan | Set eval | Pencarian Boost [1] | Kecepatan GPU |
|---|---|---|---|---|
nboost/pt-tinybert-msmarco ( default ) | Bing Queries | +45% (0,26 vs 0,18) | ~ 50ms/kueri | |
nboost/pt-bert-base-uncased-msmarco | Bing Queries | +62% (0,29 vs 0,18) | ~ 300 ms/kueri | |
nboost/pt-bert-large-msmarco | Bing Queries | +77% (0,32 vs 0,18) | - | |
nboost/pt-biobert-base-msmarco | biomed | +66% (0,17 vs 0,10) | ~ 300 ms/kueri |
Instruksi untuk mereproduksi di sini.
[1] MRR Dibandingkan dengan BM25, default untuk Elasticsearch. Reranking Top 50.
[2] https://github.com/nyu-dl/dl4marco-bert
Untuk menggunakan salah satu model yang disesuaikan ini dengan nBoost, jalankan nboost --model_dir bert-base-uncased-msmarco misalnya, dan itu akan mengunduh dan cache secara otomatis.
Menggunakan model pemahaman bahasa pra-terlatih, Anda dapat meningkatkan metrik relevansi pencarian dengan hampir 2x dibandingkan dengan hanya pencarian teks, dengan sedikit atau tanpa konfigurasi tambahan. Saat menilai kinerja, seringkali ada tradeoff antara akurasi model dan kecepatan, jadi kami membandingkan kedua faktor ini di atas. Papan peringkat ini sedang dalam proses, dan kami bermaksud melepaskan lebih banyak model canggih!
Ada dua cara untuk mendapatkan nboost, baik sebagai gambar Docker atau sebagai paket PYPI. Untuk pengguna cloud, kami sangat merekomendasikan menggunakan NBOOST melalui Docker .
? Bergantung pada model Anda, Anda harus menginstal masing -masing TensorFlow atau Pytorch Dependencies. Kami mengemasnya di bawah ini.
Untuk menginstal nBoost, ikuti tabel di bawah ini.
| Ketergantungan | ? Buruh pelabuhan | ? Pypi | ? Kubernetes |
|---|---|---|---|
| Pytorch ( disarankan ) | 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 |
| Semua | koursaros/nboost:latest-all | pip install nboost[all] | helm install nboost/nboost --set image.tag=latest-all |
| - ( untuk pengujian ) | koursaros/nboost:latest-alpine | pip install nboost | helm install nboost/nboost --set image.tag=latest-alpine |
Apa pun cara Anda menginstalnya, jika Anda akhirnya membaca pesan berikut setelah $ nboost --help atau $ docker run koursaros/nboost --help , maka Anda siap untuk pergi!

![]() | Proxy adalah inti dari nBoost. Proxy pada dasarnya adalah pembungkus untuk memungkinkan melayani model. Ia dapat memahami pesan yang masuk dari API pencarian tertentu (yaitu Elasticsearch). Ketika proxy menerima pesan, itu meningkatkan jumlah hasil yang diminta klien sehingga model dapat mengulangi set yang lebih besar dan mengembalikan hasil (semoga) yang lebih baik. Misalnya, jika klien meminta 10 hasil yang berkaitan dengan kueri "anjing coklat" dari Elasticsearch, maka proxy dapat meningkatkan permintaan hasil menjadi 100 dan menyaring sepuluh hasil terbaik untuk klien. |
Dalam contoh ini kami akan mengatur proxy untuk duduk di antara klien dan Elasticsearch dan meningkatkan hasilnya!
Jika Anda ingin menjalankan contoh pada GPU, pastikan Anda memiliki TensorFlow 1.14-1.15, Pytorch atau Onnx Runtime dengan CUDA untuk mendukung fungsi pemodelan. Namun, jika Anda hanya ingin menjalankannya di CPU, jangan khawatir. Untuk kedua kasus, jalankan saja:
pip install nboost[pt]? Jika Anda sudah memiliki server Elasticsearch, Anda dapat melewatkan langkah ini!
Jika Anda tidak memiliki Elasticsearch, jangan khawatir! Kami sarankan menyiapkan cluster Elasticsearch lokal menggunakan Docker (asalkan Anda telah menginstal Docker). Pertama, dapatkan gambar ES dengan menjalankan:
docker pull elasticsearch:7.4.2Setelah Anda memiliki gambar, Anda dapat menjalankan server Elasticsearch melalui:
docker run -d -p 9200:9200 -p 9300:9300 -e " discovery.type=single-node " elasticsearch:7.4.2Sekarang kami siap untuk menggunakan proxy saraf kami! Sangat mudah untuk melakukan ini, jalankan:
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?
--uhostdan--uportharus sama dengan server Elasticsearch di atas! Uhost dan Uport adalah kependekan dari hulu-host dan hulu-port (mengacu pada server hulu).
Jika Anda mendapatkan pesan ini: Listening: <host>:<port> , maka kami baik untuk pergi!
NBOOST memiliki alat pengindeksan yang berguna built in ( nboost-index ). Untuk tujuan demonstrasi, akan mengindeks satu set bagian tentang bepergian dan hotel melalui nboost. Anda dapat menambahkan indeks ke server Elasticsearch Anda dengan menjalankan:
travel.csvhadir dengan nboost
nboost-index --file travel.csv --index_name travel --delim , --id_colSekarang mari kita mengujinya! Tekan The Elasticsearch dengan:
curl " http://localhost:8000/travel/_search?pretty&q=passage:vegas&size=2 " Jika hasil Elasticsearch memiliki tag nboost di dalamnya, selamat, itu berhasil!

Mari kita periksa NBOost Frontend . Pergi ke browser Anda dan kunjungi LocalHost: 8000/nboost.
Jika Anda tidak memiliki akses ke browser, Anda dapat
curl http://localhost:8000/nboost/statusuntuk informasi yang sama.

Frontend merekam semua yang terjadi:
localhost:9200 . Untuk meningkatkan jumlah proksi paralel, cukup tingkatkan --workers . Untuk pendekatan penyebaran yang lebih kuat, Anda dapat mendistribusikan proxy melalui Kubernetes (lihat di bawah).

Untuk permintaan mendalam DSL dan solusi API pencarian lainnya (seperti Bing API), lihat dokumen.
Kami dapat dengan mudah menggunakan nboost di kluster Kubernetes menggunakan Helm.
Pertama, kami perlu mendaftarkan repo dengan kluster Kubernetes Anda.
helm repo add nboost https://raw.githubusercontent.com/koursaros-ai/nboost/master/charts/
helm repo updateMari kita coba menggunakan empat replika:
helm install --name nboost --set replicaCount=4 nboost/nboost Semua opsi --set (values.yaml) tercantum di bawah ini:
| Parameter | Keterangan | Bawaan |
|---|---|---|
replicaCount | Jumlah replika yang akan digunakan | 3 |
image.repository | Nama gambar nboost | koursaros/nboost |
image.tag | Tag gambar nBoost | latest-pt |
args.model | Nama kelas model | nil |
args.model_dir | Nama atau Direktori Model Finetuned | pt-bert-base-uncased-msmarco |
args.qa | Apakah akan menggunakan plugin QA | False |
args.qa_model_dir | Nama atau Direktori Model QA | distilbert-base-uncased-distilled-squad |
args.model | Nama kelas model | nil |
args.host | Nama host proxy | 0.0.0.0 |
args.port | Port untuk proxy untuk mendengarkan | 8000 |
args.uhost | Nama host dari server API pencarian hulu | elasticsearch-master |
args.uport | Port dari server hulu | 9200 |
args.data_dir | Direktori untuk Binary Model Cache | nil |
args.max_seq_len | Max Gabungan Panjang Token | 64 |
args.bufsize | Ukuran buffer http dalam byte | 2048 |
args.batch_size | Ukuran batch untuk berjalan melalui model Rerank | 4 |
args.multiplier | Faktor untuk meningkatkan hasil dengan | 5 |
args.workers | Jumlah utas yang menyajikan proxy | 10 |
args.query_path | Jsonpath dalam permintaan untuk menemukan kueri | nil |
args.topk_path | Jsonpath untuk menemukan jumlah hasil yang diminta | nil |
args.choices_path | Jsonpath untuk menemukan serangkaian pilihan untuk dipesan ulang | nil |
args.cvalues_path | Jsonpath untuk menemukan nilai STR dari pilihan | nil |
args.cids_path | Jsonpath untuk menemukan ID pilihan | nil |
args.search_path | Jalur URL untuk menandai reranking melalui nboost | nil |
service.type | Jenis Layanan Kubernetes | LoadBalancer |
resources | Kebutuhan dan Batas Sumber Daya untuk diterapkan pada pod | {} |
nodeSelector | Label simpul untuk penugasan pod | {} |
affinity | Pengaturan afinitas untuk penugasan pod | {} |
tolerations | Label toleran untuk penugasan pod | [] |
image.pullPolicy | Kebijakan tarik gambar | IfNotPresent |
imagePullSecrets | Docker Registry nama rahasia sebagai array | [] (tidak menambahkan rahasia tarik gambar ke pod yang digunakan) |
nameOverride | String untuk mengganti grafik.name | nil |
fullnameOverride | String untuk menimpa chart.fullname | nil |
serviceAccount.create | Menentukan apakah akun layanan dibuat | nil |
serviceAccount.name | Nama akun layanan untuk digunakan. Jika tidak diatur dan buat itu benar, nama dihasilkan menggunakan template fullname | nil |
serviceAccount.create | Menentukan apakah akun layanan dibuat | nil |
podSecurityContext.fsGroup | ID grup untuk wadah | nil |
securityContext.runAsUser | ID pengguna untuk wadah | 1001 |
ingress.enabled | Aktifkan sumber daya Ingress | false |
ingress.hostName | Nama host untuk instalasi Anda | nil |
ingress.path | Jalur dalam struktur URL | [] |
ingress.tls | Aktifkan masuknya dengan TLS | [] |
ingress.tls.secretName | TLS Tipe Secret untuk digunakan | chart-example-tls |
Dokumentasi NBOOST resmi diselenggarakan di nboost.readthedocs.io. Ini secara otomatis dibangun, diperbarui, dan diarsipkan pada setiap rilis baru.
Kontribusi sangat dihargai! Anda dapat melakukan koreksi atau pembaruan dan berkomitmen untuk NBOOST. Inilah langkah -langkahnya:
fix-nboost-typo-1Fix/model-bert: improve the readability and move sectionsFix/model-bert: improve the readability and move sectionsRincian lebih lanjut dapat ditemukan dalam pedoman kontributor.
Jika Anda menggunakan nboost dalam makalah akademik, kami ingin dikutip. Berikut adalah dua cara mengutip 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}
}Jika Anda telah mengunduh salinan Binary NBoost atau kode sumber, harap dicatat bahwa Binary NBoost dan kode sumber keduanya dilisensikan di bawah lisensi Apache, versi 2.0.
Koursaros AI bersemangat untuk membawa perangkat lunak open source ini ke masyarakat.