Haben Sie Probleme mit KI oder Full-Stack-Entwicklung? Unsere Experten sind für Sie da: maßgeschneiderte Beratung, technische Integration und mehr. Erreichen Sie uns unter [email protected].

RAG: Fragenbeantwortung auf Domänenwissen mit semantischer Suche und generativer KI

Die Beantwortung von Fragen auf der Grundlage von Fachwissen (wie interne Dokumentation, Verträge, Bücher usw.) ist eine Herausforderung. In diesem Artikel erforschen wir eine fortschrittliche Technik namens Retrieval-Augmented Generation (RAG), um dies mit großer Genauigkeit zu erreichen, indem wir semantische Suche und Textgenerierung mit Modellen wie ChatDolphin, LLaMA, ChatGPT, GPT-4...

Beantwortung von Fragen

Die Herausforderungen bei der Beantwortung von Fragen zum Domänenwissen

Die Beantwortung von Fragen auf der Grundlage von Fachwissen erfordert, dass Sie dem KI-Modell zunächst einen Kontext übermitteln und dann eine Frage dazu stellen.

Sie könnten zum Beispiel den folgenden Kontext senden:

All NLP Cloud plans can be stopped anytime. You only pay for the time you used the service. In case of a downgrade, you will get a discount on your next invoice.

Nun könnten Sie sich folgende Frage stellen:

When can plans be stopped?

Die KI würde etwa so antworten:

Anytime

Weitere Einzelheiten finden Sie in unserer Dokumentation zur Beantwortung von Fragen hier.

Das Problem bei diesem Ansatz ist, dass der Umfang Ihres Kontexts (d. h. die Größe Ihres Eingabetextes) begrenzt ist. Sie können also nicht Ihr gesamtes Domänenwissen als Kontext senden.

Nehmen wir an, Sie möchten einen Support-Chatbot entwickeln, der alles über Ihre Produktdokumentation weiß, so dass Endbenutzer dem Chatbot jede produktbezogene Frage stellen können, ohne einen echten Supportmitarbeiter zu kontaktieren. Höchstwahrscheinlich besteht Ihre Dokumentation aus mehreren Hunderten oder Tausenden von Wörtern, oder sogar Millionen von Wörtern...

Wir wollen nun untersuchen, wie diese Einschränkung überwunden und die Beantwortung von Fragen bei sehr großen Dokumenten durchgeführt werden kann.

Semantische Suche VS Generative AI

Für die Beantwortung von Fragen können 2 Arten von Technologien eingesetzt werden. Textgenerierung (generative KI) und semantische Suche.

Die erste, die Texterstellung, ist im Grunde das, was ich gerade oben gezeigt habe. Dazu wird normalerweise ein fortgeschrittenes Textgenerierungsmodell wie ChatDolphin, LLaMA, ChatGPT, GPT-4... verwendet. Es ist in der Lage, eine menschliche Frage zu verstehen und auch wie ein Mensch zu antworten. Allerdings funktioniert es nicht bei großen Dokumenten. Die Feinabstimmung eines generativen KI-Modells mit Ihrem Fachwissen würde nicht gut funktionieren, da Feinabstimmung keine gute Technik ist, um einem Modell Wissen hinzuzufügen.

Bei der semantischen Suche geht es im Grunde darum, ein Dokument auf die gleiche Weise zu durchsuchen wie Google, aber auf der Grundlage des eigenen Fachwissens.

Um dies zu erreichen, müssen Sie Ihre internen Dokumente in Vektoren umwandeln (auch als "Einbettungen" bekannt). Dann sollten Sie Ihre Frage ebenfalls in einen Vektor umwandeln und eine Vektorsuche (auch als "semantische Ähnlichkeit" bezeichnet) durchführen, um den Teil Ihres Fachwissens zu finden, der Ihrer Frage am nächsten kommt.

Eine erste Lösung besteht darin, Ihre Einbettungen in einer speziellen Vektordatenbank wie PG Vector zu speichern. Eine andere Lösung besteht darin, Ihr eigenes semantisches Suchmodell mit Ihrem eigenen Domänenwissen zu kodieren und es auf einer GPU einzusetzen (dies ist die Lösung, die wir bei NLP Cloud vorschlagen, da sie die beste Reaktionszeit bietet). Sobald Sie Ihre Vektor-DB bereit haben oder Ihr Modell erstellt ist, können Sie Fragen in natürlicher Sprache stellen, und Ihr KI-Modell wird einen Auszug Ihres Domänenwissens zurückgeben, der Ihre Frage am besten beantwortet.

Die semantische Suche ist in der Regel sehr schnell und relativ kostengünstig. Sie ist auch zuverlässiger als die Feinabstimmungsstrategie der Texterstellung, so dass Sie nicht mit dem Problem der KI-Halluzination konfrontiert werden. Aber sie ist nicht in der Lage, eine Frage richtig zu "beantworten". Sie gibt lediglich ein Stück Text zurück, das eine Antwort auf Ihre Frage enthält. Es liegt dann am Benutzer, den gesamten Text zu lesen, um die Antwort auf seine Frage zu finden.

Weitere Einzelheiten finden Sie in unserer Dokumentation zur semantischen Suche hier.

Die gute Nachricht ist, dass es möglich ist, sowohl die semantische Suche als auch die generative KI zu kombinieren, um fortschrittliche Ergebnisse zu erzielen!

Fragenbeantwortung mit einer Mischung aus semantischer Suche und generativer KI

Zur Beantwortung von Fragen zum Domänenwissen bevorzugen wir bei NLP Cloud folgende Strategie: Zunächst wird eine Anfrage mit der semantischen Suche gestellt, um die Ressourcen abzurufen, die Ihre Frage am besten beantworten, und dann wird die Frage mit Hilfe der Texterstellung auf der Grundlage dieser Ressourcen wie ein Mensch beantwortet.

Nehmen wir an, wir sind ein Wiederverkäufer von HP-Druckern und möchten die Fragen unserer Kunden auf unserer Website beantworten.

Zunächst müssen wir die Einbettungen berechnen und in einer Vektordatenbank speichern oder unser eigenes semantisches Suchmodell erstellen. Hier wird es nur aus 3 Beispielen bestehen, aber im wirklichen Leben kann man bis zu 1 Million Beispiele einbeziehen, wenn man die semantische Suche in der NLP Cloud verwendet. Wir erstellen einfach eine CSV-Datei und fügen das Folgende ein:

HP® LaserJets have unmatched printing speed, performance and reliability that you can trust. Enjoy Low Prices and Free Shipping when you buy now online.
Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert.
HP LaserJet ; Lowest cost per page on mono laser printing. · $319.99 ; Wireless options available. · $109.00 ; Essential management features. · $209.00.

Anschließend laden wir unseren CSV-Datensatz in die NLP Cloud hoch und klicken auf "Modell erstellen". Nach einer Weile ist unser eigenes semantisches Suchmodell, das unser eigenes Domänenwissen enthält, fertig und wir erhalten eine private API-URL, um es zu verwenden.

Stellen wir unserem brandneuen Modell eine Frage mit dem NLP Cloud Python-Client:

import nlpcloud

# We use a fake model name and a fake API key for illustration reasons.
client = nlpcloud.Client("custom-model/5d8e6s8w5", "poigre5754gaefdsf5486gdsa56", gpu=True)
client.semantic_search("How long is the warranty on the HP Color LaserJet Pro?")

Das Modell liefert mit kurzer Reaktionszeit folgende Ergebnisse:

{
"search_results": [
    {
        "score": 0.99,
        "text": "Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."
    },
    {
        "score": 0.74,
        "text": "All consumer PCs and printers come with a standard one-year warranty. Care packs provide an enhanced level of support and/or an extended period of coverage for your HP hardware. All commercial PCs and printers come with either a one-year or three-year warranty."
    },
    {
        "score": 0.68,
        "text": "In-warranty plan · Available in 2-, 3-, or 4-year extension plans · Includes remote problem diagnosis support and Next Business Day Exchange Service."
    },
    ]
}

Jetzt suchen wir die Antwort mit der höchsten Punktzahl heraus (wir könnten auch mehrere Antworten heraussuchen): "Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."

Diese Antwort ist zwar richtig, aber nicht sehr benutzerfreundlich, da der Benutzer einen ziemlich langen Text lesen muss, um die Antwort zu erhalten. Also stellen wir dieselbe Frage noch einmal an unseren Endpunkt zur Beantwortung von Fragen, wobei wir das ChatDolphin-Modell verwenden. Wir werden die Antwort der semantischen Suche als Kontext verwenden:

import nlpcloud

client = nlpcloud.Client("chatdolphin", "poigre5754gaefdsf5486gdsa56", gpu=True)
client.question(
    """How long is the warranty on the HP Color LaserJet Pro?""",
    context="""Every HP printer comes with at least a one-year HP commercial warranty (or HP Limited Warranty). Some models automatically benefit from a three-year warranty, which is the case of the HP Color LaserJet Plus, the HP Color LaserJet Pro, and the HP Color LaserJet Expert."""
)

Sie liefert folgende Antwort:

{
    "answer": "The warranty lasts for three years."
}

Ziemlich gut, oder?

Schlussfolgerung

Trotz der jüngsten Fortschritte bei generativen KI-Modellen wie ChatDolphin, LLaMA, ChatGPT, GPT-4 usw. macht es die begrenzte Anfragegröße unmöglich, diese großartigen Modelle für die Beantwortung von Fragen mit spezifischem Domänenwissen zu verwenden. Die Feinabstimmung dieser Modelle funktioniert für einen solchen Anwendungsfall leider nicht gut...

Eine gute Strategie ist die Implementierung eines RAG-Systems. Beantworten Sie zunächst Ihre Frage, indem Sie Ihre Dokumente in Einbettungen umwandeln und in einer Vektordatenbank speichern, oder erstellen Sie Ihr eigenes semantisches Suchmodell aus Ihren Dokumenten, und verwenden Sie dann ein reguläres, auf generativer KI basierendes Modell zur Beantwortung von Fragen, um eine menschliche Antwort auf die ursprüngliche Frage zu geben.

Wenn Sie diese Strategie umsetzen wollen, zögern Sie nicht, Ihr eigenes semantisches Suchmodell auf NLP Cloud zu erstellen: siehe die entsprechende Dokumentation hier!

Mark
Anwendungsingenieur bei NLP Cloud