semantic search coursework
1.0.0
語義搜索引擎用Java作為大學項目編寫
警告
這個項目絕對沒有準備好生產。它是作為大學項目開發的,作為概念證明。如果您看到此消息,則意味著我已經在開發基於微服務體系結構的該項目的新版本,並且更加優化。
您需要定義一些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格式的嵌入模型。我使用了此模型:協整/labse-en-ru。要轉換,我使用了本文中的實用程序:導出到ONNX。此外,您可以使用以向量維度為768的任何onnx格式的嵌入模型。將模型放入模型文件夾中,例如models/model.onnx
建立和運行該項目:
./gradlew runAPI將在港口4567上可用
筆記
該項目的編寫重點是這樣一個事實,即可以根據需要運行任意多的索引工人。但是,由於緊迫的截止日期,沒有足夠的時間進行優化,每個索引工人都將模型加載到其內存中。謹慎行事!
流程圖TD
U(用戶)
(用戶API)
S(搜索服務)
我(索引服務)
E(嵌入模型)
DM [(Mongo)]
DV [(MILVUS)]
R [(RabbitMQ)]
U-> | API請求|一個
A-> |將索引任務發送到隊列| r
R-> |接收任務|我
我 - > |商店關鍵字| DM
我 - > |生成更多索引任務| r
i-> |從文本中提取| e
E-> |商店嵌入| DV
A-> |搜索請求| s
s-> | Query的提取物| e
S-> |通過關鍵字查詢| DM
S-> |通過嵌入|查詢| DV