- เรากำลังมองหาเครื่องทดสอบเบต้าสำหรับวิดเจ็ตผู้ช่วยเสมือนของเรา ติดต่อเราหากคุณสนใจที่จะใช้มันบนเว็บไซต์ของคุณ
ไฮไลท์•ภาพรวม•การวัดผล•การติดตั้ง•การเริ่มต้นใช้งาน• Kubernetes •เอกสารประกอบ•บทเรียน•การสนับสนุน•บันทึกย่อ•บล็อก
⚡ nboost เป็นแพลตฟอร์มที่ปรับขนาดได้และเพิ่มเครื่องยนต์สำหรับการพัฒนาและปรับใช้โมเดลที่ทันสมัยเพื่อปรับปรุงความเกี่ยวข้องของผลการค้นหา

NBOOST ใช้ประโยชน์จากโมเดล finetuned เพื่อผลิตเครื่องมือค้นหาประสาทเฉพาะโดเมน แพลตฟอร์มยังสามารถปรับปรุงงานดาวน์สตรีมอื่น ๆ ที่ต้องการการจัดอันดับอินพุตเช่นการตอบคำถาม
ติดต่อเราเพื่อขอโมเดลเฉพาะโดเมนหรือแสดงความคิดเห็น
เวิร์กโฟลว์ของ Nboost นั้นค่อนข้างง่าย ใช้กราฟิกด้านบนและจินตนาการว่าเซิร์ฟเวอร์ในกรณีนี้คือ Elasticsearch

ใน คำขอค้นหาทั่วไป ผู้ใช้จะส่งแบบสอบถามไปยัง Elasticsearch และได้รับผลลัพธ์กลับมา

ใน คำขอค้นหา NBOOST ผู้ใช้จะส่งแบบสอบถามไปยัง รุ่น จากนั้นโมเดลจะขอผลลัพธ์จาก Elasticsearch และเลือกสิ่งที่ดีที่สุดเพื่อกลับไปที่ผู้ใช้
- โปรดทราบว่าเรากำลังประเมินแบบจำลองเกี่ยวกับชุดที่สร้างขึ้นแตกต่างจากที่ได้รับการฝึกฝน (MS Marco vs Trec-Car) แนะนำความสามารถทั่วไปของแบบจำลองเหล่านี้ไปยังปัญหาการค้นหาในโลกแห่งความเป็นจริงอื่น ๆ อีกมากมาย
| รุ่นปรับแต่ง | การพึ่งพาอาศัยกัน | ชุดประเมิน | Boost ค้นหา [1] | ความเร็วใน GPU |
|---|---|---|---|---|
nboost/pt-tinybert-msmarco ( ค่าเริ่มต้น ) | Bing Queries | +45% (0.26 เทียบกับ 0.18) | ~ 50ms/Query | |
nboost/pt-bert-base-uncased-msmarco | Bing Queries | +62% (0.29 เทียบกับ 0.18) | ~ 300 ms/query | |
nboost/pt-bert-large-msmarco | Bing Queries | +77% (0.32 เทียบกับ 0.18) | - | |
nboost/pt-biobert-base-msmarco | ซึ่งถูกชีวภาพ | +66% (0.17 เทียบกับ 0.10) | ~ 300 ms/query |
คำแนะนำสำหรับการทำซ้ำที่นี่
[1] MRR เมื่อเทียบกับ BM25 ซึ่งเป็นค่าเริ่มต้นสำหรับ Elasticsearch Reranking Top 50
[2] https://github.com/nyu-dl/dl4marco-bert
หากต้องการใช้หนึ่งในรุ่นที่ปรับแต่งเหล่านี้ด้วย NBOOST ให้เรียกใช้ nboost --model_dir bert-base-uncased-msmarco เช่นและจะดาวน์โหลดและแคชโดยอัตโนมัติ
การใช้แบบจำลองการทำความเข้าใจภาษาที่ผ่านการฝึกอบรมมาก่อนคุณสามารถเพิ่มการค้นหาตัวชี้วัดที่เกี่ยวข้องได้เกือบ 2 เท่า เมื่อเทียบกับการค้นหาข้อความเพียงเล็กน้อยโดยไม่มีการกำหนดค่าพิเศษ ในขณะที่ประเมินประสิทธิภาพมักจะมีการแลกเปลี่ยนระหว่างความแม่นยำของแบบจำลองและความเร็วดังนั้นเราจึงเปรียบเทียบกับปัจจัยทั้งสองข้างต้น ลีดเดอร์บอร์ดนี้เป็นงานที่กำลังดำเนินอยู่และเราตั้งใจที่จะปล่อยรุ่นที่ทันสมัยมากขึ้น!
มีสองวิธีในการรับ nboost ไม่ว่าจะเป็นภาพนักเทียบท่าหรือเป็นแพ็คเกจ 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 |
| เทนเซอร์โฟลว์ | 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 พร็อกซีนั้นเป็นเครื่องห่อหุ้มเพื่อเปิดใช้งานแบบจำลอง สามารถเข้าใจข้อความที่เข้ามาจาก API Search เฉพาะ (เช่น Elasticsearch) เมื่อพร็อกซีได้รับข้อความจะเพิ่มจำนวนผลลัพธ์ที่ลูกค้าขอให้โมเดลสามารถเปลี่ยนชุดที่ใหญ่ขึ้นและส่งคืนผลลัพธ์ที่ดีกว่า (หวังว่า) ตัวอย่างเช่นหากลูกค้าขอให้ 10 ผลลัพธ์เกี่ยวกับการสืบค้น "สุนัขสีน้ำตาล" จาก Elasticsearch พร็อกซีอาจเพิ่มการร้องขอผลลัพธ์เป็น 100 และกรองผลลัพธ์ที่ดีที่สุดสิบรายการสำหรับลูกค้า |
ในตัวอย่างนี้เราจะตั้งค่าพร็อกซีเพื่อนั่งระหว่างลูกค้าและ Elasticsearch และเพิ่มผลลัพธ์!
หากคุณต้องการเรียกใช้ตัวอย่างบน GPU ตรวจสอบให้แน่ใจว่าคุณมี Tensorflow 1.14-1.15, Pytorch หรือ ONNX Runtime กับ CUDA เพื่อรองรับฟังก์ชั่นการสร้างแบบจำลอง อย่างไรก็ตามหากคุณต้องการเรียกใช้ใน CPU อย่ากังวลกับมัน สำหรับทั้งสองกรณีเพียงแค่เรียกใช้:
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 การค้นหาอื่น ๆ (เช่น Bing API) ดูเอกสาร
เราสามารถปรับใช้ nboost ในคลัสเตอร์ Kubernetes ได้อย่างง่ายดายโดยใช้ Helm
ก่อนอื่นเราต้องลงทะเบียน repo ด้วยกลุ่ม 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 (value.yaml) แสดงอยู่ด้านล่าง:
| พารามิเตอร์ | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
replicaCount | จำนวนแบบจำลองในการปรับใช้ | 3 |
image.repository | ชื่อภาพ nboost | koursaros/nboost |
image.tag | แท็กภาพ nboost | latest-pt |
args.model | ชื่อของคลาสรุ่น | nil |
args.model_dir | ชื่อหรือไดเรกทอรีของโมเดล finetuned | pt-bert-base-uncased-msmarco |
args.qa | ไม่ว่าจะใช้ปลั๊กอิน QA | False |
args.qa_model_dir | ชื่อหรือไดเรกทอรีของโมเดล QA | distilbert-base-uncased-distilled-squad |
args.model | ชื่อของคลาสรุ่น | nil |
args.host | ชื่อโฮสต์ของพร็อกซี | 0.0.0.0 |
args.port | พอร์ตสำหรับพร็อกซีที่จะฟัง | 8000 |
args.uhost | ชื่อโฮสต์ของเซิร์ฟเวอร์ API การค้นหาต้นน้ำ | elasticsearch-master |
args.uport | พอร์ตของเซิร์ฟเวอร์ต้นน้ำ | 9200 |
args.data_dir | ไดเรกทอรีไปยัง Cache Model Binary | 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 | การตั้งค่า Affinity สำหรับการมอบหมาย POD | {} |
tolerations | ฉลากความอดทนสำหรับการกำหนด POD | [] |
image.pullPolicy | นโยบายการดึงภาพ | IfNotPresent |
imagePullSecrets | Docker Registry Secret Secret เป็นอาร์เรย์ | [] (ไม่เพิ่มความลับดึงภาพลงในพ็อดที่ปรับใช้) |
nameOverride | String to Override Chart.name | nil |
fullnameOverride | String to Override Chart.fullname | nil |
serviceAccount.create | ระบุว่ามีการสร้างบัญชีบริการหรือไม่ | nil |
serviceAccount.name | ชื่อของบัญชีบริการที่จะใช้ หากไม่ได้ตั้งค่าและสร้างเป็นจริงชื่อจะถูกสร้างขึ้นโดยใช้เทมเพลต FullName | nil |
serviceAccount.create | ระบุว่ามีการสร้างบัญชีบริการหรือไม่ | nil |
podSecurityContext.fsGroup | ID กลุ่มสำหรับคอนเทนเนอร์ | nil |
securityContext.runAsUser | ID ผู้ใช้สำหรับคอนเทนเนอร์ | 1001 |
ingress.enabled | เปิดใช้งานทรัพยากร Ingress | false |
ingress.hostName | ชื่อโฮสต์ในการติดตั้งของคุณ | nil |
ingress.path | เส้นทางภายในโครงสร้าง URL | [] |
ingress.tls | เปิดใช้งาน Ingress ด้วย TLS | [] |
ingress.tls.secretName | TLS Type Secret ที่จะใช้ | 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 รู้สึกตื่นเต้นที่จะนำซอฟต์แวร์โอเพนซอร์ซนี้มาสู่ชุมชน