Kom igång med serverlös AI-chatt med RAG med Hjälp av LlamaIndex
Förenkla AI-apputveckling med RAG- med hjälp av dina egna data som hanteras av LlamaIndex, Azure Functions och serverlösa tekniker. De här verktygen hanterar infrastruktur och skalning automatiskt, så att du kan fokusera på chattrobotfunktioner. LlamaIndex hanterar datapipelinen hela vägen från inmatning till det strömmade svaret.
Översikt över arkitektur
Programflödet innehåller:
- Använd chattgränssnittet för att ange en uppmaning.
- Skicka användarens uppmaning till det serverlösa API:et via HTTP-anrop.
- Ta emot användarens uppmaning och sedan använda LlamaIndex-ramverket för att bearbeta och strömma svaret. Det serverlösa API:et använder en motor för att skapa en anslutning till Azure OpenAI large language model (LLM) och vektorindexet från LlamaIndex.
En enkel arkitektur för chattappen visas i följande diagram:
Det här exemplet använder LlamaIndex för att generera inbäddningar och lagra i ett eget vektorlager. LlamaIndex tillhandahåller även integrering med andra vektordatalager inklusive Azure AI Search. Den integreringen visas inte i det här exemplet.
Var finns Azure i den här arkitekturen?
Programmets arkitektur förlitar sig på följande tjänster och komponenter:
- Azure OpenAI- representerar DEN AI-provider som vi skickar användarens frågor till.
- LlamaIndex är det ramverk som hjälper oss att mata in, transformera och vektorisera vårt innehåll (PDF-fil) och skapa ett sökindex från våra data.
- Azure Container Apps är containermiljön där programmet finns.
- Azure Managed Identity hjälper oss att säkerställa bästa möjliga klasssäkerhet och eliminerar kraven för dig som utvecklare att hantera autentiseringsuppgifter och API-nycklar.
LlamaIndex hanterar data från inmatning till hämtning
För att implementera ett RAG-system (Retrieval-Augmented Generation) med hjälp av LlamaIndex matchas följande viktiga steg med LlamaIndex-funktionerna:
Process | Beskrivning | LlamaIndex |
---|---|---|
Datainmatning | Importera data från källor som PDF-filer, API:er eller databaser. | SimpleDirectoryReader |
Segmentdokument | Dela upp stora dokument i mindre segment. | SentenceSplitter |
Skapa vektorindex | Skapa ett vektorindex för effektiva likhetssökningar. | VectorStoreIndex |
Rekursiv hämtning (valfritt) från index | Hantera komplexa datauppsättningar med hierarkisk hämtning. | |
Konvertera till frågemotor | Konvertera vektorindexet till en frågemotor. | asQueryEngine |
Avancerad frågekonfiguration (valfritt) | Använd agenter för ett system med flera agenter. | |
Implementera RAG-pipelinen | Definiera en objektiv funktion som tar användarfrågor och hämtar relevanta dokumentsegment. | |
Göra hämtning | Bearbeta frågor och ändra rangordning av dokument. | RetrieverQueryEngine, CohereRerank |
Förutsättningar
En utvecklingscontainer miljö är tillgänglig med alla beroenden som krävs för att slutföra den här artikeln. Du kan köra utvecklingscontainern i GitHub Codespaces (i en webbläsare) eller lokalt med hjälp av Visual Studio Code.
Om du vill använda den här artikeln behöver du följande krav:
- En Azure-prenumeration – Skapa en kostnadsfri
- Azure-kontobehörigheter – Ditt Azure-konto måste ha Microsoft.Authorization/roleAssignments/write-behörigheter, till exempel administratör för användaråtkomst eller ägare.
- Ett GitHub-konto.
Öppna utvecklingsmiljön
Använd följande instruktioner för att distribuera en förkonfigurerad utvecklingsmiljö som innehåller alla nödvändiga beroenden för att slutföra den här artikeln.
GitHub Codespaces kör en utvecklingscontainer som hanteras av GitHub med Visual Studio Code för webben som användargränssnitt. För den enklaste utvecklingsmiljön använder du GitHub Codespaces så att du har rätt utvecklarverktyg och beroenden förinstallerade för att slutföra den här artikeln.
Viktig
Alla GitHub-konton kan använda Codespaces i upp till 60 timmar kostnadsfritt varje månad med 2 kärninstanser. För mer information, se GitHub Codespaces ingår månadsvis lagring och kärntimmar.
Öppna i kodområdet.
Vänta på att kodområdet startar. Den här startprocessen kan ta några minuter.
Logga in på Azure med Azure Developer CLI i terminalen längst ned på skärmen.
azd auth login
Slutför autentiseringsprocessen.
De återstående uppgifterna i den här artikeln sker i samband med den här utvecklingscontainern.
Distribuera och kör
Exempellagringsplatsen innehåller alla kod- och konfigurationsfiler som du behöver för att distribuera den serverlösa chattappen till Azure. Följande steg beskriver hur du distribuerar exemplet till Azure.
Distribuera chattapp till Azure
Viktig
Azure-resurser som skapas i det här avsnittet medför omedelbara kostnader, främst från Azure AI Search-resursen. Dessa resurser kan medföra kostnader även om du avbryter kommandot innan det körs fullständigt.
Om du vill etablera Azure-resurserna och distribuera källkoden kör du följande Azure Developer CLI-kommando:
azd up
Använd följande tabell för att besvara anvisningarna:
Snabb Svar Miljönamn Håll det kort och med små bokstäver. Lägg till ditt namn eller alias. Till exempel john-chat
. Den används som en del av resursgruppens namn.Abonnemang Välj den prenumeration som resurserna ska skapas i. Plats (för värd) Välj en plats nära dig i listan. Plats för OpenAI-modellen Välj en plats nära dig i listan. Om samma plats är tillgänglig som din första plats väljer du det. Vänta tills appen har distribuerats. Det kan ta 5–10 minuter för distributionen att slutföras.
När programmet har distribuerats visas två URL:er i terminalen.
Välj den URL:en som är märkt
Deploying service webapp
för att öppna chattprogrammet i en webbläsare.
Använda chattappen för att få svar från PDF-filer
Chattappen är förinstallerad med information om de fysiska standarderna för inrikes post från en PDF-filkatalog. Du kan använda chattappen för att ställa frågor om e-postmeddelandet och paketen. Följande steg beskriver hur du använder chattappen.
I webbläsaren väljer eller anger du Hur mycket kostar det att skicka ett stort paket till Frankrike?.
LlamaIndex härleder svaret använder PDF-filen och strömmar svaret.
Svaret kommer från Azure OpenAI med påverkan från PDF-data som matas in i LlamaIndex-vektorlagret.
Rensa resurser
För att rensa resurser finns det två saker att åtgärda:
- Azure-resurser, du kan rensa resurserna med Azure Developer CLI, azd.
- Din utvecklarmiljö; antingen GitHub Codespaces eller DevContainers via Visual Studio Code.
Rensa Azure-resurser
De Azure-resurser som skapas i den här artikeln faktureras till din Azure-prenumeration. Om du inte förväntar dig att behöva dessa resurser i framtiden tar du bort dem för att undvika att debiteras mer.
Kör följande Azure Developer CLI-kommando för att ta bort Azure-resurserna och ta bort källkoden:
azd down --purge
Rensa utvecklarmiljöer
Genom att ta bort GitHub Codespaces-miljön kan du maximera det antal kostnadsfria timmar per kärna som ditt konto ger rätt till.
Viktig
För mer information om ditt GitHub-kontos förmåner, se GitHub Codespaces, inkluderad lagring och kärntimmar per månad,.
Logga in på instrumentpanelen för GitHub Codespaces (https://github.com/codespaces).
Leta upp dina codespaces som körs från
Azure-Samples/llama-index-javascript
GitHub-lagringsplats.Öppna snabbmenyn
...
för kodområdet och välj sedan Ta bort.
Få hjälp
Den här exempellagringsplatsen erbjuder felsökningsinformation.
Om ditt problem inte åtgärdas, rapportera ditt problem till repositoryns Issues.