Motor de búsqueda semántico escrito en Java como proyecto universitario
Advertencia
Este proyecto no está listo para la producción . Fue desarrollado como un proyecto universitario, como una prueba de concepto. Si ve este mensaje, significa que ya estoy desarrollando una nueva versión de este proyecto, que se basa en una arquitectura de microservicio, y está mucho más optimizado.
Necesitas definir algunos 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 Necesita un modelo de incrustación en formato ONNX. Utilicé este modelo: cointegrado/labse-en-ru. Para convertir, utilicé la utilidad de este artículo: Exportar a ONNX. Además, puede usar cualquier modelo de incrustación en formato ONNX con una dimensión vectorial de 768. Coloque el modelo en una carpeta de modelos, como models/model.onnx
Construir y ejecutar el proyecto con:
./gradlew runLa API estará disponible en el puerto 4567
Nota
El proyecto fue escrito con énfasis en el hecho de que será posible ejecutar tantos trabajadores de indexación como desee. Pero, debido a los plazos ajustados, no hubo suficiente tiempo para la optimización, y cada trabajador indexador carga un modelo en su memoria. ¡Corre con precaución!
TD de diagrama de flujo
U (usuario)
A (API de usuario)
S (servicio de búsqueda)
I (servicio de indexación)
E (modelo de incrustación)
DM [(Mongo)]
DV [(Milvus)]
R [(Rabbitmq)]
U -> | solicitud de API | A
A -> | Enviar tarea de indexación a la cola | Riñonal
R -> | Recibir tarea | I
I -> | almacenar palabras clave | Dm
I -> | Generar más tareas de indexación | Riñonal
I -> | Extracto del texto | mi
E -> | Tienda Incrustación | Dv
A -> | Solicitud de búsqueda | S
S -> | Extracto de la consulta | mi
S -> | Consulta por palabras clave | Dm
S -> | Consulta por incrustación | Dv