Delen via


Aan de slag met Serverless AI Chat met RAG met behulp van LlamaIndex

Vereenvoudig ontwikkeling van AI-apps met RAG met behulp van uw eigen gegevens die worden beheerd door LlamaIndex, Azure Functions en serverloze technologieën. Met deze hulpprogramma's kunt u de infrastructuur en schaal automatisch beheren, zodat u zich kunt richten op chatbotfunctionaliteit. LlamaIndex verwerkt de gegevenspijplijn helemaal van opname naar het gestreamde antwoord.

Schermopname van de chat-app in de browser met chatinvoer en het antwoord.

Architectuuroverzicht

De toepassingsstroom omvat:

  • Gebruik de chatinterface om een prompt in te voeren.
  • Het verzenden van de prompt van de gebruiker naar de serverloze API via HTTP-aanroepen.
  • U ontvangt de prompt van de gebruiker en gebruikt vervolgens het LlamaIndex-framework om het antwoord te verwerken en te streamen. De serverloze API maakt gebruik van een engine om een verbinding te maken met het Azure OpenAI-model voor grote talen (LLM) en de vectorindex van LlamaIndex.

In het volgende diagram ziet u een eenvoudige architectuur van de chat-app:

diagram van de architectuur voor de LlamaIndex RAG-chat-app.

In dit voorbeeld wordt LlamaIndex gebruikt om insluitingen te genereren en op te slaan in een eigen vectorarchief. LlamaIndex biedt ook integratie met andere vectoropslagservices, waaronder Azure AI Search. Deze integratie wordt niet in dit voorbeeld gedemonstreerd.

Waar bevindt Azure zich in deze architectuur?

De architectuur van de toepassing is afhankelijk van de volgende services en onderdelen:

  • Azure OpenAI- vertegenwoordigt de AI-provider waarnaar we de query's van de gebruiker verzenden.
  • LlamaIndex is het framework dat ons helpt bij het opnemen, transformeren en vectoriseren van onze inhoud (PDF-bestand) en het maken van een zoekindex op basis van onze gegevens.
  • Azure Container Apps is de containeromgeving waarin de toepassing wordt gehost.
  • Azure Managed Identity helpt ons om beveiliging van topklasse te garanderen en neemt voor u als ontwikkelaar de noodzaak weg om met referenties en API-sleutels om te gaan.

LlamaIndex beheert de gegevens van opname tot en met ophalen.

Als u een RAG-systeem (Retrieval-Augmented Generation) wilt implementeren met behulp van LlamaIndex, worden de volgende belangrijke stappen vergeleken met de llamaIndex-functionaliteit:

Proces Beschrijving LlamaIndex
Gegevensopname Gegevens importeren uit bronnen zoals PDF's, API's of databases. SimpleDirectoryReader
Gedeelde documenten Grote documenten opsplitsen in kleinere segmenten. Zinsplitsing
Vectorindex maken Maak een vectorindex voor efficiënte zoekopdrachten naar overeenkomsten. VectorStoreIndex
Recursief ophalen (optioneel) uit index Complexe gegevenssets beheren met hiërarchisch ophalen.
Omzetten naar query-engine Converteer de vectorindex naar een query-engine. asQueryEngine
Geavanceerde query-instelling (optioneel) Agenten gebruiken voor een systeem met meerdere agenten.
De RAG-pijplijn implementeren Definieer een objectieve functie die gebruikersquery's gebruikt en relevante documentsegmenten ophaalt.
Ophalen uitvoeren Query's verwerken en documenten opnieuw rangverkennen. RetrieverQueryEngine, CohereRerank

Voorwaarden

Een ontwikkelcontainer-omgeving is beschikbaar met alle afhankelijkheden die nodig zijn om dit artikel te voltooien. U kunt de ontwikkelcontainer uitvoeren in GitHub Codespaces (in een browser) of lokaal met behulp van Visual Studio Code.

Als u dit artikel wilt gebruiken, hebt u de volgende vereisten nodig:

Open ontwikkelomgeving

Gebruik de volgende instructies om een vooraf geconfigureerde ontwikkelomgeving met alle vereiste afhankelijkheden te implementeren om dit artikel te voltooien.

GitHub Codespaces voert een ontwikkelcontainer uit die wordt beheerd door GitHub met Visual Studio Code voor het web als de gebruikersinterface. Voor de eenvoudigste ontwikkelomgeving gebruikt u GitHub Codespaces zodat u de juiste ontwikkelhulpprogramma's en afhankelijkheden vooraf hebt geïnstalleerd om dit artikel te voltooien.

Belangrijk

Alle GitHub-accounts kunnen Codespaces elke maand maximaal 60 uur gratis gebruiken met 2 kernexemplaren. Zie maandelijkse opslag- en kernuren van GitHub Codespacesvoor meer informatie.

  1. Openen in codespace.

    Openen in GitHub Codespaces

  2. Wacht tot de coderuimte is gestart. Dit opstartproces kan enkele minuten duren.

  3. Meld u in de terminal onderaan het scherm aan bij Azure met de Azure Developer CLI.

    azd auth login
    

    Voltooi het verificatieproces.

  4. De resterende taken in dit artikel vinden plaats in de context van deze ontwikkelingscontainer.

Implementeren en uitvoeren

De voorbeeldopslagplaats bevat alle code- en configuratiebestanden die u nodig hebt om de serverloze chat-app in Azure te implementeren. Met de volgende stappen doorloopt u het proces voor het implementeren van het voorbeeld in Azure.

Chat-app implementeren in Azure

Belangrijk

Voor Azure-resources die in deze sectie zijn gemaakt, worden directe kosten in rekening gebracht, voornamelijk door de Azure AI Search-resource. Deze resources kunnen kosten genereren, zelfs als u de opdracht onderbreekt voordat deze volledig wordt uitgevoerd.

  1. Voer de volgende Azure Developer CLI-opdracht uit om de Azure-resources in te richten en de broncode te implementeren:

    azd up
    
  2. Gebruik de volgende tabel om de prompts te beantwoorden:

    Prompt Antwoorden
    Naam voor omgeving Houd het kort en kleine letters. Voeg uw naam of alias toe. Bijvoorbeeld john-chat. Het wordt gebruikt als onderdeel van de naam van de resourcegroep.
    Abonnement Selecteer het abonnement waarin u de resources wilt maken.
    Locatie (voor hosting) Selecteer een locatie bij u in de buurt in de lijst.
    Locatie voor het OpenAI-model Selecteer een locatie bij u in de buurt in de lijst. Als dezelfde locatie beschikbaar is als uw eerste locatie, selecteert u die.
  3. Wacht totdat de app is geïmplementeerd. Het kan 5-10 minuten duren voordat de implementatie is voltooid.

  4. Nadat de toepassing is geïmplementeerd, ziet u twee URL's die worden weergegeven in de terminal.

  5. Selecteer die URL met het label Deploying service webapp om de chattoepassing in een browser te openen.

    Schermopname van uitvoer van de implementatieopdracht met de URL van de webtoepassing.

Chat-app gebruiken om antwoorden te krijgen uit PDF-bestanden

De chat-app wordt vooraf geladen met informatie over de fysieke standaarden voor binnenlandse post vanuit een PDF-bestandscatalogus. U kunt de chat-app gebruiken om vragen te stellen over de verzendbrief en pakketten. Met de volgende stappen doorloopt u het proces voor het gebruik van de chat-app.

  1. Selecteer in de browser of voer in Hoeveel kost het om een groot pakket naar Frankrijk te versturen?.

  2. LlamaIndex leidt het antwoord af met het PDF-bestand en streamt het antwoord.

    Schermopname van de chat-app in de browser met chatinvoer en het antwoord.

    Het antwoord is afkomstig van Azure OpenAI met invloed van de PDF-gegevens die zijn opgenomen in het LlamaIndex-vectorarchief.

Bronnen opruimen

U kunt resources opschonen door twee dingen te verhelpen:

  • Met Azure resources kunt u de resources opschonen met Azure Developer CLI, azd.
  • Uw ontwikkelomgeving; GitHub Codespaces of DevContainers via Visual Studio Code.

Azure-resources opschonen

De Azure-resources die in dit artikel zijn gemaakt, worden gefactureerd voor uw Azure-abonnement. Als u deze resources in de toekomst niet meer nodig hebt, verwijdert u deze om te voorkomen dat er meer kosten in rekening worden gebracht.

Voer de volgende Azure Developer CLI-opdracht uit om de Azure-resources te verwijderen en de broncode te verwijderen:

azd down --purge

Ontwikkelomgevingen opschonen

Als u de GitHub Codespaces-omgeving verwijdert, zorgt u ervoor dat u de hoeveelheid gratis rechten per kernuren kunt maximaliseren die u voor uw account krijgt.

Belangrijk

Zie voor meer informatie over de rechten van uw GitHub-account maandelijkse opslag- en kernuren van GitHub Codespaces.

  1. Meld u aan bij het GitHub Codespaces-dashboard (https://github.com/codespaces).

  2. Zoek uw momenteel actieve Codespaces die afkomstig zijn uit de Azure-Samples/llama-index-javascript GitHub-opslagplaats.

    schermopname van alle actieve Codespaces, inclusief hun status en sjablonen.

  3. Open het contextmenu, ..., voor de coderuimte en selecteer Verwijderen.

Hulp krijgen

Deze voorbeeldopslagplaats biedt informatie over probleemoplossing.

Als uw probleem niet is opgelost, meldt u het probleem aan bij de problemen van de opslagplaats.

Volgende stap