Arquitetura geral
Projeto Milvus:github.com/milvus-io/milvus
O sistema de resposta a perguntas é comumente usado no campo do processamento de linguagem natural. É utilizado para responder a perguntas sob a forma de linguagem natural e tem uma vasta gama de aplicações. As aplicações típicas incluem: interação de voz inteligente, serviço de apoio ao cliente em linha, aquisição de conhecimentos, conversação emocional personalizada, entre outras. A maioria dos sistemas de resposta a perguntas pode ser classificada como: sistemas de resposta a perguntas generativas e de recuperação, sistemas de resposta a perguntas de uma ronda e de várias rondas, sistemas de resposta a perguntas abertas e sistemas de resposta a perguntas específicas.
Este artigo trata principalmente de um sistema de GQ concebido para um domínio específico, normalmente designado por robô inteligente de atendimento ao cliente. No passado, a construção de um robô de serviço ao cliente exigia normalmente a conversão do conhecimento do domínio numa série de regras e gráficos de conhecimento. O processo de construção depende fortemente da inteligência "humana". Com a aplicação da aprendizagem profunda no processamento de linguagem natural (PNL), a leitura automática pode encontrar automaticamente respostas a perguntas correspondentes diretamente a partir de documentos. O modelo de linguagem de aprendizagem profunda converte as perguntas e os documentos em vectores semânticos para encontrar a resposta correspondente.
Este artigo utiliza o modelo BERT de código aberto da Google e o Milvus, um motor de pesquisa vetorial de código aberto, para criar rapidamente um bot de perguntas e respostas baseado na compreensão semântica.
Arquitetura geral
Este artigo implementa um sistema de resposta a perguntas através da correspondência de semelhanças semânticas. O processo geral de construção é o seguinte:
- Obter um grande número de perguntas com respostas num campo específico (um conjunto de perguntas padrão).
- Utilizar o modelo BERT para converter estas perguntas em vectores de caraterísticas e armazená-las no Milvus. O Milvus atribui simultaneamente um ID de vetor a cada vetor de caraterísticas.
- Armazene estes IDs de perguntas representativos e as suas respostas correspondentes no PostgreSQL.
Quando um utilizador faz uma pergunta:
- O modelo BERT converte-a num vetor de caraterísticas.
- O Milvus efectua uma pesquisa de similaridade e recupera o ID mais semelhante à pergunta.
- O PostgreSQL devolve a resposta correspondente.
O diagrama da arquitetura do sistema é o seguinte (as linhas azuis representam o processo de importação e as linhas amarelas representam o processo de consulta):
1-system-architecture-milvus-bert-postgresql.png
De seguida, mostramos-lhe como criar um sistema de perguntas e respostas online, passo a passo.
Etapas para criar o sistema de perguntas e respostas
Antes de começar, é necessário instalar o Milvus e o PostgreSQL. Para obter as etapas específicas de instalação, consulte o site oficial do Milvus.
1. Preparação dos dados
Os dados experimentais deste artigo provêm de: https://github.com/chatopera/insuranceqa-corpus-zh
O conjunto de dados contém pares de dados de perguntas e respostas relacionados com o sector dos seguros. Neste artigo, extraímos 20.000 pares de perguntas e respostas. Através deste conjunto de dados de perguntas e respostas, é possível construir rapidamente um robot de serviço ao cliente para o sector dos seguros.
2. Gerar vectores de caraterísticas
Este sistema utiliza um modelo pré-treinado pelo BERT. Descarregue-o a partir da ligação abaixo antes de iniciar um serviço: https://storage.googleapis.com/bert_models/2018_10_18/cased_L-24_H-1024_A-16.zip
Utilize este modelo para converter a base de dados de perguntas em vectores de caraterísticas para uma futura pesquisa de semelhanças. Para mais informações sobre o serviço BERT, consulte https://github.com/hanxiao/bert-as-service.
2-código-bloco.png
3. Importar para Milvus e PostgreSQL
Normalize e importe os vectores de caraterísticas gerados para o Milvus e, em seguida, importe os IDs devolvidos pelo Milvus e as respostas correspondentes para o PostgreSQL. O seguinte mostra a estrutura da tabela no PostgreSQL:
3-importar-milvus-postgresql.png
4-importar-milvus-postgresql.png
4. Recuperar respostas
O utilizador introduz uma pergunta e, depois de gerar o vetor de caraterísticas através do BERT, pode encontrar a pergunta mais semelhante na biblioteca Milvus. Este artigo utiliza a distância cosseno para representar a semelhança entre duas frases. Como todos os vectores são normalizados, quanto mais próxima de 1 for a distância de cosseno dos dois vectores de caraterísticas, maior é a semelhança.
Na prática, o seu sistema pode não ter perguntas com correspondência perfeita na biblioteca. Então, pode definir um limite de 0,9. Se a maior distância de similaridade recuperada for menor do que este limite, o sistema avisará que não inclui perguntas relacionadas.
4-retrieve-answers.png
Demonstração do sistema
A seguir mostra-se um exemplo de interface do sistema:
5-milvus-QA-system-application.png
Introduza a sua pergunta na caixa de diálogo e receberá uma resposta correspondente:
5-milvus-QA-system-application-2.png
Resumo
Depois de ler este artigo, esperamos que seja fácil construir o seu próprio sistema de Q&A.
Com o modelo BERT, já não precisa de ordenar e organizar previamente os corpora de texto. Ao mesmo tempo, graças ao elevado desempenho e à elevada escalabilidade do motor de pesquisa vetorial de código aberto Milvus, o seu sistema de QA pode suportar um corpus de até centenas de milhões de textos.
O Milvus juntou-se oficialmente à Linux AI (LF AI) Foundation para incubação. É bem-vindo a juntar-se à comunidade Milvus e a trabalhar connosco para acelerar a aplicação das tecnologias de IA!
=> Experimente a nossa demonstração em linha aqui: 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