เครื่องมือค้นหาความหมายที่เขียนด้วย Java เป็นโครงการมหาวิทยาลัย
คำเตือน
โครงการนี้ ไม่พร้อมการผลิตอย่างแน่นอน มันได้รับการพัฒนาเป็นโครงการมหาวิทยาลัยเพื่อเป็นหลักฐานของแนวคิด หากคุณเห็นข้อความนี้หมายความว่าฉันกำลังพัฒนาโครงการรุ่นใหม่นี้แล้วซึ่งขึ้นอยู่กับสถาปัตยกรรม Microservice และได้รับการปรับให้เหมาะสมมากขึ้น
คุณต้องกำหนด env vars บางอย่าง:
export MILVUS_HOST=localhost MILVUS_PORT=19530 MONGODB_URI=mongodb://localhost:27017/ RABBITMQ_HOST=localhost RABBITMQ_USERNAME=user RABBITMQ_PASSWORD=pass MODEL_PATH=models/model.onnx คุณต้องมีรูปแบบการฝังในรูปแบบ ONNX ฉันใช้รุ่นนี้: cointegrated/labse-en-ru ในการแปลงฉันใช้ยูทิลิตี้จากบทความนี้: ส่งออกไปยัง ONNX นอกจากนี้คุณสามารถใช้โมเดลการฝังตัวในรูปแบบ ONNX ด้วยมิติเวกเตอร์ที่ 768 ใส่โมเดลในโฟลเดอร์รุ่นเช่น models/model.onnx
สร้างและเรียกใช้โครงการด้วย:
./gradlew runAPI จะพร้อมใช้งานบนพอร์ต 4567
บันทึก
โครงการนี้เขียนขึ้นโดยเน้นความจริงที่ว่ามันเป็นไปได้ที่จะเรียกใช้คนงานดัชนีมากเท่าที่คุณต้องการ แต่เนื่องจากกำหนดเวลาที่แน่นหนาจึงมีเวลาไม่เพียงพอสำหรับการปรับให้เหมาะสมและผู้ปฏิบัติงานดัชนีแต่ละคนจะโหลดโมเดลลงในหน่วยความจำ วิ่งด้วยความระมัดระวัง!
ผังงาน TD
คุณ (ผู้ใช้)
A (API ผู้ใช้)
S (บริการค้นหา)
ฉัน (บริการดัชนี)
E (โมเดลฝัง)
DM [(Mongo)]
DV [(Milvus)]
r [(rabbitmq)]]
U -> | คำขอ API | อัน
A -> | ส่งงานการจัดทำดัชนีไปยังคิว | R
r -> | รับงาน | ฉัน
i -> | คีย์เวิร์ดจัดเก็บ | DM
i -> | สร้างงานการจัดทำดัชนีเพิ่มเติม | R
i -> | แยกออกจากข้อความ | อี
e -> | ร้านค้าฝัง | DV
A -> | คำขอค้นหา | S
s -> | แยกออกจากการสืบค้น | อี
s -> | Query โดยคำหลัก | DM
S -> | Query โดย Embedding | DV