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