Allgemeine Architektur
Milvus-Projekt:github.com/milvus-io/milvus
Das System zur Beantwortung von Fragen wird häufig im Bereich der Verarbeitung natürlicher Sprache eingesetzt. Es wird zur Beantwortung von Fragen in Form von natürlicher Sprache verwendet und hat eine breite Palette von Anwendungen. Typische Anwendungen sind: intelligente Sprachinteraktion, Online-Kundendienst, Wissenserwerb, personalisierter emotionaler Chat und vieles mehr. Die meisten Fragebeantwortungssysteme lassen sich in generative und Retrieval-Fragebeantwortungssysteme, Ein-Runden-Fragebeantwortungssysteme und Mehr-Runden-Fragebeantwortungssysteme, offene Fragebeantwortungssysteme und spezifische Fragebeantwortungssysteme einteilen.
Dieser Artikel befasst sich hauptsächlich mit einem QS-System, das für einen bestimmten Bereich entwickelt wurde, der gewöhnlich als intelligenter Kundendienstroboter bezeichnet wird. In der Vergangenheit erforderte der Aufbau eines Kundendienstroboters in der Regel die Umwandlung des Domänenwissens in eine Reihe von Regeln und Wissensgraphen. Der Konstruktionsprozess stützt sich stark auf "menschliche" Intelligenz. Mit der Anwendung von Deep Learning in der Verarbeitung natürlicher Sprache (NLP) kann maschinelles Lesen automatisch Antworten auf passende Fragen direkt aus Dokumenten finden. Das Deep-Learning-Sprachmodell wandelt die Fragen und Dokumente in semantische Vektoren um, um die passende Antwort zu finden.
Dieser Artikel verwendet das Open-Source-Modell BERT von Google und Milvus, eine Open-Source-Vektorsuchmaschine, um schnell einen auf semantischem Verständnis basierenden Q&A-Bot zu erstellen.
Allgemeine Architektur
Dieser Artikel implementiert ein System zur Beantwortung von Fragen durch semantischen Ähnlichkeitsabgleich. Der allgemeine Konstruktionsprozess sieht wie folgt aus:
- Sammeln Sie eine große Anzahl von Fragen mit Antworten in einem bestimmten Bereich (ein Standardfragensatz).
- Verwenden Sie das BERT-Modell, um diese Fragen in Merkmalsvektoren umzuwandeln und sie in Milvus zu speichern. Gleichzeitig weist Milvus jedem Merkmalsvektor eine Vektor-ID zu.
- Speichern Sie diese repräsentativen Frage-IDs und ihre entsprechenden Antworten in PostgreSQL.
Wenn ein Benutzer eine Frage stellt:
- Das BERT-Modell wandelt sie in einen Merkmalsvektor um.
- Milvus führt eine Ähnlichkeitssuche durch und findet die ID, die der Frage am ähnlichsten ist.
- PostgreSQL gibt die entsprechende Antwort zurück.
Das Diagramm der Systemarchitektur sieht wie folgt aus (die blauen Linien stellen den Importprozess und die gelben Linien den Abfrageprozess dar):
1-system-architecture-milvus-bert-postgresql.png
Als Nächstes werden wir Ihnen zeigen, wie Sie ein Online-Q&A-System Schritt für Schritt aufbauen können.
Schritte zum Aufbau des Q&A-Systems
Bevor Sie beginnen, müssen Sie Milvus und PostgreSQL installieren. Die genauen Installationsschritte finden Sie auf der offiziellen Website von Milvus.
1. Vorbereitung der Daten
Die experimentellen Daten in diesem Artikel stammen von: https://github.com/chatopera/insuranceqa-corpus-zh
Der Datensatz enthält Frage- und Antwortdatenpaare aus der Versicherungsbranche. In diesem Artikel werden 20.000 Frage-Antwort-Paare aus dem Datensatz extrahiert. Mithilfe dieses Frage- und Antwortdatensatzes können Sie schnell einen Kundendienstroboter für die Versicherungsbranche erstellen.
2. Erzeugen von Merkmalsvektoren
Dieses System verwendet ein Modell, das vom BERT vortrainiert wurde. Laden Sie es unter folgendem Link herunter, bevor Sie einen Dienst starten: https://storage.googleapis.com/bert_models/2018_10_18/cased_L-24_H-1024_A-16.zip
Verwenden Sie dieses Modell, um die Fragendatenbank in Merkmalsvektoren für die zukünftige Ähnlichkeitssuche umzuwandeln. Weitere Informationen über den BERT-Dienst finden Sie unter https://github.com/hanxiao/bert-as-service.
2-code-block.png
3. Importieren in Milvus und PostgreSQL
Normalisieren und importieren Sie die generierten Feature-Vektoren in Milvus und importieren Sie dann die von Milvus zurückgegebenen IDs und die entsprechenden Antworten in PostgreSQL. Die folgende Abbildung zeigt die Tabellenstruktur in PostgreSQL:
3-import-milvus-postgresql.png
4-import-milvus-postgresql.png
4. Abrufen von Antworten
Der Benutzer gibt eine Frage ein, und nachdem der Merkmalsvektor durch BERT generiert wurde, kann er die ähnlichste Frage in der Milvus-Bibliothek finden. Dieser Artikel verwendet den Kosinusabstand, um die Ähnlichkeit zwischen zwei Sätzen darzustellen. Da alle Vektoren normalisiert sind, ist die Ähnlichkeit umso größer, je näher der Kosinusabstand der beiden Merkmalsvektoren bei 1 liegt.
In der Praxis kann es vorkommen, dass Ihr System keine perfekt übereinstimmenden Fragen in der Bibliothek hat. Dann können Sie einen Schwellenwert von 0,9 festlegen. Wenn der größte ermittelte Ähnlichkeitsabstand unter diesem Schwellenwert liegt, meldet das System, dass es keine verwandten Fragen enthält.
4-abrufen-antworten.png
System-Demonstration
Die folgende Abbildung zeigt eine Beispielschnittstelle des Systems:
5-milvus-QA-system-anwendung.png
Geben Sie Ihre Frage in das Dialogfeld ein und Sie erhalten eine entsprechende Antwort:
5-milvus-QA-system-anwendung-2.png
Zusammenfassung
Wir hoffen, dass es Ihnen nach der Lektüre dieses Artikels leicht fällt, Ihr eigenes Q&A-System aufzubauen.
Mit dem BERT-Modell müssen Sie die Textkorpora nicht mehr vorher sortieren und organisieren. Gleichzeitig kann Ihr QA-System dank der hohen Leistung und der hohen Skalierbarkeit der Open-Source-Vektorsuchmaschine Milvus einen Korpus von bis zu Hunderten von Millionen von Texten unterstützen.
Milvus ist offiziell der Linux AI (LF AI) Foundation zur Inkubation beigetreten. Sie sind herzlich eingeladen, der Milvus-Community beizutreten und mit uns zusammenzuarbeiten, um die Anwendung von KI-Technologien zu beschleunigen!
=> Testen Sie unsere Online-Demo hier: 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