In diesem umfassenden Tutorial werden wir erkunden, wie man eine leistungsstarke Retrieval Augmented Generation (RAG) Anwendung mit dem modernen Llama 3-Sprachmodell von Meta AI erstellt. Durch die Nutzung der Fähigkeiten von Llama 3 und der RAG-Technik werden wir eine App erstellen, die es Benutzern ermöglicht, in interaktiven Unterhaltungen mit einer Webseite relevante Informationen abzurufen und genaue Antworten auf Benutzeranfragen zu generieren. In diesem Tutorial werden wir den schrittweisen Prozess der Einrichtung der Entwicklungsumgebung, des Ladens und Verarbeitens von Webseitendaten, der Erstellung von Einbettungen und Vektorspeichern und der Implementierung der RAG-Kette durchgehen, um ein außergewöhnliches Benutzererlebnis zu bieten.
Artikelzusammenfassung
- Richten Sie die Streamlit-App ein und installieren Sie erforderliche Bibliotheken.
- Laden und verarbeiten Sie Webseitendaten mit WebBaseLoader und RecursiveCharacterTextSplitter.
- Erstellen Sie Ollama-Einbettungen und Vektorspeicher mit OllamaEmbeddings und Chroma.
- Implementieren Sie die RAG-Kette, um relevante Informationen abzurufen und Antworten zu generieren.
Was ist Llama 3?
Llama 3 ist ein hochmodernes Sprachmodell, das von Meta AI entwickelt wurde und sich durch ein ausgezeichnetes Verständnis und die Generierung von Texten ähnlich menschlicher Sprache auszeichnet.
- Mit seinen beeindruckenden Fähigkeiten in der natürlichen Sprachverarbeitung kann Llama 3 komplexe Anfragen verstehen, genaue Antworten liefern und in kontextuell relevante Unterhaltungen eingreifen.
- Dank seiner Fähigkeit, eine Vielzahl von Themen zu behandeln und seiner Effizienz bei der Verarbeitung, ist Llama 3 eine ideale Wahl für den Aufbau intelligenter Anwendungen.
- Möchten Sie die Leistung von Llama 3 testen? Sprechen Sie jetzt mit Anakin AI! (Unterstützt nahezu jedes verfügbare KI-Modell!)
Was ist RAG?
Retrieval Augmented Generation (RAG) ist eine Technik, die Informationen aus der Informationssuche und Sprachgenerierung kombiniert, um die Leistung von Frage-Antwort-Systemen zu verbessern.
- Einfach ausgedrückt ermöglicht RAG-Technik einem KI-Modell das Abrufen relevanter Informationen aus einer Wissensbasis oder einem Dokument und die Verwendung dieser Informationen, um genaue und kontextuell angemessene Antworten auf Benutzeranfragen zu generieren.
- Durch die Nutzung der Leistung der Informationssuche und Generierung ermöglicht RAG die Erstellung intelligenter Chatbots und Frage-Antwort-Anwendungen, die Benutzern hoch relevante und informative Antworten liefern können.
- Für Benutzer, die ein RAG-System ohne Codierungserfahrung betreiben möchten, können Sie Anakin AI ausprobieren, wo Sie fantastische KI-Apps mit einem No-Code Builder erstellen können!
Mit all den oben genannten Informationen legen wir los!
Voraussetzungen zum Ausführen einer lokal installierten Llama 3 RAG-App
Bevor wir beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen installiert haben:
- Python 3.7 oder höher
- Streamlit
- ollama
- langchain
- langchain_community
Sie können die erforderlichen Bibliotheken installieren, indem Sie den folgenden Befehl ausführen:
pip install streamlit ollama langchain langchain_community
Schritt-für-Schritt-Anleitung zum Ausführen Ihrer eigenen, lokal installierten RAG-App mit Llama-3
Schritt 1: Richten Sie die Streamlit-App ein
Als erstes richten wir die grundlegende Struktur unserer Streamlit-App ein. Erstellen Sie eine neue Python-Datei mit dem Namen app.py
und fügen Sie den folgenden Code hinzu:
import streamlit as st
import ollama
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import WebBaseLoader
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OllamaEmbeddings
st.title("Mit der Webseite chatten 🌐")
st.caption("Diese App ermöglicht es Ihnen, mit einer Webseite mithilfe von lokalem Llama-3 und RAG zu chatten")
# Lesen Sie die URL der Webseite vom Benutzer ein
webseiten_url = st.text_input("Geben Sie die URL der Webseite ein", type="default")
Dieser Code richtet die grundlegende Struktur der Streamlit-App ein, einschließlich des Titels, der Bildunterschrift und eines Eingabefelds, in dem der Benutzer die URL der Webseite eingeben kann.
Schritt 2: Laden und Verarbeiten der Daten der Webseite
Anschließend müssen wir die Daten von der angegebenen Webseite laden und für die weitere Verwendung verarbeiten. Fügen Sie den folgenden Code zu app.py
hinzu:
if webseiten_url:
# 1. Daten laden
loader = WebBaseLoader(webseiten_url)
docs = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=10)
splits = text_splitter.split_documents(docs)
Hier verwenden wir den WebBaseLoader
von langchain_community
, um die Daten der Webseite zu laden. Dann teilen wir die geladenen Dokumente mit dem RecursiveCharacterTextSplitter
von langchain
in kleinere Abschnitte auf.
Schritt 3: Erstellung von Ollama-Einbettungen und Vektorspeicher
Um eine effiziente Abrufung relevanter Informationen von der Webseite zu ermöglichen, müssen wir Einbettungen und einen Vektorspeicher erstellen. Fügen Sie den folgenden Code hinzu:
# 2. Ollama-Einbettungen und Vektorspeicher erstellen
einbettungen = OllamaEmbeddings(model="llama3")
vektorspeicher = Chroma.from_documents(documents=splits, embedding=embeddings)
Wir erstellen Ollama-Einbettungen mit der OllamaEmbeddings
-Klasse von langchain_community
und geben das Modell llama3
an. Dann erstellen wir einen Vektorspeicher mit der Chroma
-Klasse und übergeben die aufgeteilten Dokumente und Einbettungen.
Schritt 4: Definition der Funktion des Ollama Llama-3-Modells
Jetzt definieren wir eine Funktion, die das Ollama Llama-3-Modell nutzt, um Antworten basierend auf der Frage des Benutzers und dem relevanten Kontext zu generieren. Fügen Sie den folgenden Code hinzu:
# 3. Ollama Llama3-Modell aufrufen
def ollama_llm(frage, kontext):
formatierter_prompt = f"Frage: {frage}\n\nKontext: {kontext}"
antwort = ollama.chat(model='llama3', messages=[{'role': 'user', 'content': formatierter_prompt}])
return antwort['message']['content']
Diese Funktion nimmt die Frage des Benutzers und den relevanten Kontext als Eingabe entgegen. Sie formatiert den Prompt, indem sie Frage und Kontext kombiniert, und verwendet dann die Funktion ollama.chat
, um eine Antwort mit dem Llama-3-Modell zu generieren.
Schritt 5: Einrichtung der RAG-Kette
Um relevante Informationen aus dem Vektorspeicher basierend auf der Frage des Benutzers abzurufen, müssen wir die RAG (Retrieval Augmented Generation)-Kette einrichten. Fügen Sie den folgenden Code hinzu:
# 4. RAG-Einrichtung
retriever = vektorspeicher.as_retriever()
def dokumente_kombinieren(dokumente):
return "\n\n".join(dokument.seiteninhalt for dokument in dokumente)
def rag_kette(frage):
abgerufene_dokumente = retriever.invoke(frage)
formatierter_kontext = dokumente_kombinieren(abgerufene_dokumente)
return ollama_llm(frage, formatierter_kontext)
st.success(f"{webseiten_url} erfolgreich geladen!")
Hier erstellen wir einen Abrufer aus dem Vektorspeicher mit der Methode as_retriever
. Wir definieren eine Hilfsfunktion dokumente_kombinieren
, um die abgerufenen Dokumente zu einer einzigen formatierten Kontextzeichenfolge zu kombinieren. Die Funktion rag_kette
nimmt die Frage des Benutzers entgegen, ruft anhand des Abrufers relevante Dokumente ab, kombiniert die Dokumente zu einem formatierten Kontext und übergibt Frage und Kontext an die Funktion ollama_llm
, um eine Antwort zu generieren.
Schritt 6: Implementierung der Chat-Funktionalität
Zuletzt implementieren wir die Chat-Funktionalität in unserer Streamlit-App. Fügen Sie den folgenden Code hinzu:
# Eine Frage zur Webseite stellen
anregung = st.text_input("Stellen Sie eine Frage zur Webseite")
# Mit der Webseite chatten
if anregung:
ergebnis = rag_kette(anregung)
st.write(ergebnis)
Dieser Code fügt ein Eingabefeld hinzu, in dem der Benutzer eine Frage zur Webseite stellen kann. Wenn der Benutzer eine Frage eingibt und abschickt, wird die Funktion rag_kette
mit der Frage des Benutzers aufgerufen. Die generierte Antwort wird dann mit st.write
angezeigt.
Letzter Schritt: Es ist Zeit, die App auszuführen!
Um die App auszuführen, speichern Sie die Datei app.py
und öffnen Sie ein Terminal im gleichen Verzeichnis. Führen Sie den folgenden Befehl aus:
streamlit run app.py
Dadurch wird die Streamlit-App gestartet und Sie können sie in Ihrem Webbrowser unter der angegebenen URL aufrufen.
Fazit
Herzlichen Glückwunsch! Sie haben erfolgreich eine RAG-App mit lokal installiertem Llama-3 erstellt. Die App ermöglicht es Benutzern, mit einer Webseite zu chatten, indem sie die Leistung von lokal installiertem Llama-3 und RAG-Techniken nutzt. Benutzer können eine URL der Webseite eingeben und die App wird die Webseite laden und verarbeiten, Einbettungen und einen Vektorspeicher erstellen und die RAG-Kette verwenden, um relevante Informationen abzurufen und Antworten basierend auf den Fragen des Benutzers zu generieren.
Fühlen Sie sich frei, die App weiter zu erkunden und zu verbessern, indem Sie weitere Funktionen hinzufügen, die Benutzeroberfläche verbessern oder bei Bedarf zusätzliche Funktionen integrieren.
Dann sollten Sie Anakin AI nicht verpassen!
Anakin AI ist eine All-in-One-Plattform für die Automatisierung von Workflows. Erstellen Sie leistungsstarke KI-Apps mit einem benutzerfreundlichen No-Code-App-Builder, mit Llama 3, Claude, GPT-4, Uncensored LLMs, Stable Diffusion...
Erstellen Sie Ihre Traum-KI-App innerhalb von Minuten, nicht Wochen, mit Anakin AI!