Mesin pencari semantik ditulis di Java sebagai proyek universitas
Peringatan
Proyek ini sama sekali tidak siap produksi . Ini dikembangkan sebagai proyek universitas, sebagai bukti konsep. Jika Anda melihat pesan ini, itu berarti bahwa saya sudah mengembangkan versi baru dari proyek ini, yang didasarkan pada arsitektur layanan mikro, dan jauh lebih dioptimalkan.
Anda perlu mendefinisikan beberapa vars env:
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 Anda memerlukan model penyematan dalam format ONNX. Saya menggunakan model ini: kointegrasi/labse-en-ru. Untuk mengonversi, saya menggunakan utilitas dari artikel ini: Ekspor ke ONNX. Anda juga dapat menggunakan model penyematan apa pun dalam format ONNX dengan dimensi vektor 768. Masukkan model dalam folder model, seperti models/model.onnx
Bangun dan jalankan proyek dengan:
./gradlew runAPI akan tersedia di port 4567
Catatan
Proyek ini ditulis dengan penekanan pada fakta bahwa akan dimungkinkan untuk menjalankan sebanyak mungkin pekerja pengindeksan. Tetapi, karena tenggat waktu yang ketat, tidak ada cukup waktu untuk optimasi, dan setiap pengindeksan pekerja memuat model ke dalam memori. Jalankan dengan hati -hati!
Flowchart TD
U (pengguna)
A (API Pengguna)
S (Layanan Pencarian)
I (Layanan Pengindeksan)
E (model penyematan)
DM [(Mongo)]
Dv [(milvus)]
R [(rabbitmq)]
U -> | Permintaan API | A
A -> | Kirim tugas pengindeksan untuk antrian | R
R -> | menerima tugas | SAYA
I -> | Store Kata Kunci | DM
I -> | Hasilkan lebih banyak tugas pengindeksan | R
I -> | Ekstrak dari Teks | E
E -> | Store Embedding | Dv
A -> | Permintaan Pencarian | S
S -> | Ekstrak dari kueri | E
S -> | kueri dengan kata kunci | DM
S -> | kueri dengan menanamkan | Dv