Erste Schritte mit Serverless AI Chat mit RAG mithilfe von LlamaIndex
Vereinfachen Sie die KI-App-Entwicklung mit RAG, indem Sie Ihre eigenen Daten verwenden, die von LlamaIndex, Azure Functions und Serverless-Technologien verwaltet werden. Diese Tools verwalten Infrastruktur und Skalierung automatisch, so dass Sie sich auf die Chatbot-Funktionalität konzentrieren können. LlamaIndex verwaltet die gesamte Datenpipeline von der Erfassung bis zur gestreamten Antwort.
Übersicht über die Architektur
Der Anwendungsablauf umfasst:
- Verwenden der Chatoberfläche, um eine Eingabeaufforderung einzugeben.
- Senden der Eingabeaufforderung des Benutzers an die Serverless-API über HTTP-Aufrufe
- Empfangen der Eingabeaufforderung des Benutzers mithilfe des LlamaIndex-Frameworks zum Verarbeiten und Streamen der Antwort Die serverlose API verwendet ein Modul, um eine Verbindung mit dem großen Azure OpenAI-Sprachmodell (LLM) und dem Vektorindex von LlamaIndex zu erstellen.
Eine einfache Architektur der Chat-App wird im folgenden Diagramm gezeigt:
In diesem Beispiel wird LlamaIndex verwendet, um Einbettungen zu generieren und in einem eigenen Vektorspeicher zu speichern. LlamaIndex bietet auch Integration in andere Vektorspeicher, einschließlich Azure KI-Suche. Diese Integration wird in diesem Beispiel nicht veranschaulicht.
Wo befindet sich Azure in dieser Architektur?
Die Architektur der Anwendung basiert auf den folgenden Diensten und Komponenten:
- Azure OpenAI stellt den KI-Anbieter dar, an den die Abfragen des Benutzers gesendet werden.
- LlamaIndex ist das Framework, das uns hilft, unsere Inhalte (PDF-Datei) zu erfassen, zu transformieren und zu vektorisieren und einen Suchindex aus unseren Daten zu erstellen.
- Azure Container Apps ist die Containerumgebung, in der die Anwendung gehostet wird.
- Azure Managed Identity hilft uns dabei, eine erstklassige Sicherheit zu ermöglichen und macht für Sie als Entwickler den Umgang mit Anmeldeinformationen und API-Schlüsseln überflüssig.
LlamaIndex verwaltet die Daten von der Erfassung bis zum Abruf
Um ein RAG-System (Retrieval-Augmented Generation) mit LlamaIndex zu implementieren, sind im Folgenden die wichtigsten Schritte mit der angegebenen LlamaIndex-Funktionalität aufgeführt:
Prozess | Beschreibung | LlamaIndex |
---|---|---|
Datenerfassung | Importieren Sie Daten aus Quellen wie PDFs, APIs oder Datenbanken. | SimpleDirectoryReader |
Blockdokumente | Unterteilen Sie große Dokumente in kleinere Blöcke. | SentenceSplitter |
Vektorindexerstellung | Erstellen Sie einen Vektorindex für effiziente Ähnlichkeitssuchen. | VectorStoreIndex |
Rekursives Abrufen (optional) aus dem Index | Verwalten Sie komplexe Datasets mit hierarchischem Abruf. | |
In das Abfragemodul konvertieren | Konvertieren Sie den Vektorindex in ein Abfragemodul. | asQueryEngine |
Erweiterte Abfrageeinrichtung (optional) | Verwenden Sie Agents für ein Multi-Agent-System. | |
Implementieren der RAG-Pipeline | Definieren Sie eine Zielfunktion, die Benutzerabfragen entgegennimmt und relevante Dokumentblöcke abruft. | |
Durchführen des Abrufs | Verarbeiten Sie Abfragen und ordnen Sie Dokumente neu ein. | RetrieverQueryEngine, CohereRerank |
Voraussetzungen
Eine Entwicklungscontainerumgebung ist mit allen Abhängigkeiten verfügbar, die zum Abschließen dieses Artikels erforderlich sind. Sie können den Entwicklungscontainer in GitHub Codespaces (in einem Browser) oder lokal mit Visual Studio Code ausführen.
Für diesen Artikel benötigen Sie Folgendes:
- Azure-Abonnement: Kostenloses Azure-Konto
- Azure-Kontoberechtigungen: Ihr Azure-Konto muss über Microsoft.Authorization/roleAssignments/write-Berechtigungen verfügen, z. B. Benutzerzugriffsadministrator oder Besitzer.
- Zugriff auf Azure OpenAI im gewünschten Azure-Abonnement gewährt. Derzeit wird der Zugriff auf diesen Dienst nur auf Antrag gewährt. Sie können den Zugriff auf Azure OpenAI beantragen, indem Sie das Formular unter https://aka.ms/oai/access ausfüllen. Öffnen Sie ein Problem in diesem Repository, um uns bei einem Problem zu kontaktieren.
- GitHub -Konto
Öffnen Sie die Entwicklungsumgebung
Beginnen Sie jetzt mit einer Entwicklungsumgebung, in der alle Abhängigkeiten installiert sind, um diesen Artikel abzuschließen.
GitHub Codespaces führt einen von GitHub verwalteten Entwicklungscontainer mit Visual Studio Code für Web als Benutzeroberfläche aus. Verwenden Sie für die einfachste Entwicklungsumgebung GitHub Codespaces, damit Sie die richtigen Entwicklertools und Abhängigkeiten vorinstalliert haben, um diesen Artikel abzuschließen.
Wichtig
Alle GitHub-Konten können Codespaces für bis zu 60 Stunden pro Monat mit zwei Kerninstanzen kostenlos verwenden. Weitere Informationen finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.
In Codespace öffnen.
Warten Sie den Start des Codespaces ab. Dieser Startvorgang kann einige Minuten dauern.
Melden Sie sich am unteren Bildschirmrand am Terminal mit der Azure Developer CLI bei Azure an.
azd auth login
Schließen Sie den Authentifizierungsprozess ab.
Die verbleibenden Aufgaben in diesem Artikel finden im Kontext dieses Entwicklungscontainers statt.
Bereitstellen und Ausführen
Das Beispiel-Repository enthält alle Code- und Konfigurationsdateien, die Sie zum Bereitstellen der Serverless-Chat-App in Azure benötigen. Die folgenden Schritte führen Sie durch den Prozess der Bereitstellung des Beispiels in Azure.
Bereitstellen einer Chat-App in Azure
Wichtig
In diesem Abschnitt erstellte Azure-Ressourcen verursachen sofortige Kosten, in erster Linie durch die Azure KI-Suche-Ressource. Diese Ressourcen können Kosten verursachen, selbst wenn Sie den Befehl unterbrechen, bevor er vollständig ausgeführt wird.
Führen Sie zum Bereitstellen der Azure-Ressourcen und des Quellcodes den folgenden Azure Developer CLI-Befehl aus:
azd up
Gehen Sie zum Beantworten der Eingabeaufforderungen gemäß der folgenden Tabelle vor:
Prompt Antwort Umgebungsname Halten Sie dies kurz, und verwenden Sie nur Kleinbuchstaben. Fügen Sie Ihren Namen oder Alias hinzu. Beispiel: john-chat
. Er wird als Teil des Ressourcengruppennamens verwendet.Abonnement Wählen Sie das Abonnement aus, in dem Sie die Ressourcen erstellen möchten. Standort (für Hosting) Wählen Sie aus der Liste einen Standort in Ihrer Nähe aus. Standort für das OpenAI-Modell Wählen Sie aus der Liste einen Standort in Ihrer Nähe aus. Wenn derselbe Speicherort wie Ihr erster Speicherort verfügbar ist, wählen Sie diesen Speicherort aus. Warten Sie, bis die App bereitgestellt wird. Die Bereitstellung kann zehn bis fünfzehn Minuten dauern.
Nachdem die Anwendung erfolgreich bereitgestellt wurde, werden zwei URLs im Terminal angezeigt.
Wählen Sie diese URL aus, die als
Deploying service webapp
beschriftet ist, um die Chatanwendung in einem Browser zu öffnen.
Verwenden der Chat-App zum Abrufen von Antworten aus PDF-Dateien
In der Chat-App sind Informationen zu den physischen Standards für Inlandspost aus einem PDF-Dateikatalog vorinstalliert. Über die Chat-App können Sie Fragen zum Brief- und Paketversand stellen. Die folgenden Schritte führen Sie durch den Prozess der Verwendung der Chat-App.
Wählen Sie im Browser Wie viel kostet es, ein großes Paket nach Frankreich zu versenden? aus, oder geben Sie es ein.
LlamaIndex leitet die Antwort ab, verwendet die PDF-Datei und streamt die Antwort.
Die Antwort stammt von Azure OpenAI, beeinflusst von den in den LlamaIndex-Vektorspeicher erfassten PDF-Daten.
Bereinigen von Ressourcen
Zum Bereinigen von Ressourcen müssen zwei Dinge beachtet werden:
- Azure-Ressourcen können Sie mit der Azure Developer CLI (azd) bereinigen.
- Ihre Entwicklerumgebung, unabhängig davon, ob Sie GitHub Codespaces oder DevContainers über Visual Studio Code verwendet haben.
Bereinigen von Azure-Ressourcen
Die in diesem Artikel erstellten Azure-Ressourcen werden Ihrem Azure-Abonnement in Rechnung gestellt. Wenn Sie nicht erwarten, dass diese Ressourcen in Zukunft benötigt werden, löschen Sie sie, um weitere Gebühren zu vermeiden.
Führen Sie den folgenden Azure Developer CLI-Befehl aus, um die Azure-Ressourcen zu löschen und den Quellcode zu entfernen:
azd down --purge
Bereinigen von Entwicklerumgebungen
Durch das Löschen der GitHub Codespaces-Umgebung wird sichergestellt, dass Sie die Anzahl der kostenlosen Berechtigungsstunden pro Kern maximieren können, die Sie für Ihr Konto erhalten.
Wichtig
Weitere Informationen zu den Berechtigungen Ihres GitHub-Kontos finden Sie im Artikel zu monatlich enthaltener Speicherkapazität und Kernstunden in GitHub Codespaces.
Melden Sie sich beim GitHub Codespaces-Dashboard (https://github.com/codespaces) an.
Suchen Sie Ihre derzeit ausgeführten Codespaces, die aus dem GitHub-Repository
Azure-Samples/llama-index-javascript
stammen.Öffnen Sie das Kontextmenü,
...
, für den Codespace, und wählen Sie dann Löschen aus.
Hilfe erhalten
Dieses Beispiel-Repository bietet Informationen zur Problembehandlung.
Wenn Ihr Problem nicht behoben ist, protokollieren Sie Ihr Problem bei den Problemen des Repositorys.