Zephyrnet-logo

Bouw snel zeer nauwkeurige generatieve AI-applicaties op bedrijfsgegevens met behulp van Amazon Kendra, LangChain en grote taalmodellen

Datum:

Generatieve AI (GenAI) en grote taalmodellen (LLM's), zoals binnenkort beschikbaar via Amazonebodem en Amazone Titan transformeren de manier waarop ontwikkelaars en ondernemingen traditioneel complexe uitdagingen met betrekking tot natuurlijke taalverwerking en -begrip kunnen oplossen. Enkele van de voordelen die LLM's bieden, zijn onder meer de mogelijkheid om capabelere en boeiendere AI-ervaringen voor klantenservicetoepassingen te creëren en de productiviteit van werknemers te verbeteren door intuïtievere en nauwkeurigere reacties.

Voor deze use-cases is het echter van cruciaal belang dat de GenAI-applicaties die de conversatie-ervaringen implementeren, voldoen aan twee belangrijke criteria: beperk de reacties op bedrijfsgegevens, waardoor modelhallucinaties (onjuiste uitspraken) worden beperkt, en filter reacties op basis van de toegang tot de inhoud van de eindgebruiker rechten.

Om de GenAI-toepassingsreacties te beperken tot alleen bedrijfsgegevens, moeten we een techniek gebruiken die Retrieval Augmented Generation (RAG) wordt genoemd. Een toepassing die de RAG-benadering gebruikt, haalt informatie op die het meest relevant is voor het verzoek van de gebruiker uit de kennisbank of inhoud van de onderneming, bundelt deze als context samen met het verzoek van de gebruiker als prompt en stuurt deze vervolgens naar de LLM om een ​​GenAI-antwoord te krijgen. LLM's hebben beperkingen rond het maximale aantal woorden voor de invoerprompt, en daarom heeft het kiezen van de juiste passages uit duizenden of miljoenen documenten in de onderneming een directe invloed op de nauwkeurigheid van de LLM.

Bij het ontwerpen van effectieve RAG is het ophalen van inhoud een cruciale stap om ervoor te zorgen dat de LLM de meest relevante en beknopte context van bedrijfsinhoud ontvangt om nauwkeurige antwoorden te genereren. Dit is waar de zeer nauwkeurige, door machine learning (ML) aangedreven intelligent zoeken in Amazon Kendra speelt een belangrijke rol. Amazon Kendra is een volledig beheerde service die out-of-the-box semantische zoekmogelijkheden biedt voor state-of-the-art rangschikking van documenten en passages. U kunt de zeer nauwkeurige zoekfunctie in Amazon Kendra gebruiken om de meest relevante inhoud en documenten te vinden om de kwaliteit van uw RAG-payload te maximaliseren, wat betere LLM-antwoorden oplevert dan het gebruik van conventionele of op trefwoorden gebaseerde zoekoplossingen. Amazon Kendra biedt gebruiksvriendelijke deep learning-zoekmodellen die vooraf zijn getraind op 14 domeinen en waarvoor geen ML-expertise vereist is, dus u hoeft zich niet bezig te houden met het insluiten van woorden, het indelen van documenten en andere complexiteiten op een lager niveau die doorgaans vereist zijn voor RAG-implementaties. Amazon Kendra wordt ook geleverd met vooraf gebouwde connectoren voor populaire gegevensbronnen zoals Amazon eenvoudige opslagservice (Amazon S3), SharePoint, Confluence en websites, en ondersteunt gangbare documentindelingen zoals HTML, Word, PowerPoint, PDF, Excel en pure tekstbestanden. Om reacties te filteren op basis van alleen die documenten die de toestemming van de eindgebruiker toestaat, biedt Amazon Kendra connectoren met ondersteuning voor toegangsbeheerlijsten (ACL). Amazon Kendra biedt ook AWS Identiteits- en toegangsbeheer (Ik ben en AWS IAM Identiteitscentrum (opvolger van AWS Single Sign-On) integratie voor synchronisatie van gebruikersgroepinformatie met klantidentiteitsproviders zoals Okta en Azure AD.

In dit bericht laten we zien hoe u een RAG-workflow kunt implementeren door de mogelijkheden van Amazon Kendra te combineren met LLM's om ultramoderne GenAI-applicaties te creëren die conversatie-ervaringen bieden over uw bedrijfsinhoud. Na Amazonebodem lanceringen, zullen we een vervolgpost publiceren die laat zien hoe vergelijkbare GenAI-applicaties kunnen worden geïmplementeerd met Amazon Bedrock, dus houd het in de gaten.

Overzicht oplossingen

Het volgende diagram toont de architectuur van een GenAI-toepassing met een RAG-benadering.

We gebruiken een Amazon Kendra-index om ongestructureerde bedrijfsgegevens op te nemen uit gegevensbronnen zoals wikipagina's, MS SharePoint-sites, Atlassian Confluence en documentopslagplaatsen zoals Amazon S3. Wanneer een gebruiker interactie heeft met de GenAI-app, is de stroom als volgt:

  1. De gebruiker doet een verzoek aan de GenAI-app.
  2. De app geeft een zoekopdracht uit aan de Amazon Kendra-index op basis van het gebruikersverzoek.
  3. De index retourneert zoekresultaten met uittreksels van relevante documenten uit de opgenomen bedrijfsgegevens.
  4. De app verzendt het gebruikersverzoek en samen met de gegevens die uit de index zijn opgehaald als context in de LLM-prompt.
  5. De LLM retourneert een beknopt antwoord op het gebruikersverzoek op basis van de opgehaalde gegevens.
  6. Het antwoord van de LLM wordt teruggestuurd naar de gebruiker.

Met deze architectuur kunt u de meest geschikte LLM kiezen voor uw use case. LLM-opties omvatten onze partners Hugging Face, AI21 Labs, Cohere en anderen gehost op een Amazon Sage Maker endpoint, evenals modellen van bedrijven zoals antropisch en OpenAI. Met Amazonebodem, je zult kunnen kiezen Amazone Titan, Amazon's eigen LLM of partner-LLM's zoals die van AI21 Labs en Anthropic met API's veilig zonder dat uw gegevens het AWS-ecosysteem hoeven te verlaten. De extra voordelen die Amazon Bedrock biedt, zijn onder meer een serverloze architectuur, een enkele API om de ondersteunde LLM's aan te roepen en een beheerde service om de werkstroom van ontwikkelaars te stroomlijnen.

Voor de beste resultaten moet een GenAI-app de prompt ontwikkelen op basis van het gebruikersverzoek en de specifieke LLM die wordt gebruikt. Conversational AI-apps moeten ook de chatgeschiedenis en de context beheren. GenAI-app-ontwikkelaars kunnen open-source frameworks gebruiken, zoals LangChain die modules bieden om te integreren met de LLM naar keuze, en orkestratietools voor activiteiten zoals beheer van chatgeschiedenis en snelle engineering. Wij hebben de KendraIndexRetriever klasse, die een implementeert LangChain-retriever interface, welke applicaties kunnen gebruiken in combinatie met andere LangChain-interfaces zoals ketens om gegevens op te halen uit een Amazon Kendra-index. We hebben ook enkele voorbeeldtoepassingen in de GitHub repo. U kunt deze oplossing implementeren in uw AWS-account met behulp van de stapsgewijze handleiding in dit bericht.

Voorwaarden

Voor deze tutorial heb je een bash-terminal nodig met Python 3.9 of hoger geïnstalleerd op Linux, Mac of Windows Subsystem voor Linux, en een AWS-account. We raden ook aan om een AWS-Cloud9 instantie of een Amazon Elastic Compute-cloud (Amazon EC2) instantie.

Implementeer een RAG-workflow

Voer de volgende stappen uit om uw RAG-workflow te configureren:

  1. Gebruik de meegeleverde AWS CloudFormatie sjabloon om een ​​nieuwe Amazon Kendra-index te maken.

Deze sjabloon bevat voorbeeldgegevens met online AWS-documentatie voor Amazon Kendra, Amazon-Lex en Amazon Sage Maker. Als je een Amazon Kendra-index hebt en je eigen dataset hebt geïndexeerd, kun je die ook gebruiken. Het starten van de stapel duurt ongeveer 30 minuten, gevolgd door ongeveer 15 minuten om deze te synchroniseren en de gegevens in de index op te nemen. Wacht daarom ongeveer 45 minuten na het lanceren van de stapel. Let op de index-ID en AWS-regio op de stapel Uitgangen Tab.

  1. Voor een verbeterde GenAI-ervaring raden we aan een Verhoging van Amazon Kendra-servicequota voor maximaal DocumentExcerpt grootte, zodat Amazon Kendra grotere documentfragmenten biedt om de semantische context voor de LLM te verbeteren.
  2. Installeer de AWS SDK voor Python op de opdrachtregelinterface van uw keuze.
  3. Als u de voorbeeldweb-apps wilt gebruiken die zijn gebouwd met Gestroomlijnd, je moet eerst Streamlit installeren. Deze stap is optioneel als u alleen de opdrachtregelversies van de voorbeeldtoepassingen wilt uitvoeren.
  4. Installeer LangChain.
  5. Voor de voorbeeldtoepassingen die in deze zelfstudie worden gebruikt, moet u toegang hebben tot een of meer LLM's van Flan-T5-XL, Flan-T5-XXL, Anthropic Claud-V1 en OpenAI-text-davinci-003.
    1. Als u Flan-T5-XL of Flan-T5-XXL wilt gebruiken, implementeer ze dan op een eindpunt voor inferentie met Amazon SageMaker Studio Jumpstart.
    2. Als u wilt werken met Anthropic Claud-V1 of OpenAI-da-vinci-003, verkrijg dan de API-sleutels voor uw LLM's van uw interesse van https://www.anthropic.com/ en https://openai.com/, Respectievelijk.
  6. Volg de instructies in het GitHub repo om de KendraIndexRetriever interface en voorbeeldapplicaties.
  7. Voordat u de voorbeeldtoepassingen uitvoert, moet u omgevingsvariabelen instellen met de Amazon Kendra-indexdetails en API-sleutels van uw favoriete LLM of de SageMaker-eindpunten van uw implementaties voor Flan-T5-XL of Flan-T5-XXL. Het volgende is een voorbeeldscript om de omgevingsvariabelen in te stellen:
    export AWS_REGION="<YOUR-AWS-REGION>"
    export KENDRA_INDEX_ID="<YOUR-KENDRA-INDEX-ID>"
    export FLAN_XL_ENDPOINT="<YOUR-SAGEMAKER-ENDPOINT-FOR-FLAN-T-XL>"
    export FLAN_XXL_ENDPOINT="<YOUR-SAGEMAKER-ENDPOINT-FOR-FLAN-T-XXL>"
    export OPENAI_API_KEY="<YOUR-OPEN-AI-API-KEY>"
    export ANTHROPIC_API_KEY="<YOUR-ANTHROPIC-API-KEY>"

  8. Wijzig in een opdrachtregelvenster in het samples subdirectory van waar je de GitHub-repository hebt gekloond. U kunt de opdrachtregel-apps uitvoeren vanaf de opdrachtregel als python <sample-file-name.py>. U kunt de gestroomlijnde web-app uitvoeren door de map te wijzigen in samples en rennen streamlit run app.py <anthropic|flanxl|flanxxl|openai>.
  9. Open het voorbeeldbestand kendra_retriever_flan_xxl.py in een editor naar keuze.

Let op de verklaring result = run_chain(chain, "What's SageMaker?"). Dit is de gebruikersvraag ("Wat is SageMaker?") die door de keten wordt geleid die Flan-T-XXL gebruikt als de LLM en Amazon Kendra als de retriever. Wanneer dit bestand wordt uitgevoerd, kunt u de uitvoer als volgt observeren. De keten stuurde de gebruikersvraag naar de Amazon Kendra-index, haalde de top drie resultaatfragmenten op en stuurde ze als context in een prompt samen met de vraag, waarop de LLM reageerde met een beknopt antwoord. Het heeft ook de bronnen verstrekt (de URL's naar de documenten die zijn gebruikt bij het genereren van het antwoord).

  1. Laten we nu de web-app uitvoeren app.py as streamlit run app.py flanxxl. Voor deze specifieke run gebruiken we een Flan-T-XXL-model als de LLM.

Het opent een browservenster met de webinterface. U kunt een zoekopdracht invoeren, in dit geval "Wat is Amazon Lex?" Zoals te zien is in de volgende schermafbeelding, reageert de applicatie met een antwoord en de bronnen sectie bevat de URL's naar de documenten waaruit de fragmenten zijn opgehaald uit de Amazon Kendra-index en in de prompt als context samen met de query naar de LLM zijn verzonden.

  1. Laten we nu rennen app.py opnieuw en krijg een idee van de gesprekservaring met behulp van streamlit run app.py anthropic. Hier is de onderliggende LLM die wordt gebruikt Anthropic Claud-V1.

Zoals u in de volgende video kunt zien, geeft de LLM een gedetailleerd antwoord op de vraag van de gebruiker op basis van de documenten die het heeft opgehaald uit de Amazon Kendra-index en ondersteunt vervolgens het antwoord met de URL's naar de brondocumenten die werden gebruikt om het antwoord te genereren. Merk op dat de volgende zoekopdrachten Amazon Kendra niet expliciet vermelden; echter, de ConversationalRetrievalChain (een type keten dat deel uitmaakt van het LangChain-framework en een eenvoudig mechanisme biedt om conversatie-applicatiegebaseerde informatie te ontwikkelen die is opgehaald uit retriever-instanties die in deze LangChain-applicatie worden gebruikt), beheert de chatgeschiedenis en de context om een ​​passend antwoord te krijgen.

Merk ook op dat Amazon Kendra in de volgende schermafbeelding het extractieve antwoord op de vraag vindt en de topdocumenten met fragmenten op de shortlist zet. Vervolgens kan de LLM op basis van deze opgehaalde fragmenten een beknopter antwoord genereren.

In de volgende secties onderzoeken we twee use-cases voor het gebruik van generatieve AI met Amazon Kendra.

Use case 1: Generatieve AI voor financiële dienstverleners

Financiële organisaties creëren en bewaren gegevens in verschillende gegevensopslagplaatsen, waaronder financiële rapporten, juridische documenten en whitepapers. Ze moeten zich houden aan strikte overheidsvoorschriften en -toezicht, wat betekent dat werknemers snel relevante, nauwkeurige en betrouwbare informatie moeten kunnen vinden. Bovendien is het omslachtig en foutgevoelig om inzichten uit verschillende gegevensbronnen te zoeken en samen te voegen. Met Generative AI op AWS kunnen gebruikers snel antwoorden genereren uit verschillende gegevensbronnen en -typen, waardoor nauwkeurige antwoorden op bedrijfsschaal worden gesynthetiseerd.

We kozen voor een oplossing met behulp van Amazon Kendra en AI21 Lab's Jurassic-2 Jumbo Instruct LLM. Met Amazon Kendra kunt u eenvoudig gegevens opnemen uit meerdere gegevensbronnen, zoals Amazon S3, websites en ServiceNow. Vervolgens gebruikt Amazon Kendra de Jurassic-21 Jumbo Instruct LLM van AI2 Lab om inferentieactiviteiten uit te voeren op bedrijfsgegevens, zoals het samenvatten van gegevens, het genereren van rapporten en meer. Amazon Kendra breidt LLM's uit om nauwkeurige en verifieerbare informatie aan de eindgebruikers te verstrekken, waardoor hallucinatieproblemen met LLM's worden verminderd. Met de voorgestelde oplossing kunnen financiële analisten sneller beslissingen nemen met behulp van nauwkeurige gegevens om snel gedetailleerde en uitgebreide portefeuilles op te bouwen. We zijn van plan om deze oplossing in de nabije toekomst beschikbaar te maken als open-sourceproject.

Voorbeeld

Met behulp van de Kendra Chatbot-oplossing kunnen financiële analisten en auditors communiceren met hun bedrijfsgegevens (financiële rapporten en overeenkomsten) om betrouwbare antwoorden te vinden op auditgerelateerde vragen. Kendra ChatBot biedt antwoorden samen met bronlinks en heeft de mogelijkheid om langere antwoorden samen te vatten. De volgende schermafbeelding toont een voorbeeldgesprek met Kendra ChatBot.

Architectuur overzicht

Het volgende diagram illustreert de oplossingsarchitectuur.

De workflow omvat de volgende stappen:

  1. Financiële documenten en overeenkomsten worden opgeslagen op Amazon S3 en opgenomen in een Amazon Kendra-index met behulp van de S3-gegevensbronconnector.
  2. De LLM wordt gehost op een SageMaker-eindpunt.
  3. Een Amazon Lex-chatbot wordt gebruikt om met de gebruiker te communiceren via de Amazon Lex web-UI.
  4. De oplossing maakt gebruik van een AWS Lambda functie met LangChain om te orkestreren tussen Amazon Kendra, Amazon Lex en de LLM.
  5. Wanneer gebruikers de Amazon Lex-chatbot om antwoorden van een financieel document vragen, belt Amazon Lex de LangChain-orkestrator om aan het verzoek te voldoen.
  6. Op basis van de vraag haalt de LangChain-orkestrator de relevante financiële gegevens en alinea's uit Amazon Kendra.
  7. De LangChain-orkestrator levert deze relevante records aan de LLM samen met de query en relevante prompt om de vereiste activiteit uit te voeren.
  8. De LLM verwerkt het verzoek van de LangChain-orchestrator en retourneert het resultaat.
  9. De LangChain-orkestrator krijgt het resultaat van de LLM en stuurt het naar de eindgebruiker via de Amazon Lex-chatbot.

Use case 2: Generatieve AI voor onderzoekers en clinici in de gezondheidszorg

Artsen en onderzoekers analyseren vaak duizenden artikelen uit medische tijdschriften of gezondheidswebsites van de overheid als onderdeel van hun onderzoek. Wat nog belangrijker is, ze willen betrouwbare gegevensbronnen die ze kunnen gebruiken om hun bevindingen te valideren en te onderbouwen. Het proces vereist urenlang intensief onderzoek, analyse en gegevenssynthese, waardoor de tijd tot waarde en innovatie wordt verlengd. Met Generative AI op AWS kunt u verbinding maken met vertrouwde gegevensbronnen en query's in natuurlijke taal uitvoeren om binnen enkele seconden inzichten te genereren in deze vertrouwde gegevensbronnen. U kunt ook de bronnen bekijken die zijn gebruikt om het antwoord te genereren en de juistheid ervan valideren.

We kozen voor een oplossing met Amazon Kendra en Flan-T5-XXL van Hugging Face. Ten eerste gebruiken we Amazon Kendra om tekstfragmenten uit semantisch relevante documenten in het hele corpus te identificeren. Vervolgens gebruiken we de kracht van een LLM zoals Flan-T5-XXL om de tekstfragmenten van Amazon Kendra als context te gebruiken en een beknopt antwoord in natuurlijke taal te verkrijgen. In deze benadering functioneert de Amazon Kendra-index als de component voor het ophalen van passages in het RAG-mechanisme. Ten slotte gebruiken we Amazon Lex om de front-end van stroom te voorzien, waardoor eindgebruikers een naadloze en responsieve ervaring krijgen. We zijn van plan om deze oplossing in de nabije toekomst beschikbaar te maken als open-sourceproject.

Voorbeeld

De volgende schermafbeelding is afkomstig van een web-UI die voor de oplossing is gebouwd met behulp van de sjabloon die beschikbaar is op GitHub. De roze tekst zijn antwoorden van het Amazon Kendra LLM-systeem en de blauwe tekst zijn de gebruikersvragen.

Architectuur overzicht

De architectuur en oplossingsworkflow voor deze oplossing zijn vergelijkbaar met die van use case 1.

Opruimen

Om kosten te besparen, verwijdert u alle resources die u als onderdeel van de zelfstudie hebt geïmplementeerd. Als u de CloudFormation-stack hebt gestart, kunt u deze verwijderen via de AWS CloudFormation-console. Op dezelfde manier kunt u alle SageMaker-eindpunten verwijderen die u via de SageMaker-console hebt gemaakt.

Conclusie

Generatieve AI aangedreven door grote taalmodellen verandert de manier waarop mensen inzichten uit informatie verwerven en toepassen. Voor bedrijfsgebruiksscenario's moeten de inzichten echter worden gegenereerd op basis van bedrijfsinhoud om de antwoorden binnen het domein te houden en hallucinaties te verminderen, met behulp van de Retrieval Augmented Generation-benadering. In de RAG-benadering hangt de kwaliteit van de inzichten die door de LLM worden gegenereerd af van de semantische relevantie van de opgehaalde informatie waarop deze is gebaseerd, waardoor het steeds noodzakelijker wordt om oplossingen zoals Amazon Kendra te gebruiken die zeer nauwkeurige semantische zoekresultaten leveren uit de doos. Met zijn uitgebreide ecosysteem van connectoren voor gegevensbronnen, ondersteuning voor veelgebruikte bestandsindelingen en beveiliging, kunt u snel aan de slag met het gebruik van generatieve AI-oplossingen voor zakelijke gebruiksscenario's met Amazon Kendra als ophaalmechanisme.

Raadpleeg voor meer informatie over het werken met Generative AI op AWS Aankondiging van nieuwe tools voor bouwen met generatieve AI op AWS. U kunt beginnen met experimenteren en RAG-proofs of concept (POC's) bouwen voor uw zakelijke GenAI-apps, met behulp van de methode die in deze blog wordt beschreven. Zoals eerder vermeld, een keer Amazonebodem beschikbaar is, zullen we een vervolgblog publiceren waarin wordt getoond hoe je RAG kunt bouwen met Amazon Bedrock.


Over de auteurs

Abhinav JawadekarAbhinav Jawadekar is een Principal Solutions Architect gericht op Amazon Kendra in het AI/ML-taalservicesteam bij AWS. Abhinav werkt samen met AWS-klanten en partners om hen te helpen bij het bouwen van intelligente zoekoplossingen op AWS.

Jean-Pierre Dodel is de Principal Product Manager voor Amazon Kendra en leidt belangrijke strategische productmogelijkheden en roadmap-prioritering. Hij brengt uitgebreide Enterprise Search- en ML/AI-ervaring naar het team, met eerdere leidende functies bij Autonomy, HP en zoekstartups voordat hij 7 jaar geleden bij Amazon kwam.

Mithil Sjah is ML/AI-specialist bij AWS. Momenteel helpt hij klanten in de publieke sector het leven van burgers te verbeteren door Machine Learning-oplossingen op AWS te bouwen.

Firaz Akmal is Sr. Product Manager voor Amazon Kendra bij AWS. Hij is een pleitbezorger van de klant en helpt klanten hun zoek- en generatieve AI-use-cases met Kendra op AWS te begrijpen. Buiten zijn werk brengt Firaz graag tijd door in de bergen van de PNW of ervaart hij de wereld door het perspectief van zijn dochter.

Abhishek Maligehalli Shivalingaiah is een Senior AI Services Solution Architect bij AWS met focus op Amazon Kendra. Hij is gepassioneerd door het bouwen van applicaties met behulp van Amazon Kendra, Generative AI en NLP. Hij heeft ongeveer 10 jaar ervaring in het bouwen van Data & AI-oplossingen om waarde te creëren voor klanten en ondernemingen. Hij heeft voor de lol een (persoonlijke) chatbot gebouwd om vragen over zijn carrière en professionele reis te beantwoorden. Buiten zijn werk om maakt hij graag portretten van familie en vrienden en houdt hij van het maken van kunstwerken.

spot_img

Laatste intelligentie

spot_img