Dieses Repository enthält ein praktisches Beispiel für die Erstellung einer Frage-und-Antwort-App, mit der Sie mithilfe der GenAI-AWS-Dienste Fragen zu Ihren privaten Dokumenten beantworten können.
Zuvor habe ich eine Q&A-App mit Azure OpenAI GPT-4 und Pinecone erstellt (Sie finden sie hier) .
In diesem Repository werde ich genau die gleiche App erstellen, aber nur AWS-Dienste verwenden (+ Streamlit für die Benutzeroberfläche).
Genauer gesagt verfügt die App über die folgende Architektur:
Und es nutzt die folgenden Technologien:
Dieses Repository enthält die folgende App:
Streamlit
App, die es uns ermöglicht, die in AWS Kendra gespeicherten Daten mithilfe eines der verfügbaren AWS Bedrock LLM-Modelle abzufragen.Die privaten Dokumente werden in einem S3-Bucket gespeichert.
Der Kendra Index ist für die Verwendung eines S3-Anschlusses konfiguriert. Der Index überprüft den S3-Bucket alle N Minuten auf neue Inhalte. Wenn im Bucket neuer Inhalt gefunden wird, wird dieser automatisch analysiert und in der Kendra-Datenbank gespeichert.
Wenn ein Benutzer eine Abfrage über die Streamlit
-App ausführt, führt die App die folgenden Schritte aus:
Wenn Sie statt der Streamlit
-App lieber Schritt für Schritt die Anweisungen zum Einrichten des RAG-Musters ausführen möchten, verfügen Sie über ein Jupyter-Notizbuch ( /notebooks/rag-with-langchain.ipynb
), das Ihnen genau dies ermöglicht.
Die Streamlit
App nutzt intensiv die LangChain
-Bibliothek, um das RAG-Muster zu implementieren. Wenn Sie lieber keine Bibliotheken von Drittanbietern verwenden und das RAG-Muster ausschließlich mit der boto3
-Bibliothek einrichten möchten, verfügen Sie über ein zweites Jupyter-Notebook ( /notebooks/rag-with-only-boto3.ipynb
), mit dem Sie dies tun können .
Im Ordner /infra
finden Sie eine Reihe von Terraform-Dateien, die alle AWS-Dienste erstellen, die für das ordnungsgemäße Funktionieren der App erforderlich sind.
Diese Terraform-Dateien erstellen die folgenden Ressourcen:
Es gibt einige Voraussetzungen, die Sie beachten sollten, bevor Sie versuchen, die Anwendung auszuführen.
Im Bereich „Modellzugriff“ erhalten Sie einen Überblick, auf welche LLMs Sie Zugriff haben und auf welche nicht.
Um diese Anwendung vollständig nutzen zu können, müssen Sie Zugriff auf alle AWS Bedrock-LLMs von Drittanbietern haben .
boto3
so eingerichtet, dass es die AWS-Anmeldeinformationen aus dem default
der AWS-Konfigurationsdatei auf Ihrem lokalen Computer abruft. Eine Übersicht über die verschiedenen Ansätze zur Konfiguration boto3
Anmeldeinformationen finden Sie unter folgendem Link:
Bevor Sie versuchen, die App auszuführen, lesen Sie den Abschnitt „AWS-Infrastruktur“ und „ Voraussetzungen“ .
Das Repository verfügt über eine .env
Datei, die die Umgebungsvariablen enthält, die die App für eine erfolgreiche Ausführung benötigt:
KENDRA_INDEX='<kendra-index>'
AWS_BEDROCK_REGION='<bedrock-region>'
AWS_KENDRA_REGION='<region-where-kendra-index-is-deployed>'
Ändern Sie die Werte entsprechend.
pip install -r requirements.txt
Wenn Sie Streamlit
installieren, wird auch ein Befehlszeilentool (CLI) installiert. Der Zweck dieses Tools besteht darin, Streamlit
Apps auszuführen.
Um die App auszuführen, führen Sie einfach den folgenden Befehl aus:
streamlit run app.py
Dieses Repository verfügt über eine
Dockerfile
für den Fall, dass Sie die App lieber auf einem Container ausführen möchten.
docker build -t aws-rag-app .
docker run -p 5050:5050
-e KENDRA_INDEX="<kendra-index>"
-e AWS_BEDROCK_REGION="<bedrock-region>"
-e AWS_KENDRA_REGION="<region-where-kendra-index-is-deploy>"
-e AWS_ACCESS_KEY_ID="<aws-access-key>"
-e AWS_SECRET_ACCESS_KEY="<aws-secret-access-key>"
aws-rag-app
app.py
wurde aktualisiert, um es mit den neuesten Bedrock-Änderungen kompatibel zu machen.boto3
und botocore3
Raddateien entfernt. Ein mit Bedrock kompatibles boto3
ist endlich öffentlich verfügbar.