Costruire un sistema di QA intelligente con NLP e Milvus
Progetto Milvus:github.com/milvus-io/milvus
Il sistema di risposta alle domande è comunemente usato nel campo dell'elaborazione del linguaggio naturale. Viene utilizzato per rispondere a domande sotto forma di linguaggio naturale e ha un'ampia gamma di applicazioni. Le applicazioni tipiche includono: interazione vocale intelligente, servizio clienti online, acquisizione di conoscenza, chat emotiva personalizzata e altro ancora. La maggior parte dei sistemi di risposta alle domande può essere classificata come: sistemi di risposta alle domande generativi e basati su recupero, sistemi di risposta alle domande a turno singolo e a più turni, sistemi di risposta alle domande aperte e sistemi di risposta a domande specifiche.
Questo articolo tratta principalmente di un sistema QA progettato per un campo specifico, solitamente chiamato robot intelligente per il servizio clienti. In passato, la creazione di un robot per il servizio clienti richiedeva solitamente la conversione della conoscenza di dominio in una serie di regole e grafi della conoscenza. Il processo di costruzione si basava fortemente sull'intelligenza “umana”. Una volta cambiate le scene, sarebbe stata necessaria una grande quantità di lavoro ripetitivo. Con l'applicazione del deep learning nell'elaborazione del linguaggio naturale (NLP), la lettura automatica può trovare automaticamente risposte a 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 creare rapidamente un bot Q&A basato sulla comprensione semantica.
Architettura complessiva
Questo articolo implementa un sistema di risposta alle domande tramite 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).
- Usare il modello BERT per convertire queste domande in vettori di caratteristiche e archiviarli in Milvus. E Milvus assegnerà contemporaneamente un ID vettore a ciascun vettore di caratteristiche.
- Archiviare questi ID delle domande rappresentative e le relative 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 le linee gialle rappresentano il processo di interrogazione):
Figura 1.
Successivamente, ti mostreremo come costruire un sistema Q&A online passo dopo passo.
Passaggi per costruire il sistema Q&A
Prima di iniziare, è necessario installare Milvus e PostgreSQL. Per i passaggi specifici di installazione, consultare il sito ufficiale di Milvus.
1. Preparazione dei dati
I dati sperimentali 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 ne estraiamo 20.000 coppie di domande e risposte. Attraverso questo set di dati di domande e risposte, puoi costruire rapidamente un robot per il servizio clienti per il settore assicurativo.
2. Generare vettori di caratteristiche
Questo sistema utilizza un modello che BERT ha preaddestrato. Scaricalo dal link qui sotto prima di avviare un servizio: https://storage.googleapis.com/bert_models/2018_10_18/cased_L-24_H-1024_A-16.zip
Usa questo modello per convertire il database delle domande in vettori di caratteristiche per future ricerche di similarità. Per ulteriori informazioni sul servizio BERT, vedere https://github.com/hanxiao/bert-as-service.
Figura 2.
3. Importare 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 è mostrata la struttura della tabella in PostgreSQL:
Figura 3.
Figura 4.
4. Recuperare le risposte
L'utente inserisce una domanda e, dopo aver generato il vettore delle caratteristiche tramite BERT, può trovare la domanda più simile nella libreria Milvus. Questo articolo utilizza la distanza coseno per rappresentare la similarità tra due frasi. Poiché tutti i vettori sono normalizzati, più la distanza coseno dei due vettori delle caratteristiche è vicina a 1, maggiore è la similarità.
In pratica, il tuo sistema potrebbe non avere domande perfettamente corrispondenti nella libreria. In tal caso, puoi impostare una soglia di 0,9. Se la massima distanza di similarità recuperata è inferiore a questa soglia, il sistema segnalerà che non include domande correlate.
Figura 5.
Dimostrazione del sistema
Di seguito è mostrata un'interfaccia di esempio del sistema:
Figura 6.
Inserisci la tua domanda nella finestra di dialogo e riceverai una risposta corrispondente:
Figura 7.
Riepilogo
Dopo aver letto questo articolo, speriamo che tu trovi facile costruire il tuo sistema di Q&A.
Con il modello BERT, non è più necessario ordinare e organizzare in anticipo i corpora testuali. Allo stesso tempo, grazie alle alte prestazioni e all'elevata scalabilità del motore di ricerca vettoriale open source Milvus, il tuo sistema QA può supportare un corpus fino a centinaia di milioni di testi.
Milvus ha ufficialmente aderito alla Linux AI (LF AI) Foundation per l'incubazione. Sei invitato a unirti alla community Milvus e a lavorare con noi per accelerare l'applicazione delle tecnologie di AI!
=> Prova la nostra demo online qui: https://www.milvus.io/scenarios
Continua a leggere

A Developer's Guide to Exploring Milvus 2.6 Features on Zilliz Cloud
Milvus 2.6 marks a shift from “vector search + glue code” to a more advanced retrieval engine, and it is now Generally Available (GA) on Zilliz Cloud (a managed Milvus service).

Zilliz Cloud BYOC Now Available Across AWS, GCP, and Azure
Zilliz Cloud BYOC is now generally available on all three major clouds. Deploy fully managed vector search in your own AWS, GCP, or Azure account — your data never leaves your VPC.

Introducing Zilliz MCP Server: Natural Language Access to Your Vector Database
Developers can easily manage and query vector databases with natural language via Zilliz MCP Server in AI-native environments.



