Icon

GPT4All - Ein lokaler LLM Vector Store auf Deutsch

Ein lokaler LLM Vector Store auf Deutsch - mit GPT4All und KNIME

KNIME 5.2 unterstützt nun das Erstellen Ihrer eigenen Wissensdatenbank für LLMs, einen lokalen Vektorspeicher (FAISS), um Ihre eigenen Dokumente zu erkunden und sie mit KI zu befragen.

Workflow wurde adaptiert von diesem Beispiel:

https://hub.knime.com/-/spaces/-/~WNe6bb2w2bemYBWE/current-state/

URL: 4 levels of LLM customization - KNIME Blog https://www.knime.com/blog/4-levels-llm-customization
URL: AI Learnathons - KNIME Forum https://forum.knime.com/t/knime-ai-learnathons-are-here/73733
URL: How to Build AI-Powered Data Apps using KNIME - KNIME Webinar https://hopin.com/events/how-to-build-ai-powered-data-apps-using-knime-4bc6c73d-ae97-4c5f-be30-c0d8ea2dd52c
URL: MEDIUM Blog: KNIME, AI and local Large Language Models (LLM) https://medium.com/p/cef650fc142b
URL: GPT4All (download models) https://gpt4all.io/index.html
URL: forum entry (75594) https://forum.knime.com/t/gpt4all-embeddings/75594/5?u=mlauber71
URL: MEDIUM Blog: Creating a Local LLM Vector Store from PDFs with KNIME and GPT4All https://medium.com/p/311bf61dd20e
URL: Mistral-based model for German-language applications https://huggingface.co/TheBloke/em_german_mistral_v01-GGUF
URL: FAISS (Facebook AI Similarity Search) https://ai.meta.com/tools/faiss/
URL: Blog: What’s New in KNIME Analytics Platform 5.2 https://www.knime.com/blog/whats-new-knime-analytics-platform-52
URL: Blog: RLHF: Reinforcement Learning from Human Feedback https://huyenchip.com/2023/05/02/rlhf.html


A) Wissensdatenbank erstellen

Schritt 1: Laden Sie die GPT4All-Modelle herunter, die Sie verwenden möchten

Platzieren Sie Ihre GPT4All-Modelle (.gguf) im Ordner ../gpt4all_models/. [https://gpt4all.io/index.html]

Schritt 2: Wählen Sie Ihr GPT4All-Modell aus

Wählen Sie das Modell (.gguf) aus, das Sie verwenden möchten. Der Name wird automatisch zum Text hinzugefügt.

Schritt 3: PDF-Text in Sätze unterteilen

Suchen, ziehen und setzen Sie den Knoten "Sentence Extractor" ein und führen Sie ihn auf der Spalte "Document" des "PDF Parser"-Knotens aus. Dadurch wird die Dokumentzelle in mehrere Zeilen aufgeteilt: eine Zeile für jeden Satz. Verwenden Sie dann einen "Row Filter"-Knoten, um alle Sätze unter 5 Begriffen zu entfernen.

Schritt 4: Erstellen Sie den Vektor-Speicher

Suchen, ziehen und setzen Sie den Knoten "FAISS Vector Store Creator" ein, verbinden Sie ihn mit dem "GPT4All Embeddings Connector" und Ihrem String-Abschnitts-Ausgang. Führen Sie den Knoten auf der Spalte mit den Strings aus, um den Vektor-Speicher zu erstellen.

Schritt 5: Speichern Sie den Vektor-Speicher

Speichern Sie den Vektor-Speicher, indem Sie einen "Model Writer"-Knoten hinzufügen. Zum korrekten Speichern können Sie einen relativen Pfad verwenden: Wählen Sie "Relative to" und dann "Workflow" und geben Sie den Namen des Vektor-Speichers an, wie zum Beispiel "vector_store.model". Die Modelle können ziemlich groß werden. Seien Sie sich dessen bewusst.

B) Verwendung eines LLM für eine Vervollständigungsaufgabe über die Wissensdatenbank

Schritt 1: Laden Sie das ausgewählte GPT4All-Modell

Laden Sie das Modell in den GPT4All Chat Model Connector. Hier können Sie die Flow Variable von der linken Seite verwenden.

Schritt 2: Übernehmen Sie die Wissensdatenbank aus dem Vektor-Speicher

Der Model Reader-Knoten liest aus dem Workflow-Datenbereich den Vektor-Speicher, den Sie zuvor erstellt haben. Das erneute Lesen des Vektor-Speichers von der Festplatte ist eine gute Praxis, um zu lernen, wie man mit einer festen Wissensdatenbank arbeitet. Sie können auch den Ausgang des FAISS Vector Store Creator aus Teil A) verwenden.

Schritt 3: Überprüfen und falls nötig bearbeiten Sie den Prompt

Sie möchten vielleicht einige Informationen und Anweisungen rund um die Frage, die Sie stellen möchten, bearbeiten.

Schritt 4: Verbinden Sie sich mit dem Vector Store Retriever und dem LLM Prompter, führen Sie die Fragen durch das Modell und den Vektor-Speicher

Ziehen Sie den Vector Store Retriever-Knoten und den LLM Prompter-Knoten ein, fügen Sie dazwischen einen String Manipulation-Knoten für Prompt Engineering ein.

Schritt 5: Exportieren Sie die Ergebnisse in eine Excel-Datei

Sie können die Tabelle über einen Excel Writer-Knoten speichern. Optional können Sie mit einem Table View-Knoten die Antworten des LLM und die, die wir mit den Fragen zum Vergleich importiert haben, gegenüberstellen.

Schritt 6: Überprüfen Sie die Ergebnisse

Überprüfen und vergleichen Sie die Ergebnisse.

=> Je nach LLM Modell können andere Prompts und Anweisungen hilfreich sein

Original adaptiert von diesem Workflow "KNIME GenAI Learnathon - Build a Chat Bot on a Knowledge Base - Solution"

https://hub.knime.com/-/spaces/-/~WNe6bb2w2bemYBWE/current-state/

MEDIUM Blog: KNIME, AI and local Large Language Models (LLM)

https://medium.com/p/cef650fc142b

Ein lokaler LLM Vector Store auf Deutsch - mit GPT4All und KNIME

[Bitte laden Sie die gesamte Workflow-Gruppe herunter - https://hub.knime.com/-/spaces/-/latest/~17k4zAECNryrZw1X/]


GPT4All ist ein Ökosystem zum Trainieren und Bereitstellen leistungsfähiger und maßgeschneiderter großer Sprachmodelle, die lokal auf Verbraucher-CPUs laufen. Das Ziel ist einfach - das beste anweisungsoptimierte Assistenten-Stil-Sprachmodell zu sein, das jede Person oder jedes Unternehmen frei nutzen, verteilen und darauf aufbauen kann.

Den Installer für GPT4All finden Sie hier (https://gpt4all.io/index.html). Benötigt wird mindestens KNIME 5.2 (https://www.knime.com/blog/whats-new-knime-analytics-platform-52).


Sie benötigen auch die KNIME AI Extension - wenn Sie sich hinter einer Firewall befinden, sehen Sie sich das unten stehende Kästchen an.

Um mehr über den Workflow zu erfahren, klicken Sie auf die linke Leiste und überprüfen Sie den Beschreibungsbereich. Weitere Modelle: https://gpt4all.io/index.html

Wenn Sie sich hinter einer Firewall befinden, müssen Sie möglicherweise zusätzliche Schritte unternehmen, um KNIME Python-basierte Erweiterungen wie "LLM Prompter" zu laden.

Es gibt ein Ticket, um das Proxy-Problem für Python-basierte Erweiterungen zu beheben (AP-20960):

https://forum.knime.com/t/knime-ai-extension-proxy-settings-are-not-taken-over/72391/3?u=mlauber71

C) 'Live'-Chat mit Ihrem GPT4All-Modell unter Verwendung des Vektor-Speichers

Schritt 1: Laden Sie das Modell und den Vektor-Speicher wie zuvor

Laden Sie das Modell in den GPT4All Chat Model Connector. Hier können Sie die Flow Variable von der linken Seite verwenden.

Schritt 2: Wählen Sie die anfängliche Rolle für den Prompt und die Anzahl der zu durchsuchenden Dokumente aus

Neben Ihrer präzisen Frage sollte eine Rolle definiert werden und einige zusätzliche Anweisungen gegeben sein.

MEDIUM Blog: Creating a Local LLM Vector Store from PDFs with KNIME and GPT4All

https://medium.com/p/311bf61dd20e

RLHF: Reinforcement Learning from Human Feedback

May 2, 2023 • Chip Huyen

https://huyenchip.com/2023/05/02/rlhf.html

Mistral-basiertes deutschsprachiges LLM Modell

https://huggingface.co/TheBloke/em_german_mistral_v01-GGUF

Aktuell gibt es einen Bug, dass wenn keine Internet Verbindung besteht die GPT4All Modelle dennoch deren Server aufrufen

(ein Ticket ist erstellt das zu beheben: AP-21736)

https://forum.knime.com/t/community-nodes-knime-ai-extensions-gpt4all-connectors-bug-when-used-offline/76021?u=mlauber71


Ein Workaround ist eine Option in einer Python Datei zu setzen:

https://forum.knime.com/t/community-nodes-knime-ai-extensions-gpt4all-connectors-bug-when-used-offline/76021/6?u=mlauber71

die vorbereiteten Fragen werdenin einem Durchgang beantwortet"engineered_prompt"
LLM Prompter
../documents/stefan zweig/romane_stefan_zweig_saetze.table
Table Writer
aktueller Zeitstempel
Create Date&Time Range
Sätze vorbereiten ...all-MiniLM-L6-v2
Embedding Modell
Facebook AI Similarity Searchhttps://ai.meta.com/tools/faiss/
FAISS Vector Store Creator
../script/fragen_stefan_zweig.xlsx
Excel Reader
knowledge base../model/vector_store_german_stefan_zweig.model
Model Reader
chat als .tablespeichern mit timestamp
Table Writer
../model/vector_store_german_stefan_zweig.model
Model Writer
Excel Writer
../documents/stefan zweig/stefan_zweig_romane_aufbereitet.table
Table Writer
Column Appender
Table to HTML (legacy)
../documents/stefan zweig/romane_stefan_zweig_saetze.table
Table Reader
Antworten vergleichen
Table View (JavaScript)
Nur LLM-Antwort
Column Filter
Jeder Satz wird alseine Zeile ausgegeben
Sentence Extractor
Sätze mit weniger als 5 Worten werden entfernt
Row Filter (deprecated)
../gpt4all_models/Standard:em_german_mistral_v01.Q4_0(LLM Modell für Deutsch)
prepare GPT4all model path
<...model name...>.gguf .gguf Model ladenbenötigt KNIME 5.3+
Local GPT4All Chat Model Connector
Date&Time Part Extractor
Texte extrahieren aus Romanenvon Stefan Zweig../documents/stefan zweig/German Tokenizer verwenden!!Ggf. Unterstützung für Deutschinstallieren
PDF Parser
Anzahl der Treffer die je Frage aus demFAISS Vector Store geladen werden(10)
Vector Store Retriever
!!! Der eigentliche Prompthier kann es sich lohnenzu testen was Sinn macht"engineered_prompt"
String Manipulation
Öffnen mit Doppelklick
Prompt Engineering Hinweise
Column Filter
Komplexere Aufbereitungjeweils x Sätze werden zu einem Block zusammen gefasst
Component
Chat mit GPT4all Model und dem deutschsprachigen Dokument
Fragen beibehalten undLLM-Antwort
Column Filter
leere Dateium die Ergebnissezu sammeln
Table Creator
chat als .tablespeichern mit timestamp
Table Writer
den gespeicherten chat mit GPT4All laden
Table Reader

Nodes

Extensions

Links