Ett av de mest användbara applikationsmönstren för generativa AI-arbetsbelastningar är Retrieval Augmented Generation (RAG). I RAG-mönstret hittar vi delar av referensinnehåll relaterat till en inmatningsuppmaning genom att utföra likhetssökningar på inbäddningar. Inbäddningar fångar informationsinnehållet i textkroppar, vilket gör att NLP-modeller (natural language processing) kan arbeta med språk i en numerisk form. Inbäddningar är bara vektorer av flyttal, så vi kan analysera dem för att hjälpa till att svara på tre viktiga frågor: Förändras våra referensdata över tiden? Förändras frågorna som användarna ställer över tid? Och slutligen, hur väl täcker våra referensdata de frågor som ställs?
I det här inlägget kommer du att lära dig om några av övervägandena för att bädda in vektoranalys och detektera signaler för inbäddningsdrift. Eftersom inbäddningar är en viktig datakälla för NLP-modeller i allmänhet och generativa AI-lösningar i synnerhet, behöver vi ett sätt att mäta om våra inbäddningar förändras över tiden (drift). I det här inlägget kommer du att se ett exempel på hur man utför driftdetektering på inbäddningsvektorer med hjälp av en klustringsteknik med stora språkmodeller (LLMS) utplacerade från Amazon SageMaker JumpStart. Du kommer också att kunna utforska dessa begrepp genom två medföljande exempel, inklusive en från början till slut exempelapplikation eller, valfritt, en delmängd av programmet.
Översikt över RAG
Smakämnen RAG mönster låter dig hämta kunskap från externa källor, såsom PDF-dokument, wikiartiklar eller samtalsutskrifter, och sedan använda den kunskapen för att utöka instruktionsuppmaningen som skickas till LLM. Detta gör att LLM kan referera till mer relevant information när ett svar genereras. Om du till exempel frågar en LLM hur man gör chokladkakor kan det innehålla information från ditt eget receptbibliotek. I det här mönstret konverteras recepttexten till inbäddningsvektorer med hjälp av en inbäddningsmodell och lagras i en vektordatabas. Inkommande frågor konverteras till inbäddningar och sedan kör vektordatabasen en likhetssökning för att hitta relaterat innehåll. Frågan och referensdata går sedan in i prompten för LLM.
Låt oss ta en närmare titt på de inbäddningsvektorer som skapas och hur man utför driftanalys på dessa vektorer.
Analys av inbäddningsvektorer
Inbäddningsvektorer är numeriska representationer av våra data så analys av dessa vektorer kan ge insikt i våra referensdata som senare kan användas för att detektera potentiella signaler för drift. Inbäddningsvektorer representerar ett objekt i n-dimensionellt utrymme, där n ofta är stort. Till exempel skapar GPT-J 6B-modellen, som används i det här inlägget, vektorer av storlek 4096. För att mäta drift, anta att vår applikation fångar inbäddningsvektorer för både referensdata och inkommande meddelanden.
Vi börjar med att utföra dimensionsreduktion med hjälp av Principal Component Analysis (PCA). PCA försöker minska antalet dimensioner samtidigt som det mesta av variansen i data bevaras. I det här fallet försöker vi hitta antalet dimensioner som bevarar 95 % av variansen, vilket borde fånga allt inom två standardavvikelser.
Sedan använder vi K-Means för att identifiera en uppsättning klustercentra. K-Means försöker gruppera punkter i kluster så att varje kluster är relativt kompakt och klustren är så långt från varandra som möjligt.
Vi beräknar följande information baserat på klustringsutdata som visas i följande figur:
- Antalet dimensioner i PCA som förklarar 95 % av variansen
- Platsen för varje klustercentrum eller tyngdpunkt
Dessutom tittar vi på andelen (högre eller lägre) av prover i varje kluster, som visas i följande figur.
Slutligen använder vi denna analys för att beräkna följande:
- Inertia – Tröghet är summan av kvadrerade avstånd till klustercentroider, som mäter hur väl data klustrades med hjälp av K-Means.
- Silhouette poäng – Silhouette-poängen är ett mått för validering av konsistensen inom kluster och sträcker sig från -1 till 1. Ett värde nära 1 betyder att punkterna i ett kluster ligger nära de andra punkterna i samma kluster och långt från punkter i de andra klustren. En visuell representation av siluettpoängen kan ses i följande figur.
Vi kan periodiskt fånga denna information för ögonblicksbilder av inbäddningarna för både källreferensdata och uppmaningar. Genom att fånga in dessa data kan vi analysera potentiella signaler för inbäddningsdrift.
Upptäcker inbäddningsdrift
Med jämna mellanrum kan vi jämföra klustringsinformationen genom ögonblicksbilder av data, som inkluderar referensdatainbäddningar och promptinbäddningar. Först kan vi jämföra antalet dimensioner som behövs för att förklara 95 % av variationen i inbäddningsdata, trögheten och siluettpoängen från klustringsjobbet. Som du kan se i följande tabell, jämfört med en baslinje, kräver den senaste ögonblicksbilden av inbäddningar 39 fler dimensioner för att förklara variansen, vilket indikerar att vår data är mer spridd. Trögheten har ökat, vilket indikerar att proverna är samlade längre bort från sina klustercentrum. Dessutom har siluettpoängen sjunkit, vilket indikerar att klustren inte är lika väldefinierade. För snabba data kan det tyda på att de typer av frågor som kommer in i systemet täcker fler ämnen.
Därefter kan vi i följande figur se hur andelen prover i varje kluster har förändrats över tiden. Detta kan visa oss om våra nyare referensdata i stort sett liknar den tidigare uppsättningen eller täcker nya områden.
Slutligen kan vi se om klustercentrumen rör sig, vilket skulle visa drift i informationen i klustren, som visas i följande tabell.
Referensdatatäckning för inkommande frågor
Vi kan också utvärdera hur väl vår referensdata överensstämmer med de inkommande frågorna. För att göra detta tilldelar vi varje prompt-inbäddning till ett referensdatakluster. Vi beräknar avståndet från varje prompt till dess motsvarande centrum och tittar på medelvärdet, medianen och standardavvikelsen för dessa avstånd. Vi kan lagra den informationen och se hur den förändras över tid.
Följande figur visar ett exempel på analys av avståndet mellan prompt inbäddning och referensdatacenter över tid.
Som du kan se minskar avståndsstatistiken för medelvärde, median och standardavvikelse mellan promptinbäddningar och referensdatacenter mellan den initiala baslinjen och den senaste ögonblicksbilden. Även om det absoluta värdet av avståndet är svårt att tolka, kan vi använda trenderna för att avgöra om den semantiska överlappningen mellan referensdata och inkommande frågor blir bättre eller sämre med tiden.
Exempel på ansökan
För att samla in de experimentella resultaten som diskuterades i föregående avsnitt byggde vi en exempelapplikation som implementerar RAG-mönstret med hjälp av inbäddnings- och generationsmodeller som distribueras via SageMaker JumpStart och som är värd på Amazon SageMaker slutpunkter i realtid.
Applikationen har tre kärnkomponenter:
- Vi använder ett interaktivt flöde, som inkluderar ett användargränssnitt för att fånga uppmaningar, kombinerat med ett RAG-orkestreringslager, med hjälp av LangChain.
- Databearbetningsflödet extraherar data från PDF-dokument och skapar inbäddningar som lagras i Amazon OpenSearch Service. Vi använder även dessa i applikationens slutliga inbäddningsdriftanalyskomponent.
- Inbäddningarna fångas in Amazon enkel lagringstjänst (Amazon S3) via Amazon Kinesis Data Firehose, och vi kör en kombination av AWS-lim extrahera, transformera och ladda (ETL) jobb och Jupyter-anteckningsböcker för att utföra inbäddningsanalysen.
Följande diagram illustrerar end-to-end-arkitekturen.
Den fullständiga provkoden finns tillgänglig på GitHub. Den medföljande koden finns i två olika mönster:
- Exempel på full-stack-applikation med en Streamlit frontend – Detta ger en heltäckande applikation, inklusive ett användargränssnitt som använder Streamlit för att fånga uppmaningar, kombinerat med RAG-orkestreringsskiktet, med hjälp av LangChain som körs på Amazon Elastic Container Service (Amazon ECS) med AWS Fargate
- Backend-applikation – För de som inte vill distribuera hela applikationsstacken kan du välja att bara distribuera backend AWS Cloud Development Kit (AWS CDK) stack och använd sedan Jupyter-anteckningsboken för att utföra RAG-orkestrering med LangChain
För att skapa de medföljande mönstren finns det flera förutsättningar som beskrivs i följande avsnitt, börja med att distribuera de generativa modellerna och textinbäddningsmodellerna och sedan gå vidare till de ytterligare förutsättningarna.
Distribuera modeller via SageMaker JumpStart
Båda mönstren förutsätter distributionen av en inbäddningsmodell och generativ modell. För detta kommer du att distribuera två modeller från SageMaker JumpStart. Den första modellen, GPT-J 6B, används som inbäddningsmodell och den andra modellen, Falcon-40b, används för textgenerering.
Du kan distribuera var och en av dessa modeller genom SageMaker JumpStart från AWS Management Console, Amazon SageMaker Studio, eller programmatiskt. För mer information, se Hur man använder JumpStart foundation-modeller. För att förenkla distributionen kan du använda medföljande anteckningsbok härledd från anteckningsböcker som skapats automatiskt av SageMaker JumpStart. Den här anteckningsboken hämtar modellerna från SageMaker JumpStart ML-hubben och distribuerar dem till två separata SageMaker-slutpunkter i realtid.
Exempelanteckningsboken har också en rensningssektion. Kör inte det avsnittet ännu, eftersom det kommer att ta bort de slutpunkter som just distribuerats. Du kommer att slutföra rensningen i slutet av genomgången.
När du har bekräftat att slutpunkterna har implementerats är du redo att distribuera hela exempelapplikationen. Men om du är mer intresserad av att bara utforska backend- och analysanteckningsböckerna, kan du valfritt distribuera endast det, vilket tas upp i nästa avsnitt.
Alternativ 1: Implementera endast backend-applikationen
Detta mönster låter dig distribuera enbart backend-lösningen och interagera med lösningen med hjälp av en Jupyter-anteckningsbok. Använd det här mönstret om du inte vill bygga ut hela frontend-gränssnittet.
Förutsättningar
Du bör ha följande förutsättningar:
- En slutpunkt för SageMaker JumpStart-modellen har implementerats – Distribuera modellerna till SageMaker realtidsslutpunkter med SageMaker JumpStart, som tidigare beskrivits
- Implementeringsparametrar – Anteckna följande:
- Textmodellens slutpunktsnamn – Slutpunktsnamnet för textgenereringsmodellen som distribueras med SageMaker JumpStart
- Namn på inbäddningsmodellens slutpunkt – Slutpunktsnamnet för inbäddningsmodellen som distribueras med SageMaker JumpStart
Distribuera resurserna med AWS CDK
Använd distributionsparametrarna som noterades i föregående avsnitt för att distribuera AWS CDK-stacken. För mer information om AWS CDK-installation, se Komma igång med AWS CDK.
Se till att Docker är installerat och körs på arbetsstationen som kommer att användas för AWS CDK-distribution. Hänvisa till Skaffa Docker för ytterligare vägledning.
Alternativt kan du ange kontextvärdena i en fil som heter cdk.context.json
i pattern1-rag/cdk
katalog och kör cdk deploy BackendStack --exclusively
.
Utplaceringen kommer att skriva ut utdata, av vilka en del kommer att behövas för att köra den bärbara datorn. Innan du kan börja fråga och svara, bädda in referensdokumenten, som visas i nästa avsnitt.
Bädda in referensdokument
För denna RAG-metod bäddas referensdokument först in med en textinbäddningsmodell och lagras i en vektordatabas. I denna lösning har en inmatningspipeline byggts som tar in PDF-dokument.
An Amazon Elastic Compute Cloud (Amazon EC2)-instans har skapats för PDF-dokumentinmatningen och en Amazon Elastic File System (Amazon EFS) filsystem är monterat på EC2-instansen för att spara PDF-dokumenten. En AWS DataSync Uppgiften körs varje timme för att hämta PDF-dokument som finns i EFS-filsystemets sökväg och ladda upp dem till en S3-hink för att starta textinbäddningsprocessen. Denna process bäddar in referensdokumenten och sparar inbäddningarna i OpenSearch Service. Den sparar också ett inbäddningsarkiv till en S3-hink genom Kinesis Data Firehose för senare analys.
För att få in referensdokumenten, utför följande steg:
- Hämta provet EC2-instans-ID som skapades (se AWS CDK-utdata
JumpHostId
) och anslut med Sessionshanteraren, en förmåga av AWS systemchef. För instruktioner, se Anslut till din Linux-instans med AWS Systems Manager Session Manager. - Gå till katalogen
/mnt/efs/fs1
, som är där EFS-filsystemet är monterat, och skapa en mapp som heteringest
: - Lägg till dina PDF-referensdokument till
ingest
katalog.
DataSync-uppgiften är konfigurerad för att ladda upp alla filer som finns i den här katalogen till Amazon S3 för att starta inbäddningsprocessen.
DataSync-uppgiften körs enligt ett timschema; du kan valfritt starta uppgiften manuellt för att starta inbäddningsprocessen omedelbart för de PDF-dokument du lagt till.
- För att starta uppgiften, lokalisera uppgifts-ID:t från AWS CDK-utgången
DataSyncTaskID
och starta uppgiften med standardvärden.
Efter att inbäddningarna har skapats kan du starta RAG-frågan och svara genom en Jupyter-anteckningsbok, som visas i nästa avsnitt.
Frågor och svar med hjälp av en Jupyter-anteckningsbok
Följ följande steg:
- Hämta SageMaker-anteckningsbokens instansnamn från AWS CDK-utgången
NotebookInstanceName
och anslut till JupyterLab från SageMaker-konsolen. - Gå till katalogen
fmops/full-stack/pattern1-rag/notebooks/
. - Öppna och kör anteckningsboken
query-llm.ipynb
i anteckningsboken för att utföra frågor och svar med RAG.
Se till att använda conda_python3
kärna för anteckningsboken.
Det här mönstret är användbart för att utforska backend-lösningen utan att behöva tillhandahålla ytterligare förutsättningar som krävs för full-stack-applikationen. Nästa avsnitt täcker implementeringen av en fullstack-applikation, inklusive både frontend- och backend-komponenterna, för att tillhandahålla ett användargränssnitt för att interagera med din generativa AI-applikation.
Alternativ 2: Implementera provapplikationen i full stack med en Streamlit frontend
Detta mönster låter dig distribuera lösningen med ett användargränssnitt för frågor och svar.
Förutsättningar
För att distribuera exempelapplikationen måste du ha följande förutsättningar:
- SageMaker JumpStart-modellens slutpunkt har implementerats – Distribuera modellerna till dina SageMaker-slutpunkter i realtid med SageMaker JumpStart, som beskrivs i föregående avsnitt, med hjälp av de medföljande anteckningsböckerna.
- Amazon Route 53 värd zon - Skapa en Amazon väg 53 offentligt värdområde att använda för denna lösning. Du kan också använda en befintlig, offentlig värdzon på Route 53, som t.ex
example.com
. - AWS Certificate Manager-certifikat – Bestämmelse en AWS certifikathanterare (ACM) TLS-certifikat för det Route 53-värdade zondomännamnet och dess tillämpliga underdomäner, som t.ex.
example.com
och*.example.com
för alla underdomäner. För instruktioner, se Begär offentligt intyg. Detta certifikat används för att konfigurera HTTPS på Amazon CloudFront och ursprungslastbalanseraren. - Implementeringsparametrar – Anteckna följande:
- Frontend-applikation anpassat domännamn – Ett anpassat domännamn som används för att komma åt gränssnittsexemplet. Det angivna domännamnet används för att skapa en Route 53 DNS-post som pekar på frontend CloudFront-distributionen; till exempel,
app.example.com
. - Anpassat domännamn för lastbalanserare – Ett anpassat domännamn som används för ursprunget för CloudFront-distributionens belastningsbalanserare. Det angivna domännamnet används för att skapa en Route 53 DNS-post som pekar på ursprungsbelastningsutjämnaren; till exempel,
app-lb.example.com
. - Route 53 värd zon-ID – Route 53-värdzonens ID för de anpassade domännamnen som tillhandahålls; till exempel,
ZXXXXXXXXYYYYYYYYY
. - Väg 53 värd zonnamn – Namnet på Route 53-värdzonen för att vara värd för de anpassade domännamnen som tillhandahålls; till exempel,
example.com
. - ACM-certifikat ARN – ARN för ACM-certifikatet som ska användas med den anpassade domänen.
- Textmodellens slutpunktsnamn – Slutpunktsnamnet för textgenereringsmodellen som distribueras med SageMaker JumpStart.
- Namn på inbäddningsmodellens slutpunkt – Slutpunktsnamnet för inbäddningsmodellen som distribueras med SageMaker JumpStart.
- Frontend-applikation anpassat domännamn – Ett anpassat domännamn som används för att komma åt gränssnittsexemplet. Det angivna domännamnet används för att skapa en Route 53 DNS-post som pekar på frontend CloudFront-distributionen; till exempel,
Distribuera resurserna med AWS CDK
Använd distributionsparametrarna du noterade i förutsättningarna för att distribuera AWS CDK-stacken. För mer information, se Komma igång med AWS CDK.
Se till att Docker är installerat och körs på arbetsstationen som kommer att användas för AWS CDK-distributionen.
I den föregående koden representerar -c ett kontextvärde, i form av de nödvändiga förutsättningarna, som tillhandahålls vid inmatning. Alternativt kan du ange kontextvärdena i en fil som heter cdk.context.json
i pattern1-rag/cdk
katalog och kör cdk deploy --all
.
Observera att vi anger regionen i filen bin/cdk.ts
. Konfigurering av ALB-åtkomstloggar kräver en specificerad region. Du kan ändra denna region före implementering.
Implementeringen kommer att skriva ut URL:en för att komma åt Streamlit-applikationen. Innan du kan börja fråga och svara måste du bädda in referensdokumenten, som visas i nästa avsnitt.
Bädda in referensdokumenten
För en RAG-metod bäddas referensdokument först in med en textinbäddningsmodell och lagras i en vektordatabas. I denna lösning har en inmatningspipeline byggts som tar in PDF-dokument.
Som vi diskuterade i det första distributionsalternativet har en exempel EC2-instans skapats för PDF-dokumentinmatningen och ett EFS-filsystem är monterat på EC2-instansen för att spara PDF-dokumenten. En DataSync-uppgift körs varje timme för att hämta PDF-dokument som finns i EFS-filsystemets sökväg och ladda upp dem till en S3-bucket för att starta textinbäddningsprocessen. Denna process bäddar in referensdokumenten och sparar inbäddningarna i OpenSearch Service. Den sparar också ett inbäddningsarkiv till en S3-hink genom Kinesis Data Firehose för senare analys.
För att få in referensdokumenten, utför följande steg:
- Hämta provet EC2-instans-ID som skapades (se AWS CDK-utdata
JumpHostId
) och anslut med Session Manager. - Gå till katalogen
/mnt/efs/fs1
, som är där EFS-filsystemet är monterat, och skapa en mapp som heteringest
: - Lägg till dina PDF-referensdokument till
ingest
katalog.
DataSync-uppgiften är konfigurerad för att ladda upp alla filer som finns i den här katalogen till Amazon S3 för att starta inbäddningsprocessen.
DataSync-uppgiften körs enligt ett timschema. Du kan valfritt starta uppgiften manuellt för att starta inbäddningsprocessen omedelbart för PDF-dokumenten du lagt till.
- För att starta uppgiften, lokalisera uppgifts-ID:t från AWS CDK-utgången
DataSyncTaskID
och starta uppgiften med standardvärden.
Fråga och svar
Efter att referensdokumenten har bäddats in kan du starta RAG-frågan och svara genom att besöka URL:en för att komma åt Streamlit-applikationen. En Amazon Cognito autentiseringslager används, så det kräver att man skapar ett användarkonto i Amazon Cognito-användarpoolen som distribueras via AWS CDK (se AWS CDK-utgången för användarpoolens namn) för förstagångsåtkomst till applikationen. För instruktioner om hur du skapar en Amazon Cognito-användare, se Skapa en ny användare i AWS Management Console.
Bädda in driftanalys
I det här avsnittet visar vi hur du utför driftanalys genom att först skapa en baslinje för referensdatainbäddningarna och promptinbäddningarna och sedan skapa en ögonblicksbild av inbäddningarna över tiden. Detta låter dig jämföra baslinjeinbäddningar med ögonblicksbildinbäddningar.
Skapa en inbäddningsbaslinje för referensdata och prompt
För att skapa en inbäddningsbaslinje för referensdata, öppna AWS Glue-konsolen och välj ETL-jobbet embedding-drift-analysis
. Ställ in parametrarna för ETL-jobbet enligt följande och kör jobbet:
- uppsättning
--job_type
tillBASELINE
. - uppsättning
--out_table
till Amazon DynamoDB tabell för referensinbäddningsdata. (Se AWS CDK-utgångenDriftTableReference
för tabellnamnet.) - uppsättning
--centroid_table
till DynamoDB-tabellen för referenscentroiddata. (Se AWS CDK-utgångenCentroidTableReference
för tabellnamnet.) - uppsättning
--data_path
till S3-hinken med prefixet; till exempel,s3://
/embeddingarchive/
. (Se AWS CDK-utgångenBucketName
för hinkens namn.)
På samma sätt använder ETL-jobbet embedding-drift-analysis
, skapa en inbäddningsbaslinje för uppmaningarna. Ställ in parametrarna för ETL-jobbet enligt följande och kör jobbet:
- uppsättning
--job_type
tillBASELINE
- uppsättning
--out_table
till DynamoDB-tabellen för snabb inbäddning av data. (Se AWS CDK-utgångenDriftTablePromptsName
för tabellnamnet.) - uppsättning
--centroid_table
till DynamoDB-tabellen för prompt centroiddata. (Se AWS CDK-utgångenCentroidTablePrompts
för tabellnamnet.) - uppsättning
--data_path
till S3-hinken med prefixet; till exempel,s3://
/promptarchive/
. (Se AWS CDK-utgångenBucketName
för hinkens namn.)
Skapa en inbäddningsögonblicksbild för referensdata och prompt
När du har matat in ytterligare information i OpenSearch Service, kör ETL-jobbet embedding-drift-analysis
igen för att ögonblicksbilda referensdatainbäddningarna. Parametrarna kommer att vara desamma som ETL-jobbet som du körde för att skapa inbäddningsbaslinjen för referensdata som visas i föregående avsnitt, med undantag för att ställa in --job_type
parametern till SNAPSHOT
.
På liknande sätt, kör ETL-jobbet för att få en ögonblicksbild av promptinbäddningarna embedding-drift-analysis
igen. Parametrarna kommer att vara desamma som ETL-jobbet som du körde för att skapa inbäddningsbaslinjen för uppmaningarna som visas i föregående avsnitt, med undantag för att ställa in --job_type
parametern till SNAPSHOT
.
Jämför baslinjen med ögonblicksbilden
För att jämföra inbäddningsbaslinjen och ögonblicksbilden för referensdata och uppmaningar, använd den medföljande anteckningsboken pattern1-rag/notebooks/drift-analysis.ipynb
.
För att titta på inbäddningsjämförelse för referensdata eller uppmaningar, ändra DynamoDB-tabellnamnsvariablerna (tbl
och c_tbl
) i notebook-datorn till lämplig DynamoDB-tabell för varje körning av notebook-datorn.
Anteckningsbokens variabel tbl
bör ändras till lämpligt drifttabellnamn. Följande är ett exempel på var variabeln ska konfigureras i anteckningsboken.
Tabellnamnen kan hämtas enligt följande:
- För referensinbäddningsdata, hämta drifttabellnamnet från AWS CDK-utgången
DriftTableReference
- Hämta drifttabellnamnet från AWS CDK-utgången för att bädda in informationen
DriftTablePromptsName
Dessutom anteckningsboken variabel c_tbl
bör ändras till lämpligt tyngdpunktstabellnamn. Följande är ett exempel på var variabeln ska konfigureras i anteckningsboken.
Tabellnamnen kan hämtas enligt följande:
- För referensinbäddningsdata, hämta tyngdpunktstabellnamnet från AWS CDK-utgången
CentroidTableReference
- Hämta tyngdpunktstabellnamnet från AWS CDK-utgången för snabb inbäddningsdata
CentroidTablePrompts
Analysera promptavståndet från referensdata
Kör först AWS Glue-jobbet embedding-distance-analysis
. Detta jobb kommer att ta reda på vilket kluster, från K-Means-utvärderingen av referensdatainbäddningarna, som varje prompt tillhör. Den beräknar sedan medelvärdet, medianen och standardavvikelsen för avståndet från varje prompt till mitten av motsvarande kluster.
Du kan köra anteckningsboken pattern1-rag/notebooks/distance-analysis.ipynb
för att se trenderna i avståndsmåtten över tid. Detta kommer att ge dig en känsla av den övergripande trenden i fördelningen av de snabba inbäddningsavstånden.
Anteckningsboken pattern1-rag/notebooks/prompt-distance-outliers.ipynb
är en AWS Glue-anteckningsbok som letar efter extremvärden, vilket kan hjälpa dig att identifiera om du får fler meddelanden som inte är relaterade till referensdata.
Övervaka likhetspoäng
Alla likhetspoäng från OpenSearch Service är inloggade amazoncloudwatch under rag
namnutrymme. Instrumentpanelen RAG_Scores
visar medelpoängen och det totala antalet intagna poäng.
Städa upp
Ta bort alla resurser som du skapat för att undvika framtida avgifter.
Ta bort de distribuerade SageMaker-modellerna
Se avsnittet om städning av medföljande exempel på anteckningsbok för att ta bort de distribuerade SageMaker JumpStart-modellerna, eller så kan du radera modellerna på SageMaker-konsolen.
Ta bort AWS CDK-resurserna
Om du angav dina parametrar i en cdk.context.json
fil, rensa upp enligt följande:
Om du angav dina parametrar på kommandoraden och bara distribuerade backend-applikationen (backend AWS CDK-stacken), rensa upp så här:
Om du angav dina parametrar på kommandoraden och distribuerade den fullständiga lösningen (frontend- och backend-AWS CDK-stackarna), städa upp så här:
Slutsats
I det här inlägget gav vi ett fungerande exempel på en applikation som fångar inbäddningsvektorer för både referensdata och uppmaningar i RAG-mönstret för generativ AI. Vi visade hur man utför klusteranalys för att avgöra om referens- eller promptdata glider över tiden och hur väl referensdatan täcker de typer av frågor som användarna ställer. Om du upptäcker drift kan det ge en signal om att miljön har förändrats och din modell får nya ingångar som den kanske inte är optimerad för att hantera. Detta möjliggör proaktiv utvärdering av den nuvarande modellen mot ändrade indata.
Om författarna
Abdullahi Olaoye är Senior Solutions Architect på Amazon Web Services (AWS). Abdullahi har en MSC i Computer Networking från Wichita State University och är en publicerad författare som har haft roller inom olika teknikdomäner som DevOps, modernisering av infrastruktur och AI. Han är för närvarande fokuserad på Generativ AI och spelar en nyckelroll i att hjälpa företag att utforma och bygga banbrytande lösningar som drivs av Generativ AI. Bortom teknikens område finner han glädje i konsten att utforska. När han inte skapar AI-lösningar tycker han om att resa med sin familj för att utforska nya platser.
Randy DeFauw är Senior Principal Solutions Architect på AWS. Han har en MSEE från University of Michigan, där han arbetade med datorseende för autonoma fordon. Han har också en MBA från Colorado State University. Randy har haft en mängd olika positioner inom teknikområdet, allt från mjukvaruteknik till produkthantering. In gick in i Big Data-utrymmet 2013 och fortsätter att utforska det området. Han arbetar aktivt med projekt inom ML-området och har presenterat på ett flertal konferenser inklusive Strata och GlueCon.
Shelbee Eigenbrode är en huvudarkitekt för AI och Machine Learning Specialist Solutions på Amazon Web Services (AWS). Hon har varit inom teknik i 24 år och spänner över flera branscher, teknologier och roller. Hon fokuserar för närvarande på att kombinera sin DevOps- och ML-bakgrund i MLOps-domänen för att hjälpa kunder att leverera och hantera ML-arbetsbelastningar i stor skala. Med över 35 patent beviljade inom olika teknikdomäner har hon en passion för kontinuerlig innovation och att använda data för att driva affärsresultat. Shelbee är en medskapare och instruktör för specialiseringen Practical Data Science på Coursera. Hon är också meddirektör för Women In Big Data (WiBD), kapitel i Denver. På fritiden spenderar hon gärna tid med sin familj, sina vänner och överaktiva hundar.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/monitor-embedding-drift-for-llms-deployed-from-amazon-sagemaker-jumpstart/
- : har
- :är
- :inte
- :var
- $UPP
- 1
- 10
- 100
- 2013
- 24
- 35%
- 39
- 7
- 9
- 95%
- a
- Able
- Om oss
- Absolut
- tillgång
- Konto
- ACM
- tvärs
- aktivt
- lagt till
- Dessutom
- Annat
- ytterligare information
- Dessutom
- igen
- mot
- aggregat
- AI
- Justerar
- Alla
- tillåta
- tillåter
- också
- Även
- amason
- Amazon Cognito
- Amazon EC2
- Amazon SageMaker
- Amazon SageMaker JumpStart
- Amazon Web Services
- Amazon Web Services (AWS)
- an
- analys
- analysera
- analys
- och
- svara
- svar
- något
- tillämplig
- Ansökan
- tillvägagångssätt
- lämpligt
- arkitektur
- arkiv
- ÄR
- OMRÅDE
- områden
- Konst
- artiklar
- AS
- be
- be
- bistå
- utgå ifrån
- At
- förstärka
- augmented
- Autentisering
- Författaren
- automatiskt
- autonom
- autonoma fordon
- tillgänglig
- genomsnitt
- undvika
- bort
- AWS
- AWS-lim
- backend
- bakgrund
- gunga
- baserat
- Baslinje
- BE
- därför att
- varit
- innan
- Där vi får lov att vara utan att konstant prestera,
- tillhör
- Bättre
- mellan
- Bortom
- Stor
- Stora data
- organ
- båda
- brett
- SLUTRESULTAT
- byggt
- företag
- by
- beräkna
- beräknar
- Ring
- kallas
- KAN
- kapacitet
- fånga
- fångas
- fångar
- Fångande
- Vid
- CD
- Centrum
- Centers
- certifikat
- byta
- ändrats
- Förändringar
- byte
- Kapitel
- avgifter
- chip
- Chocolate
- Välja
- rena
- Stäng
- närmare
- cloud
- kluster
- klustring
- koda
- Colorado
- kombination
- kombinerad
- kombinera
- kommande
- kompakt
- jämföra
- jämfört
- jämförelse
- fullborda
- komponent
- komponenter
- Compute
- dator
- Datorsyn
- Begreppen
- konferenser
- konfigurerad
- konfigurering
- Kontakta
- överväganden
- Konsol
- Behållare
- innehåll
- sammanhang
- fortsätter
- kontinuerlig
- konverterad
- Cookiepolicy
- Kärna
- Motsvarande
- täckning
- omfattas
- beläggning
- Täcker
- skapa
- skapas
- skapar
- Skapa
- Aktuella
- För närvarande
- beställnings
- Kunder
- allra senaste
- instrumentbräda
- datum
- datacenter
- databehandling
- datavetenskap
- Databas
- defaults
- definierade
- leverera
- Denver
- distribuera
- utplacerade
- utplacera
- utplacering
- vecklas ut
- Härledd
- förstöra
- detaljerad
- upptäcka
- Detektering
- Bestämma
- Utveckling
- avvikelse
- Diagrammet
- olika
- svårt
- Dimensionera
- dimensioner
- diskuteras
- dispergerad
- avstånd
- avlägsen
- fördelning
- dns
- do
- Hamnarbetare
- dokumentera
- dokument
- domän
- Domain Name
- DOMÄNNAMN
- domäner
- inte
- ner
- driv
- varje
- embed
- inbäddade
- inbäddning
- änden
- början till slut
- Slutpunkt
- Teknik
- ange
- gick in i
- företag
- Miljö
- utvärdera
- utvärdering
- Varje
- exempel
- exempel
- undantag
- befintliga
- experimentell
- Förklara
- utforskning
- utforska
- Utforska
- extern
- extrahera
- extrakt
- familj
- långt
- Figur
- Fil
- Filer
- slutlig
- Slutligen
- hitta
- fynd
- Förnamn
- flytande
- flöda
- fokuserade
- fokusering
- efter
- följer
- För
- formen
- hittade
- fundament
- vänner
- från
- Frontend
- full
- framtida
- samla
- Allmänt
- generera
- generering
- generativ
- Generativ AI
- skaffa sig
- få
- Ge
- Go
- borta
- beviljats
- Grupp
- vägleda
- hantera
- Har
- he
- Held
- hjälpa
- här
- högre
- hans
- innehar
- värd
- värd
- timme
- Hur ser din drömresa ut
- How To
- Men
- html
- http
- HTTPS
- Nav
- ID
- identifiera
- if
- illustrerar
- blir omedelbart
- genomförande
- redskap
- med Esport
- in
- innefattar
- innefattar
- Inklusive
- Inkommande
- indikerar
- industrier
- tröghet
- informationen
- Infrastruktur
- inledande
- Innovation
- ingång
- ingångar
- insikt
- Installationen
- installerad
- exempel
- instruktioner
- interagera
- interagera
- interaktiva
- intresserad
- Gränssnitt
- in
- IT
- DESS
- Jobb
- Lediga jobb
- glädje
- jpg
- bara
- Nyckel
- Kinesis Data Brandslang
- kunskap
- språk
- Large
- senare
- senaste
- lager
- LÄRA SIG
- inlärning
- Lets
- Bibliotek
- gillar
- linje
- linux
- LLM
- läsa in
- läge
- inloggad
- se
- UTSEENDE
- lägre
- Maskinen
- maskininlärning
- göra
- hantera
- ledning
- chef
- manuellt
- Maj..
- betyda
- betyder
- mäta
- åtgärder
- Metrics
- Michigan
- kanske
- ML
- MLOps
- modell
- modeller
- Övervaka
- mer
- mest
- rörliga
- multipel
- måste
- namn
- namn
- Natural
- Naturlig språkbehandling
- Behöver
- behövs
- behöver
- nätverk
- Nya
- nyare
- Nästa
- nlp
- anteckningsbok
- noterade
- antal
- nummer
- talrik
- of
- Ofta
- on
- endast
- öppet
- optimerad
- Alternativet
- or
- orkestrering
- beställa
- ursprung
- Övriga
- vår
- ut
- utfall
- skisse
- produktion
- utgångar
- över
- övergripande
- överlappning
- egen
- parameter
- parametrar
- särskilt
- brinner
- Patent
- bana
- Mönster
- mönster
- Utföra
- utför
- bitar
- rörledning
- platser
- plato
- Platon Data Intelligence
- PlatonData
- spelar
- Punkt
- poäng
- poolen
- positioner
- möjlig
- Inlägg
- potentiell
- drivs
- Praktisk
- föregående
- förutsättningar
- presenteras
- konservering
- föregående
- tidigare
- Principal
- Skriva ut
- Proaktiv
- process
- bearbetning
- Produkt
- produktledning
- projekt
- prompter
- andel
- ge
- förutsatt
- ger
- tillhandahållande
- allmän
- publicerade
- Drar
- fråga
- frågor
- trasa
- intervall
- som sträcker sig
- redo
- realtid
- rike
- Receptet
- post
- minska
- reduktion
- hänvisa
- referens
- region
- relaterad
- relativt
- relevanta
- representerar
- representation
- representerar
- Obligatorisk
- Kräver
- Resurser
- respons
- Resultat
- hämtning
- Roll
- roller
- Rutt
- Körning
- rinnande
- kör
- sagemaker
- Samma
- Save
- Skala
- tidtabellen
- Vetenskap
- göra
- Sök
- sök
- Andra
- §
- sektioner
- se
- sett
- välj
- semantisk
- senior
- känsla
- skickas
- separat
- service
- Tjänster
- session
- in
- inställning
- flera
- hon
- skall
- show
- visade
- visas
- Visar
- Signal
- signaler
- liknande
- Enkelt
- förenkla
- Storlek
- Snapshot
- So
- Mjukvara
- mjukvaruutveckling
- lösning
- Lösningar
- några
- Källa
- Källor
- Utrymme
- spänning
- specialist
- specificerade
- spendera
- squared
- stapel
- Stacks
- standard
- starta
- igång
- Starta
- Ange
- statistik
- Steg
- förvaring
- lagra
- lagras
- framgångsrik
- sådana
- säker
- system
- System
- bord
- Ta
- uppgift
- Tekniken
- Tekniken
- Teknologi
- text
- den där
- Smakämnen
- den information
- källan
- deras
- Dem
- sedan
- Där.
- Dessa
- detta
- de
- tre
- Genom
- tid
- till
- tillsammans
- ämnen
- Totalt
- Förvandla
- Traveling
- Trend
- Trender
- prova
- två
- typer
- under
- universitet
- URL
- us
- användning
- Begagnade
- användbara
- Användare
- Användargränssnitt
- användare
- med hjälp av
- godkännande
- värde
- Värden
- variabel
- mängd
- olika
- fordon
- via
- syn
- visuell
- genomgång
- vill
- var
- Sätt..
- we
- webb
- webbservice
- VÄL
- när
- om
- som
- medan
- kommer
- med
- inom
- utan
- Kvinnor
- Arbete
- arbetade
- arbetssätt
- arbetsstation
- sämre
- skulle
- år
- ännu
- Om er
- Din
- zephyrnet
- zon