Arquitectura general
Proyecto Milvus:github.com/milvus-io/milvus
El sistema de respuesta a preguntas se utiliza comúnmente en el campo del procesamiento del lenguaje natural. Se utiliza para responder a preguntas en forma de lenguaje natural y tiene una amplia gama de aplicaciones. Las aplicaciones típicas son: interacción de voz inteligente, atención al cliente en línea, adquisición de conocimientos, chat emocional personalizado, etc. La mayoría de los sistemas de respuesta a preguntas pueden clasificarse en: sistemas de respuesta a preguntas generativos y de recuperación, sistemas de respuesta a preguntas de una sola ronda y sistemas de respuesta a preguntas de varias rondas, sistemas de respuesta a preguntas abiertas y sistemas de respuesta a preguntas específicas.
Este artículo trata principalmente de un sistema de control de calidad diseñado para un campo específico, que suele denominarse robot inteligente de atención al cliente. En el pasado, la construcción de un robot de atención al cliente solía requerir la conversión del conocimiento del dominio en una serie de reglas y grafos de conocimiento. El proceso de construcción depende en gran medida de la inteligencia "humana". Con la aplicación del aprendizaje profundo en el procesamiento del lenguaje natural (PLN), la lectura automática puede encontrar respuestas a preguntas coincidentes directamente a partir de documentos. El modelo lingüístico de aprendizaje profundo convierte las preguntas y los documentos en vectores semánticos para encontrar la respuesta coincidente.
Este artículo utiliza el modelo BERT de código abierto de Google y Milvus, un motor de búsqueda vectorial de código abierto, para construir rápidamente un robot de preguntas y respuestas basado en la comprensión semántica.
Arquitectura general
Este artículo implementa un sistema de respuesta a preguntas a través de la concordancia por similitud semántica. El proceso general de construcción es el siguiente
- Obtener un gran número de preguntas con respuestas en un campo específico ( un conjunto de preguntas estándar).
- Utilizar el modelo BERT para convertir estas preguntas en vectores de características y almacenarlas en Milvus. Y Milvus asignará un ID de vector a cada vector de características al mismo tiempo.
- Almacene estos ID de pregunta representativos y sus correspondientes respuestas en PostgreSQL.
Cuando un usuario formula una pregunta:
- El modelo BERT la convierte en un vector de características.
- Milvus realiza una búsqueda de similitud y recupera el ID más similar a la pregunta.
- PostgreSQL devuelve la respuesta correspondiente.
El diagrama de la arquitectura del sistema es el siguiente (las líneas azules representan el proceso de importación y las líneas amarillas el proceso de consulta):
1-arquitectura-sistema-milvus-bert-postgresql.png
A continuación, le mostraremos cómo construir un sistema de preguntas y respuestas en línea paso a paso.
Pasos para crear el sistema de preguntas y respuestas
Antes de empezar, necesita instalar Milvus y PostgreSQL. Para los pasos específicos de instalación, consulte el sitio web oficial de Milvus.
1. Preparación de los datos
Los datos experimentales de este artículo proceden de: https://github.com/chatopera/insuranceqa-corpus-zh
El conjunto de datos contiene pares de datos de preguntas y respuestas relacionados con el sector de los seguros. En este artículo extraemos de él 20.000 pares de preguntas y respuestas. A través de este conjunto de datos de preguntas y respuestas, puedes construir rápidamente un robot de atención al cliente para el sector de los seguros.
2. Generar vectores de características
Este sistema utiliza un modelo que BERT ha preentrenado. Descárgalo desde el siguiente enlace antes de iniciar un servicio: https://storage.googleapis.com/bert_models/2018_10_18/cased_L-24_H-1024_A-16.zip
Utilice este modelo para convertir la base de datos de preguntas en vectores de características para futuras búsquedas de similitudes. Para más información sobre el servicio BERT, consulte https://github.com/hanxiao/bert-as-service.
2-code-block.png
3. Importar a Milvus y PostgreSQL
Normalice e importe los vectores de características generados a Milvus y, a continuación, importe los ID devueltos por Milvus y las respuestas correspondientes a PostgreSQL. A continuación se muestra la estructura de la tabla en PostgreSQL:
3-import-milvus-postgresql.png
4-importar-milvus-postgresql.png
4. Recuperar respuestas
El usuario introduce una pregunta y, tras generar el vector de características mediante BERT, puede encontrar la pregunta más similar en la biblioteca Milvus. Este artículo utiliza la distancia coseno para representar la similitud entre dos frases. Dado que todos los vectores están normalizados, cuanto más se acerque la distancia coseno de los dos vectores de características a 1, mayor será la similitud.
En la práctica, es posible que su sistema no disponga de preguntas perfectamente coincidentes en la biblioteca. Entonces, puede establecer un umbral de 0,9. Si la mayor distancia de similitud recuperada es inferior a este umbral, el sistema le indicará que no incluye preguntas relacionadas.
4-recuperar-respuestas.png
Demostración del sistema
A continuación se muestra un ejemplo de interfaz del sistema:
5-milvus-QA-sistema-aplicacion.png
Introduzca su pregunta en el cuadro de diálogo y recibirá la respuesta correspondiente:
5-milvus-QA-sistema-aplicación-2.png
Resumen
Después de leer este artículo, esperamos que le resulte fácil construir su propio sistema de preguntas y respuestas.
Con el modelo BERT, ya no es necesario clasificar y organizar de antemano los corpus de texto. Al mismo tiempo, gracias al alto rendimiento y la gran escalabilidad del motor de búsqueda vectorial de código abierto Milvus, su sistema de control de calidad puede soportar un corpus de hasta cientos de millones de textos.
Milvus se ha unido oficialmente a la Fundación Linux AI (LF AI) para su incubación. Le invitamos a unirse a la comunidad Milvus y a trabajar con nosotros para acelerar la aplicación de las tecnologías de IA.
=> Pruebe nuestra demostración en línea aquí: https://www.milvus.io/scenarios
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word