Architettura generale
Progetto Milvus:github.com/milvus-io/milvus
Il sistema di risposta alle domande è comunemente utilizzato nel campo dell'elaborazione del linguaggio naturale. Viene utilizzato per rispondere a domande in forma di linguaggio naturale e ha un'ampia gamma di applicazioni. Le applicazioni tipiche includono: interazione vocale intelligente, servizio clienti online, acquisizione di conoscenze, chat emozionale personalizzata e altro ancora. La maggior parte dei sistemi di risposta alle domande può essere classificata in: sistemi di risposta alle domande generativi e di recupero, sistemi di risposta alle domande a turno singolo e a turno multiplo, sistemi di risposta alle domande aperti e sistemi di risposta alle domande specifici.
Questo articolo si occupa principalmente di un sistema di AQ progettato per un settore specifico, che di solito viene chiamato robot intelligente per il servizio clienti. In passato, la costruzione di un robot di assistenza clienti richiedeva solitamente la conversione della conoscenza del dominio in una serie di regole e grafi di conoscenza. Il processo di costruzione si basa molto sull'intelligenza "umana". Con l'applicazione del deep learning nell'elaborazione del linguaggio naturale (NLP), la lettura automatica può trovare automaticamente le risposte alle domande corrispondenti direttamente dai documenti. Il modello linguistico di deep learning converte le domande e i documenti in vettori semantici per trovare la risposta corrispondente.
Questo articolo utilizza il modello BERT open source di Google e Milvus, un motore di ricerca vettoriale open source, per costruire rapidamente un bot Q&A basato sulla comprensione semantica.
Architettura generale
Questo articolo implementa un sistema di risposta alle domande attraverso la corrispondenza di similarità semantica. Il processo generale di costruzione è il seguente:
- Ottenere un gran numero di domande con risposte in un campo specifico (un set di domande standard).
- Utilizzare il modello BERT per convertire queste domande in vettori di caratteristiche e memorizzarle in Milvus. Milvus assegnerà contemporaneamente un ID vettore a ciascun vettore di caratteristiche.
- Memorizzare questi ID rappresentativi delle domande e le risposte corrispondenti in PostgreSQL.
Quando un utente pone una domanda:
- Il modello BERT la converte in un vettore di caratteristiche.
- Milvus esegue una ricerca di similarità e recupera l'ID più simile alla domanda.
- PostgreSQL restituisce la risposta corrispondente.
Il diagramma dell'architettura del sistema è il seguente (le linee blu rappresentano il processo di importazione e quelle gialle il processo di interrogazione):
1-sistema-architettura-milvus-bert-postgresql.png
Di seguito, vi mostreremo come costruire un sistema di domande e risposte online passo dopo passo.
Passi per costruire il sistema Q&A
Prima di iniziare, è necessario installare Milvus e PostgreSQL. Per i passaggi specifici dell'installazione, consultare il sito ufficiale di Milvus.
1. Preparazione dei dati
I dati sperimentali presentati in questo articolo provengono da: https://github.com/chatopera/insuranceqa-corpus-zh.
Il set di dati contiene coppie di domande e risposte relative al settore assicurativo. In questo articolo vengono estratte 20.000 coppie di domande e risposte. Grazie a questo set di dati di domande e risposte, è possibile costruire rapidamente un robot di assistenza clienti per il settore assicurativo.
2. Generare vettori di caratteristiche
Questo sistema utilizza un modello preaddestrato dal BERT. Scaricatelo dal link sottostante prima di avviare un servizio: https://storage.googleapis.com/bert_models/2018_10_18/cased_L-24_H-1024_A-16.zip.
Il modello viene utilizzato per convertire il database delle domande in vettori di caratteristiche per la futura ricerca di somiglianze. Per ulteriori informazioni sul servizio BERT, vedere https://github.com/hanxiao/bert-as-service.
2-codice-blocco.png
3. Importazione in Milvus e PostgreSQL
Normalizzare e importare i vettori di caratteristiche generati in Milvus, quindi importare gli ID restituiti da Milvus e le risposte corrispondenti in PostgreSQL. Di seguito è riportata la struttura della tabella in PostgreSQL:
3-import-milvus-postgresql.png
4-import-milvus-postgresql.png
4. Recupero delle risposte
L'utente inserisce una domanda e, dopo aver generato il vettore di caratteristiche tramite BERT, può trovare la domanda più simile nella libreria Milvus. Questo articolo utilizza la distanza del coseno per rappresentare la somiglianza tra due frasi. Poiché tutti i vettori sono normalizzati, più la distanza del coseno dei due vettori di caratteristiche è vicina a 1, maggiore è la somiglianza.
In pratica, il sistema potrebbe non avere domande perfettamente corrispondenti nella libreria. Si può quindi impostare una soglia di 0,9. Se la distanza di somiglianza maggiore recuperata è inferiore a questa soglia, il sistema segnalerà di non includere le domande correlate.
4-recupero-risposte.png
Dimostrazione del sistema
Di seguito viene mostrato un esempio di interfaccia del sistema:
5-milvus-QA-system-application.png
Inserite la vostra domanda nella finestra di dialogo e riceverete la risposta corrispondente:
5-milvus-QA-system-application-2.png
Riassunto
Dopo aver letto questo articolo, speriamo che sia facile costruire il proprio sistema Q&A.
Con il modello BERT, non è più necessario ordinare e organizzare preventivamente i corpora di testo. Allo stesso tempo, grazie alle elevate prestazioni e all'alta scalabilità del motore di ricerca vettoriale open source Milvus, il vostro sistema di QA può supportare un corpus di centinaia di milioni di testi.
Milvus si è ufficialmente unito alla Linux AI (LF AI) Foundation per l'incubazione. Siete invitati a unirvi alla comunità di Milvus e a lavorare con noi per accelerare l'applicazione delle tecnologie AI!
=> Provate la nostra demo online qui: 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