Chatte Mit Deinen Lokalen Dokumenten Chatte Mit Deinen Lokalen Dokumenten

Chatte mit deinen lokalen Dokumenten

Einführung

Willkommen zu einer einfachen Anleitung, wie du PrivateGPT auf deinem Apple Silicon Mac (ich habe einen M1 benutzt) mit Mistral Instruct als LLM (Language Learning Model) über LM Studio ausführen kannst.

Hinweis: Diese Anleitung ähnelt dem Prozess, den ich für die Einrichtung von Ollama mit PrivateGPT erstellt habe.

Chatte mit deinen lokalen Dokumenten

Abbildung: PrivateGPT läuft „openailike“ über LM Studio mit 2-Bit-quantisierten Modellen

PrivateGPT ist ein robustes Tool, das eine API für den Aufbau privater, kontextbezogener KI-Anwendungen bietet. Es ist vollständig kompatibel mit der OpenAI-API und kann kostenlos in lokaler Umgebung genutzt werden.

LM Studio ist ein kostenloses Tool, das die Ausführung von KI auf deinem Desktop mit lokal installierten Open-Source-LLMs ermöglicht. Es enthält eine integrierte Suchoberfläche, um Modelle von Hugging Face zu finden und herunterzuladen, eine Chat-UI in der App und eine lokale Serverlaufzeit, die mit der OpenAI-API kompatibel ist (die wir in dieser Anleitung verwenden werden, um uns mit PrivateGPT zu verbinden).

Diese Anleitung ist dein Leitfaden für die effektive Nutzung dieser Tools. Egal, ob du ein KI-Enthusiast, ein Entwickler oder einfach nur neugierig auf die neuesten Entwicklungen bist, diese Anleitung ist für dich gedacht und soll das Komplexe einfach und das Verwirrende klar machen.

Ich habe diese Anleitung an die PrivateGPT-Installation und die PrivateGPT LLM-Backends angepasst.

LM Studio & Modell installieren

  1. Gehe zu lmstudio.ai und klicke auf „Download“.

Chatte mit deinen lokalen Dokumenten

Abbildung: LM Studio herunterladen

  1. Lade nun ein Modell herunter. Für diese Anleitung verwende ich eine 2-Bit-State-of-the-Art-Quantisierung von Mistral Instruct.

Quantisierung ist eine Technik, die verwendet wird, um die Speicheranforderungen großer Modelle zu reduzieren, indem numerische Werte mit weniger Bits dargestellt werden, während eine akzeptable Genauigkeit beibehalten wird.

Im Kontext von „Inference at the edge“, wo die Computing-Ressourcen wie der Speicher begrenzt sind, ist die Zwei-Bit-Quantisierung gegenüber der Vier-Bit-Quantisierung bevorzugt, aufgrund der beschleunigten Zunahme von Quantisierungsfehlern, wenn die Modellgröße unter vier Bits sinkt. Daher ist die Wahl des kleinsten quantisierten Modells, das in den verfügbaren Speicherplatz passt, eine effiziente Möglichkeit, die Leistung aufrechtzuerhalten.

Weitere Informationen zu dieser Quantisierungsmethode findest du in der Erklärung von Iwan Kawrakow sowie in den PRs 4856 und 4773.

Um das Modell in LM Studio herunterzuladen, suche nach ikawrakow/various-2bit-sota-gguf und lade die 2,2 GB große Datei mistral-instruct-7b-2.43bpw.gguf herunter.

Chatte mit deinen lokalen Dokumenten

Abbildung: mistral-instruct-7b-2.43bpw.gguf in LM Studio herunterladen

LM Studio-Server starten

Im Tab „Local Server“ von LM Studio lädst du das Modell und klickst auf „Start Server“.

Chatte mit deinen lokalen Dokumenten

Abbildung: LM Studio-Server starten

Toll! Jetzt, wo unser Server läuft, können wir mit der Erstellung unserer Umgebung und der Installation von PrivateGPT fortfahren.

Eine Conda-Umgebung erstellen

Du musst Python 3.11 verwenden, da ältere Versionen nicht unterstützt werden.

Erstelle eine neue Umgebung mit dem Befehl conda create -n privategpt python=3.11.

Installiere die neuen Pakete (gib „y“ ein, wenn du dazu aufgefordert wirst) mit conda activate privategpt.

PrivateGPT installieren

Öffne ein neues Terminal und navigiere zu dem Verzeichnis, in dem du den Code von private-gpt installieren möchtest. In meinem Fall habe ich zu meinem Developer-Verzeichnis navigiert: /Users/ingrid/Developer.

Stelle sicher, dass deine Conda-Umgebung (aus dem vorherigen Schritt) aktiv ist.

Klone dann das Repository mit dem Befehl git clone https://github.com/imartinez/privateGPT.

Navigiere zu dem Verzeichnis mit dem Befehl cd privateGPT.

Poetry installieren:

pip install poetry

Make für Skripte installieren:

brew install make

Abhängigkeiten installieren:

poetry install --with ui

Installiere auch die lokalen Abhängigkeiten mit poetry install --with local.

PrivateGPT für die Verwendung von LM Studio konfigurieren

Erstelle die YAML-Datei für LM Studio in privateGPT/settings-vllm.yaml:

  • Öffne die Datei mit nano settings-vllm.yaml.
  • Füge die folgenden Inhalte in die Datei ein:
llm:
  mode: openailike
embedding:
  mode: local
  ingest_mode: simple
local:
  embedding_hf_model_name: BAAI/bge-small-en-v1.5
openai:
  api_base: http://localhost:1234/v1 # LM Studio-Basis-URL
  api_key: EMPTY
  model: mixtral # Dies kann alles sein, was du willst
  • Drücke Strg-O, um die Datei zu schreiben, und Strg-X, um zu beenden.

Stelle nun sicher, dass der Server in LM Studio noch läuft.

Umgebungsvariable festlegen:

Lege deine Umgebungsvariable PGPT_PROFILES fest: export PGPT_PROFILES=vllm (überprüfe sie mit echo $PGPT_PROFILES)

PrivateGPT 2.0 ausführen:

Führe in deinem Terminal make run aus.

Navigiere zu http://0.0.0.0:8001/, um deine Benutzeroberfläche zu sehen.

Chatte mit deinen lokalen Dokumenten

Abbildung: PrivateGPT läuft mistral-instruct-7b-2.43bpw.gguf

Du kannst Dokumente mit der Schaltfläche „Upload File(s)“ hinzufügen. In meinen Tests dauerte es 7 Sekunden, um eine 5-seitige PDF-Datei hochzuladen und in die Vektordatenbank zu verarbeiten, die PrivateGPT standardmäßig verwendet (Qdrant).

Chatte mit deinen lokalen Dokumenten

Abbildung: Wechseln zwischen Modi

Du kannst zwischen den folgenden Modi in der Benutzeroberfläche wechseln:

  • Query Files: Wenn du mit deinen Dokumenten chatten möchtest.
  • Search Files: Findet Abschnitte aus den von dir hochgeladenen Dokumenten, die zu einer Abfrage passen.
  • LLM Chat (no context from files): Einfacher Chat mit dem LLM.

Verwendung eines anderen 2-Bit-quantisierten Modells

Wenn du LM Studio als Modell-Server verwendest, kannst du die Modelle direkt in LM Studio ändern.

Ich habe rocket-3b-2.31bpw.gguf heruntergeladen, das ein weiteres 2-Bit-quantisiertes Modell von ikawrakow ist, aber dieses ist super klein mit nur 807 MB.

Ich bin beeindruckt von der Geschwindigkeit und Qualität!

Chatte mit deinen lokalen Dokumenten

Abbildung: PrivateGPT läuft rocket-3b-2.31bpw.gguf

Wenn du dies tust, ermutige ich dich, weitere dieser winzigen, beeindruckenden Modelle auszuprobieren und mir mitzuteilen, wie es läuft:

Verbesserung der Benutzeroberfläche, um zu sehen, welches Modell läuft

Ich habe festgestellt, dass es hilfreich ist, beim Wechseln der Modelle mehr Informationen aus der YAML-Einstellungsdatei zu ziehen, um sie auf der Benutzeroberfläche anzuzeigen.

Hier ist der Code, um das zu tun (ca. Zeile 413 in private_gpt/ui/ui.py):

def get_model_label() -> str | None:
                    # Bestimme das Modell-Label basierend auf der PGPT_PROFILES-Umgebungsvariable.
                    pgpt_profiles = os.environ.get("PGPT_PROFILES")
                    if pgpt_profiles == "ollama":
                        return settings().ollama.model
                    elif pgpt_profiles == "vllm":
                        return settings().openai.model
                    else:
                        return None
                with gr.Column(scale=7, elem_id="col"):
                    # Bestimme das Modell-Label basierend auf dem Wert von PGPT_PROFILES
                    model_label = get_model_label()
                    if model_label is not None:
                        label_text = (
                            f"LLM: {settings().llm.mode} | Model: {model_label}"
                        )
                    else:
                        label_text = f"LLM: {settings().llm.mode}"
                    _ = gr.ChatInterface(
                        self._chat,
                        chatbot=gr.Chatbot(
                            label=label_text,
                            show_copy_button=True,
                            elem_id="chatbot",
                            render=False,
                            avatar_images=(
                                None,
                                AVATAR_BOT,
                            ),
                        ),
                        additional_inputs=[mode, upload_button, system_prompt_input],
                    )

Jetzt kannst du genau sehen, welches Modell in der Benutzeroberfläche läuft!

Viel Spaß!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert