So erstellen Sie ihren persönlichen Assistenten mit Ollama, Embeddings und Llama2 – lokal und kostenlos

Das Bild zeigt einen Softwareentwickler, der an einem Computer sitzt und Code für eine LangChain-Anwendung schreibt. Der Bildschirm zeigt komplexen Code und ein Diagramm, das die Struktur einer LangChain-Anwendung illustriert. Die Umgebung ist modern und technikorientiert, mit Notizen und Diagrammen zu LangChain an den Wänden. Der Entwickler wirkt fokussiert und engagiert, was die innovative und fortschrittliche Natur der Arbeit mit LangChain widerspiegelt.
Programmierung

 

Einleitung

Willkommen zu diesem spannenden Tutorial, in dem wir die faszinierende Welt der KI-gestützten persönlichen Assistenten erkunden. Unser Ziel ist es, Ihnen zu zeigen, wie Sie mit den fortschrittlichen Technologien Ollama, embeddings und Llama2 Ihren eigenen lokalen persönlichen Assistenten erstellen können. Diese Tools bieten uns die Möglichkeit, maßgeschneiderte Lösungen zu entwickeln, die spezifische Anforderungen und Wünsche erfüllen und Sie die Kontrolle über Ihre Daten behalten. Dabei setzen wir Technologien ein, um die Verarbeitung auf Ihren eigenen PC zu ermöglichen.

In diesem Tutorial führen wir Sie durch die notwendigen Schritte, um genau das zu erreichen. Beginnend mit einer Einführung in die verwendeten Technologien, über die Installation und Konfiguration, bis hin zur Implementierung und Erweiterung der Fähigkeiten Ihres Assistenten. Egal, ob Sie ein erfahrener Entwickler sind oder gerade erst Ihre Reise in die Welt der Programmierung beginnen – wir haben dafür gesorgt, dass jede Phase dieses Leitfadens klar, verständlich und umsetzbar ist.

Tauchen Sie ein in dieses Abenteuer und erschaffen Sie einen Assistenten, der nicht nur auf Ihre Stimme hört, sondern auch Ihre Bedürfnisse versteht und proaktiv auf sie eingeht. Lassen Sie uns gemeinsam die erste Zeile Code schreiben, die den Weg zu Ihrem persönlichen digitalen Begleiter ebnet.

Voraussetzung und Begriffe

In der heutigen digitalen Welt sind persönliche Assistenten nicht mehr nur ein Luxus für die technologische Elite, sondern ein nützliches Werkzeug für jeden, der seine Produktivität steigern möchte. Mit den Fortschritten in der künstlichen Intelligenz (KI) und dem Maschinellen Lernen (ML) ist es nun möglich, einen eigenen, maßgeschneiderten Assistenten zu erstellen, der lokal auf Ihrem Gerät läuft. In diesem Tutorial werden wir die Schritte durchgehen, um mit Hilfe von Ollama, Embeddings und Llama2 einen solchen persönlichen Assistenten zu erstellen. Diese Technologien ermöglichen es uns, leistungsfähige und anpassbare Lösungen zu entwickeln, ohne die Notwendigkeit einer ständigen Internetverbindung oder der Verarbeitung Ihrer Daten auf externen Servern.

Software und Tools

Bevor wir beginnen, stellen Sie sicher, dass Sie folgende Voraussetzungen erfüllt haben:

  • Python: Eine moderne Version von Python installiert, da dies die Grundlage für unsere Programmierung ist.
  • Ollama: Diese spezifischen Libraries sind erforderlich, um unser Projekt zu realisieren. Sie können über Pip oder andere Python-Paketmanager installiert werden.
  • Entwicklungsumgebung: Ein Code-Editor oder eine IDE Ihrer Wahl, um den Code zu schreiben und zu bearbeiten. Wir verwenden Visual Studio Code von Microsoft.

Wissen

Ein grundlegendes Verständnis der folgenden Konzepte ist für dieses Projekt von Vorteil:

Python:

Python ist eine weit verbreitete, interpretierte Hochsprache, die für ihre klare Syntax und Lesbarkeit bekannt ist. Entwickelt von Guido van Rossum und erstmals veröffentlicht im Jahr 1991, zielt Python darauf ab, einen einfachen und intuitiven Ansatz zum Programmieren zu fördern, wodurch es sich besonders gut für Anfänger eignet. Trotz seiner Einfachheit ist Python äußerst mächtig und flexibel, wodurch es in vielen Bereichen von der Webentwicklung über wissenschaftliche und mathematische Anwendungen bis hin zu künstlicher Intelligenz und Maschinellem Lernen eingesetzt wird.

Eines der herausragenden Merkmale von Python ist die umfangreiche Standardbibliothek, die eine breite Palette von Modulen und Funktionen für verschiedene Aufgaben bietet, sowie eine aktive Gemeinschaft, die eine Fülle von Drittanbieter-Bibliotheken und Frameworks beiträgt. Diese Ressourcen ermöglichen es Entwicklern, komplexe Anwendungen mit relativ wenig Code zu erstellen.

Lokale KI-Modelle vs. Cloud-basierte Modelle:

Llama2 und GPT-4 von OpenAI sind beides hochentwickelte Sprachmodelle, aber mit einem wesentlichen Unterschied in ihrer Betriebsweise. Llama2 kann lokal auf Ihrem Computer ausgeführt werden, was bedeutet, dass alle Datenverarbeitungen und Entscheidungen auf Ihrem Gerät erfolgen, ohne dass Daten an externe Server gesendet werden müssen. Dies bietet Vorteile in Bezug auf Datenschutz und Verfügbarkeit. GPT-4 hingegen ist ein Cloud-basiertes Modell, das über das Internet auf die Rechenressourcen von OpenAI zugreift. Dies kann leistungsfähiger sein, erfordert jedoch eine ständige Internetverbindung und birgt mehr Datenschutzbedenken.

Die Varianten von Llama2:

Llama2 ist in mehreren Varianten verfügbar, die sich in ihrer Größe, Leistung und den erforderlichen Ressourcen unterscheiden. Diese Varianten ermöglichen es Benutzern, das Modell auszuwählen, das am besten zu ihren spezifischen Anforderungen passt, sei es in Bezug auf die Rechenkapazität, den Speicherbedarf oder die gewünschte Genauigkeit der Antworten. Die Varianten umfassen:

  • Kleinere Modelle: Diese Modelle sind für Umgebungen konzipiert, in denen die Rechenressourcen begrenzt sind, wie z.B. auf persönlichen Computern oder kleinen Servern. Sie bieten eine schnelle Antwortzeit bei geringerem Ressourcenverbrauch, allerdings auf Kosten der Genauigkeit und der Tiefe der generierten Inhalte.
  • Mittlere Modelle: Sie bieten einen guten Kompromiss zwischen Leistung und Ressourcenverbrauch und sind geeignet für die meisten Anwendungsfälle, bei denen ein ausgewogenes Verhältnis zwischen Antwortqualität und -geschwindigkeit erforderlich ist.
  • Größere Modelle: Diese Varianten sind für Szenarien konzipiert, in denen die höchstmögliche Genauigkeit und Tiefgründigkeit der Antworten erforderlich sind. Sie benötigen erhebliche Rechenressourcen und sind ideal für leistungsstarke Server oder spezialisierte Hardware.

Die Wahl der passenden Llama2-Variante hängt von den spezifischen Bedürfnissen des Projekts, den verfügbaren Ressourcen und dem gewünschten Gleichgewicht zwischen Antwortqualität und Ressourcenverbrauch ab. Durch die Verfügbarkeit verschiedener Varianten bietet Llama2 eine flexible Lösung für eine breite Palette von Anwendungen, von einfachen persönlichen Assistenten bis hin zu komplexen, datenintensiven Aufgaben.

Wir werden die KI-Modelle Lllam2_7B und Llama2_embeddings verwenden.

Embeddings:

Embeddings sind eine Methode im Maschinellen Lernen, um Wörter, Sätze oder sogar ganze Dokumente als Vektoren in einem hochdimensionalen Raum darzustellen. Diese Vektordarstellungen fangen die Bedeutung und die Beziehungen zwischen den Wörtern oder Dokumenten ein. In unserem Kontext werden sie verwendet, um die Effizienz und Genauigkeit unseres Assistenten bei der Verarbeitung und Beantwortung von Anfragen zu verbessern.

RAG (Retrieval-Augmented Generation):

RAG ist eine Technik, die das Generieren von Antworten oder Inhalten durch die Kombination von Informationssuche (Retrieval) und Textgenerierung verbessert. Dabei werden relevante Informationen aus einer Datenquelle abgerufen und als Kontext für die Generierung einer präzisen Antwort verwendet. Diese Methode kann unserem Assistenten helfen, fundiertere und kontextbezogenere Antworten zu liefern.

Mit diesen Voraussetzungen sind Sie gut gerüstet, um in die Erstellung Ihres eigenen lokalen persönlichen Assistenten einzusteigen.

Installation und Setup

Überprüfe deine Python-Installation und nutze Anaconda für virtuelle Umgebungen

Schritt 1: Python-Installation prüfen

Vergewissere dich, dass Python auf deinem System installiert ist. Öffne dazu ein Terminal oder eine Eingabeaufforderung (cmd.exe) und gib den Befehl python ein. Erscheint die Python-Versionsnummer, ist Python bereits installiert.

Schritt 2: Anaconda für virtuelle Umgebungen nutzen (optional)

Fortgeschrittenen Anwendern empfehlen wir die Verwendung von Anaconda. Anaconda ist eine Distribution, die Python und viele nützliche Bibliotheken und Werkzeuge für Data Science und Machine Learning bereits enthält.

Mit Anaconda kannst du virtuelle Umgebungen erstellen. In diesen Umgebungen kannst du verschiedene Python-Versionen und Bibliotheken unabhängig voneinander installieren und nutzen, ohne deine Systemumgebung zu beeinträchtigen.

Vorteile von virtuellen Umgebungen:

  • Vermeidung von Konflikten zwischen verschiedenen Python-Versionen und Bibliotheken
  • Sichere Umgebung zum Testen neuer Software und Bibliotheken
  • Verbesserte Reproduzierbarkeit deiner Forschungsprojekte

Anaconda-Installation:

  1. Lade Anaconda von der offiziellen Website herunter:  https://www.anaconda.com/download
  2. Führe die heruntergeladene Datei aus, um Anaconda zu installieren.
  3. Folge den Anweisungen auf dem Bildschirm.

Hinweis:

Weitere Informationen zur Verwendung von Anaconda und virtuellen Umgebungen findest du in der Anaconda-Dokumentation: https://docs.anaconda.com/

Installation von Ollama

Ollama gibt es für verschiedene Betriebssysteme. Das Tutorial verwendet Windows als Betriebssystem, wir werden daher die Ollama Version für Windows installieren.

Ollama für Windows installieren

Schritt 1: Ollama herunterladen

  1. Öffne die Ollama-Website:  https://ollama.com/
  2. Klicke auf “Download”.
  3. Wähle die Option “Windows (Preview)”.
  4. Speichere die Installationsdatei auf deinem Computer.

Schritt 2: Ollama installieren

  1. Doppelklicke auf die heruntergeladene Installationsdatei.
  2. Folge den Anweisungen auf dem Bildschirm.

Schritt 3: Ollama starten

  1. Öffne ein Terminal oder eine Eingabeaufforderung.
  2. Gib den Befehl ollama pull nomic-embed-text
  3. Gib den Befehl ollama pull llama2

Jetzt geht’s ans Programmieren

Wir verwenden im Tutorial Visual Studio Code von Microsoft. Der universelle Editor ist kostenlos verfügbar, flexibel erweiterbar und auf allen gängigen Betriebssystemen verfügbar.

Installation von erforderlichen Paketen

Zuerst müssen wir die erforderlichen Pakete installieren:

pip install langchain langchain-community langchain-core

pip install gradio

Code

Importieren der Bibliotheken

from langchain_community.document_loaders import WebBaseLoader, PyPDFLoader

from langchain_community.vectorstores import Chroma

from langchain_community import embeddings

from langchain_community.chat_models import ChatOllama

from langchain_core.runnables import RunnablePassthrough

from langchain_core.output_parsers import StrOutputParser, PydanticOutputParser

from langchain_core.prompts import ChatPromptTemplate

from langchain.text_splitter import CharacterTextSplitter

import gradio as gr

Diese Importe laden die notwendigen Klassen und Funktionen aus der Langchain-Bibliothek und Gradio für das User Interface.

Definition der Prozessfunktion

Die Funktion `process_input` nimmt URLs und eine Frage entgegen und verarbeitet diese, um eine Antwort zu generieren.

def process_input(urls, question):

    model_local = ChatOllama(model="llama2")

    urls_list = urls.split("\n")

    docs = [WebBaseLoader(url).load() for url in urls_list]

    docs_list = [item for sublist in docs for item in sublist]

    text_splitter = CharacterTextSplitter.from_tiktoken_encoder(chunk_size=2500, chunk_overlap=100)

    doc_splits = text_splitter.split_documents(docs_list)

    vectorstore = Chroma.from_documents(

        documents=doc_splits,

        collection_name="rag-chroma",

        embedding=embeddings.ollama.OllamaEmbeddings(model='nomic-embed-text'),

    )

    retriever = vectorstore.as_retriever()

    after_rag_template = """

        Answer the question based only on the following context:

        {context}

        Question: {question}

    """

    after_rag_prompt = ChatPromptTemplate.from_template(after_rag_template)

    after_rag_chain = ({"context": retriever, "question": RunnablePassthrough()} | after_rag_prompt | model_local | StrOutputParser())

    return after_rag_chain.invoke(question)

Diese Funktion verarbeitet die eingegebenen URLs, lädt die Dokumente, teilt den Text auf, erstellt einen Vektorraum und verwendet das Modell, um die Frage zu beantworten.

Erstellen der Benutzeroberfläche

Mit Gradio erstellen wir eine einfache Benutzeroberfläche für unseren Assistenten.

iface = gr.Interface(

    fn=process_input,

    inputs=[gr.Textbox(label="Enter URLs separated by new lines"), gr.Textbox(label="Question")],

    outputs="text",

    title="Document Query with Ollama",

    description="Enter URLs and a question to query the documents."

)

iface.launch()

Starten des Assistenten

Führen Sie den gesamten obigen Code in einer Python-Umgebung aus. Die Gradio-UI sollte sich in Ihrem Standard-Webbrowser öffnen. Dort können Sie URLs und eine Frage eingeben, um die Funktionsweise Ihres persönlichen Assistenten zu testen.

Zusammenfassung

Herzlichen Glückwunsch, Sie haben einen lokalen persönlichen Assistenten mit Ollama, Embeddings und Llama2 erstellt. Dieser Assistent kann Dokumente aus dem Web laden und Fragen basierend auf diesen Dokumenten beantworten. Sie haben Gradio verwendet, um eine interaktive Benutzeroberfläche zu erstellen, über die Benutzer mit Ihrem Assistenten interagieren können.

Viel Spaß beim Experimentieren mit Ihrem neuen persönlichen Assistenten!

Danke an Marvin Praison, der das Beispiel entworfen hat!

Wir laden Sie ein, sich an der Diskussion zu beteiligen. Teilen Sie Ihre Gedanken und Erfahrungen in den Kommentaren und in sozialen Netzwerken. Ihre Meinung ist wichtig, um die Zukunft dieser innovativen Technologie mitzugestalten. Lassen Sie uns gemeinsam die Möglichkeiten erkunden und nutzen!

Wolfgang Walk

Ingenieur, Programmierer und Schriftsteller aus Leidenschaft. Geboren in den goldenen 80ern, viel erlebt und immer mit den Aufgaben gewachsen.

Das könnte dich auch interessieren …

Schreibe einen Kommentar

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