🚀 Experimente o Zilliz Cloud, o Milvus totalmente gerenciado, gratuitamente—experimente um desempenho 10x mais rápido! Experimente Agora>>

milvus-logo
LFAI

Arquitetura geral

  • Scenarios
May 12, 2020
milvus

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:

  1. Obter um grande número de perguntas com respostas num campo específico (um conjunto de perguntas padrão).
  2. 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.
  3. Armazene estes IDs de perguntas representativos e as suas respostas correspondentes no PostgreSQL.

Quando um utilizador faz uma pergunta:

  1. O modelo BERT converte-a num vetor de caraterísticas.
  2. O Milvus efectua uma pesquisa de similaridade e recupera o ID mais semelhante à pergunta.
  3. 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 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-code-block.png 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-import-milvus-postgresql.png 3-importar-milvus-postgresql.png

4-import-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 4-retrieve-answers.png

Demonstração do sistema

A seguir mostra-se um exemplo de interface do sistema:

5-milvus-QA-system-application.png 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 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 Started

Like the article? Spread the word

Continue Lendo