Semantische Suchmaschine in Java als Universitätsprojekt geschrieben
Warnung
Dieses Projekt ist absolut nicht produktionsbereit . Es wurde als Universitätsprojekt als Beweis für das Konzept entwickelt. Wenn Sie diese Nachricht sehen, bedeutet dies, dass ich bereits eine neue Version dieses Projekts entwickle, die auf einer Microservice -Architektur basiert und viel optimierter ist.
Sie müssen einige Env -Vars definieren:
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 Sie benötigen ein Einbettungsmodell im ONNX -Format. Ich habe dieses Modell verwendet: Kointegriert/Labse-en-ru. Um umzuwandeln, habe ich das Dienstprogramm aus diesem Artikel verwendet: Export nach ONNX. Außerdem können Sie jedes Einbettungsmodell im ONNX -Format mit einer Vektordimension von 768 verwenden. Legen Sie das Modell in einen Modelsordner wie models/model.onnx
Erstellen und führen Sie das Projekt mit: durch:: mit:
./gradlew runDie API wird auf Port 4567 verfügbar sein
Notiz
Das Projekt wurde mit Schwerpunkt auf der Tatsache geschrieben, dass es möglich sein wird, so viele Indizierarbeiter zu betreiben, wie Sie möchten. Aufgrund der engen Fristen gab es jedoch nicht genügend Zeit für die Optimierung, und jeder Indexierungsarbeiter lädt ein Modell in seinen Speicher. Mit Vorsicht laufen!
Flussdiagramm TD
U (Benutzer)
A (Benutzer -API)
S (Suchdienst)
Ich (Indexierungsdienst)
E (Einbettungsmodell)
DM [(Mongo)]
DV [(Milvus)]
R [(Rabbitmq)]
U -> | API -Anfrage | A
A -> | Senden Sie die Indexierungsaufgabe an Warteschlange | R
R -> | Aufgabe erhalten | ICH
I -> | Schlüsselwörter speichern | DM
I -> | Generieren Sie mehr Indexierungsaufgaben | R
I -> | aus Text extrahieren | E
E -> | Store -Einbettung | Dv
A -> | Suchanfrage | S
S -> | Auszug aus der Abfrage | E
S -> | Abfrage nach Schlüsselwörtern | DM
S -> | Abfrage durch Einbettung | Dv