Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
RAG-basierten Chatbot mit Oracle Cloud Infrastructure Search mit OpenSearch erstellen
Einführung
In diesem Tutorial führen wir Sie durch den Prozess der Erstellung eines RAG-basierten Chatbots (Retrieval-Augmented Generation) mit OCI OpenSearch als Vektordatenbank und OCI Generative AI-Servicemodellen (wie Cohere und Llama). Am Ende dieses Tutorials haben Sie eine Chatbot-Lösung entwickelt, die in der Lage ist, Dokumente zu verarbeiten, sie als Vektor-Einbettungen in OpenSearch zu speichern und während der Gespräche relevante Informationen abzurufen.
Darüber hinaus erstellen wir mit Streamlit eine intuitive Benutzeroberfläche, mit der Sie Dokumente hochladen, mit dem Chatbot interagieren und mühelos auf relevante Informationen zugreifen können. Dieses Tutorial behandelt alles von der Einrichtung Ihrer Umgebung bis zum Testen des Chatbots mit Ihren eigenen PDF-Dateien.
Ziele
-
Richten Sie ein OpenSearch-Cluster auf OCI zum Speichern von Dokumenteinbettungen ein.
-
Konfigurieren Sie Ihre Entwicklungsumgebung mit Conda und den erforderlichen Abhängigkeiten.
-
Richten Sie die OCI-Authentifizierung für eine nahtlose Integration ein.
-
Schreiben und konfigurieren Sie den Chatbot-Engine-Code.
-
Erstellen Sie mit Streamlit eine interaktive Benutzeroberfläche zum Hochladen von Dokumenten und Abfragen des Chatbots.
-
Laden Sie Dokumente (PDFs) hoch, und interagieren Sie mit dem Chatbot, um sie abzufragen.
Voraussetzungen
-
Ein OCI-Account mit den erforderlichen Berechtigungen zum Erstellen von OpenSearch-Clustern.
-
Eine virtuelle Maschine (VM) mit installiertem Python.
-
Vertrautheit mit Vektordatenbanken und großen Sprachmodellen.
-
Grundlegendes Verständnis der Entwicklung von Application Programming Interface (API) und Chatbot Engine.
-
Erstellen Sie eine Suche mit OpenSearch-IAM-Policys und OCI Generative AI-Policys.
Aufgabe 1: OpenSearch-Cluster mit OCI mit OpenSearch einrichten
-
Cluster erstellen. Weitere Informationen finden Sie unter Cluster OpenSearch mit OCI Search mit OpenSearch erstellen
-
Nachdem das Cluster erstellt wurde, kopieren Sie den API-Endpunkt zusammen mit den Benutzerzugangsdaten, um sie in der App zu konfigurieren.
Aufgabe 2: Python-Umgebung konfigurieren
-
Starten Sie eine Instanz mit dem Oracle Linux-Image und der Basisausprägung in OCI. Weitere Informationen finden Sie unter Linux-Instanz starten.
-
Installieren Sie Python 3.11 unter Oracle Linux. Weitere Informationen finden Sie unter Python installieren.
-
Führen Sie den folgenden Befehl aus, um die Python-Version zu aktualisieren.
sudo update-alternatives --set python /usr/bin/python3.11
-
Erstellen Sie einen Projektordner mit dem Namen
opensearch_rag_chatbot
. -
Wechseln Sie zu dem Ordner, der erstellt wurde, und installieren Sie Abhängigkeiten, indem Sie eine Datei mit dem Namen
requirements.txt
erstellen.python -m venv venv source ./venv/bin/activate pip install -r requirements.txt
-
Führen Sie den folgenden Befehl aus, um die Streamlit-Installation zu testen.
streamlit hello
-
Wenn die Streamlit- und OpenSearch-Ports (
8501
/9200
) in der Firewall nicht geöffnet sind, fügen Sie sie mit dem folgenden Befehl hinzu.sudo firewall-cmd --list-all sudo firewall-cmd --permanent --add-port=8501/tcp sudo firewall-cmd --permanent --add-port=9200/tcp sudo firewall-cmd --reload
Aufgabe 3: OCI-Authentifizierung einrichten
-
Erstellen Sie einen
.oci
-Ordner in Ihrem Home-Verzeichnis, und richten Sie die Dateiconfig
ein.[DEFAULT] user=ocid1.user.oc1.. fingerprint=40:02:56: key_file=/path/to/oci_api_key.pem tenancy=ocid1.tenancy.oc1.. region=us-region-1
Hinweis: Weitere Informationen finden Sie unter Konfigurationsdatei für Oracle Date a Science erstellen.
Aufgabe 4: Chatbot-Engine-Code schreiben
-
Folgen Sie dieser Projektstruktur für die Codebase.
opensearch_rag_chatbot/ ├── app.py # Main Streamlit app ├── chat_engine.py # Logic for RAG and GenAI integration ├── config.py # Config file for secrets and settings ├── ingest_data_opens.py # Script for processing and indexing PDFs in OpenSearch ├── oci_utils.py # Utility for OCI configurations
-
Laden Sie die folgenden Beispielcodedateien als Anwendungsbeispiele herunter.
Hinweis: Für diese Beispielprogramme sind möglicherweise Anpassungen für bestimmte Anwendungsfälle und zusätzliche Fehlerbehandlung erforderlich. Darüber hinaus wird in den Beispielen ein Benutzer-Principal verwendet, um eine Verbindung mit dem OpenSearch-Cluster herzustellen. Es wird jedoch empfohlen, vertrauliche Informationen wie Secrets und Zugangsdaten in OCI Vault zu speichern, um die Sicherheit zu erhöhen. Sie können diese Secrets dann dynamisch zur Laufzeit abrufen. Weitere Informationen zum sicheren Verwalten und Abrufen von Secrets finden Sie unter Daten mit dem Vault sichern.
Aufgabe 5: Dokumente hochladen und Chatbot testen
-
Führen Sie den folgenden Befehl aus, um die Anwendung auszuführen.
cd opensearch_rag_chatbot python -m venv venv source ./venv/bin/activate streamlit run app.py
-
Kopieren Sie die generierte URL, um auf die Streamlit-App zuzugreifen. Starten Sie das Hochladen von PDFs und testen Sie die Funktionalität des Chatbots.
Fehlerbehebung und Tipps
-
Verbindungsfehler: Prüfen Sie die Cluster-URL und die Zugangsdaten von OpenSearch.
-
Indexprobleme: Stellen Sie sicher, dass die OpenSearch-Konfigurationen in
config.py
korrekt sind. -
PDF-Verarbeitungsfehler: Bestätigen Sie die Kompatibilität des PDF-Formats.
-
Konfigurationsprüfung: Prüfen Sie die Datei
config.py
auf Richtigkeit.
Hinweis: Logs sind in der Streamlit-Konsolenausgabe verfügbar, die detaillierte Informationen zu Vorgängen und Fehlern enthalten.
Nächste Schritte
In den nächsten Schritten sollten Sie Ihren Chatbot erweitern, indem Sie Unterstützung für weitere Dokumentformate wie Word- oder HTML-Dateien hinzufügen und mit verschiedenen Einbettungsmodellen experimentieren, um die Antwortgenauigkeit des Chatbots in bestimmten Domains zu verbessern. Sie können die Streamlit-Benutzeroberfläche auch um zusätzliche Funktionen erweitern, wie Unterstützung für mehrere Dokumentuploads, Abfragehistorie oder Echtzeitfeedback zu langen Prozessen.
Verwandte Links
Danksagungen
- Autoren - Pavan Upadhyay (Principal Cloud Engineer), Saket Bihari (Principal Cloud Engineer)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Create RAG based Chatbot using Oracle Cloud Infrastructure Search with OpenSearch
G20423-01
November 2024