Dela via


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.

Skärmbild av chattappen i webbläsaren som visar chattindata och 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:

Diagram över arkitekturen för Chattappen LlamaIndex RAG.

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:

Ö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.

  1. Öppna i kodområdet.

    Öppna i GitHub Codespaces

  2. Vänta på att kodområdet startar. Den här startprocessen kan ta några minuter.

  3. Logga in på Azure med Azure Developer CLI i terminalen längst ned på skärmen.

    azd auth login
    

    Slutför autentiseringsprocessen.

  4. 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.

  1. Om du vill etablera Azure-resurserna och distribuera källkoden kör du följande Azure Developer CLI-kommando:

    azd up
    
  2. 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.
  3. Vänta tills appen har distribuerats. Det kan ta 5–10 minuter för distributionen att slutföras.

  4. När programmet har distribuerats visas två URL:er i terminalen.

  5. Välj den URL:en som är märkt Deploying service webapp för att öppna chattprogrammet i en webbläsare.

    Skärmbild av utdata från distributionskommandot som visar webbprogrammets URL.

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.

  1. I webbläsaren väljer eller anger du Hur mycket kostar det att skicka ett stort paket till Frankrike?.

  2. LlamaIndex härleder svaret använder PDF-filen och strömmar svaret.

    Skärmbild av chattappen i webbläsaren som visar chattindata och 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,.

  1. Logga in på instrumentpanelen för GitHub Codespaces (https://github.com/codespaces).

  2. Leta upp dina codespaces som körs från Azure-Samples/llama-index-javascript GitHub-lagringsplats.

    Skärmbild av alla kodområden som körs, inklusive deras status och mallar.

  3. Ö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.

Nästa steg