Een van de nuttigste toepassingspatronen voor generatieve AI-workloads is Retrieval Augmented Generation (RAG). In het RAG-patroon vinden we stukjes referentie-inhoud die verband houden met een invoerprompt door zoekopdrachten naar gelijkenissen uit te voeren op insluitingen. Inbedding legt de informatie-inhoud vast in tekstlichamen, waardoor modellen voor natuurlijke taalverwerking (NLP) met taal in numerieke vorm kunnen werken. Inbeddingen zijn slechts vectoren van getallen met drijvende komma, dus we kunnen ze analyseren om drie belangrijke vragen te helpen beantwoorden: Veranderen onze referentiegegevens in de loop van de tijd? Veranderen de vragen die gebruikers stellen in de loop van de tijd? En tot slot: hoe goed dekken onze referentiegegevens de gestelde vragen?
In dit bericht leer je over enkele overwegingen voor het insluiten van vectoranalyse en het detecteren van signalen van inbeddingsdrift. Omdat inbedding een belangrijke gegevensbron is voor NLP-modellen in het algemeen en generatieve AI-oplossingen in het bijzonder, hebben we een manier nodig om te meten of onze inbedding in de loop van de tijd verandert (drifting). In dit bericht zie je een voorbeeld van het uitvoeren van driftdetectie op het insluiten van vectoren met behulp van een clustertechniek met grote taalmodellen (LLMS) geïmplementeerd vanuit Amazon SageMaker JumpStart. U kunt deze concepten ook verkennen aan de hand van twee meegeleverde voorbeelden, waaronder een end-to-end voorbeeldtoepassing of, optioneel, een subset van de toepassing.
Overzicht van RAG
De RAG-patroon Hiermee kunt u kennis ophalen uit externe bronnen, zoals PDF-documenten, wiki-artikelen of oproeptranscripties, en die kennis vervolgens gebruiken om de instructieprompt die naar de LLM wordt verzonden, te vergroten. Hierdoor kan de LLM naar meer relevante informatie verwijzen bij het genereren van een antwoord. Als u een LLM bijvoorbeeld vraagt hoe u chocoladekoekjes kunt maken, kan deze informatie uit uw eigen receptenbibliotheek bevatten. In dit patroon wordt de recepttekst omgezet in inbeddingsvectoren met behulp van een inbeddingsmodel, en opgeslagen in een vectordatabase. Inkomende vragen worden omgezet in inbedding, waarna de vectordatabase een overeenkomstzoekopdracht uitvoert om gerelateerde inhoud te vinden. De vraag en de referentiegegevens gaan vervolgens naar de prompt voor de LLM.
Laten we eens nader kijken naar de inbeddingsvectoren die worden gemaakt en hoe driftanalyses op die vectoren kunnen worden uitgevoerd.
Analyse van het inbedden van vectoren
Inbeddingsvectoren zijn numerieke representaties van onze gegevens, zodat analyse van deze vectoren inzicht kan verschaffen in onze referentiegegevens die later kunnen worden gebruikt om potentiële signalen van drift te detecteren. Inbeddingsvectoren vertegenwoordigen een item in een n-dimensionale ruimte, waar n vaak groot is. Het GPT-J 6B-model, dat in dit bericht wordt gebruikt, maakt bijvoorbeeld vectoren met de grootte 4096. Om drift te meten, gaat u ervan uit dat onze toepassing inbeddingsvectoren vastlegt voor zowel referentiegegevens als inkomende aanwijzingen.
We beginnen met het uitvoeren van dimensiereductie met behulp van Principal Component Analysis (PCA). PCA probeert het aantal dimensies te verminderen en tegelijkertijd de meeste variantie in de gegevens te behouden. In dit geval proberen we het aantal dimensies te vinden dat 95% van de variantie behoudt, wat alles binnen twee standaardafwijkingen zou moeten omvatten.
Vervolgens gebruiken we K-Means om een reeks clustercentra te identificeren. K-Means probeert punten samen te groeperen in clusters, zodat elke cluster relatief compact is en de clusters zo ver mogelijk van elkaar verwijderd zijn.
We berekenen de volgende informatie op basis van de clusteringuitvoer die in de volgende afbeelding wordt weergegeven:
- Het aantal dimensies in PCA dat 95% van de variantie verklaart
- De locatie van elk clustercentrum of zwaartepunt
Daarnaast kijken we naar het aandeel (hoger of lager) monsters in elk cluster, zoals weergegeven in de volgende afbeelding.
Ten slotte gebruiken we deze analyse om het volgende te berekenen:
- Traagheid – Traagheid is de som van de kwadratische afstanden tot clusterzwaartepunten, die meet hoe goed de gegevens zijn geclusterd met behulp van K-Means.
- Silhouetscore – De silhouetscore is een maatstaf voor de validatie van de consistentie binnen clusters en varieert van -1 tot 1. Een waarde dichtbij 1 betekent dat de punten in een cluster dichtbij de andere punten in hetzelfde cluster liggen en ver van de punten van de andere clusters. Een visuele weergave van de silhouetpartituur is te zien in de volgende afbeelding.
We kunnen deze informatie periodiek vastleggen voor momentopnamen van de insluitingen voor zowel de bronreferentiegegevens als de aanwijzingen. Door deze gegevens vast te leggen, kunnen we potentiële signalen van inbeddingsdrift analyseren.
Het detecteren van inbeddingsdrift
Van tijd tot tijd kunnen we de clusterinformatie vergelijken door middel van momentopnamen van de gegevens, waaronder de insluitingen van referentiegegevens en de promptinsluitingen. Ten eerste kunnen we het aantal dimensies vergelijken dat nodig is om 95% van de variatie in de inbeddingsgegevens, de traagheid en de silhouetscore van de clustertaak te verklaren. Zoals u in de volgende tabel kunt zien, vereist de laatste momentopname van de inbedding, vergeleken met een basislijn, nog 39 dimensies om de variantie te verklaren, wat aangeeft dat onze gegevens meer verspreid zijn. De traagheid is toegenomen, wat aangeeft dat de monsters zich in totaal verder van hun clustercentra bevinden. Bovendien is de silhouetscore gedaald, wat aangeeft dat de clusters niet zo goed gedefinieerd zijn. Voor snelle gegevens kan dit erop wijzen dat de soorten vragen die in het systeem binnenkomen meer onderwerpen bestrijken.
Vervolgens kunnen we in de volgende afbeelding zien hoe het aandeel monsters in elk cluster in de loop van de tijd is veranderd. Dit kan ons laten zien of onze nieuwere referentiegegevens in grote lijnen vergelijkbaar zijn met de vorige set, of nieuwe gebieden bestrijken.
Ten slotte kunnen we zien of de clustercentra in beweging zijn, wat zou kunnen wijzen op een afwijking in de informatie in de clusters, zoals weergegeven in de volgende tabel.
Referentiegegevensdekking voor inkomende vragen
We kunnen ook evalueren hoe goed onze referentiegegevens aansluiten bij de binnenkomende vragen. Om dit te doen, wijzen we elke promptinsluiting toe aan een referentiegegevenscluster. We berekenen de afstand van elke prompt tot het overeenkomstige centrum, en kijken naar het gemiddelde, de mediaan en de standaardafwijking van die afstanden. We kunnen die informatie opslaan en zien hoe deze in de loop van de tijd verandert.
De volgende afbeelding toont een voorbeeld van het analyseren van de afstand tussen de prompt-insluiting en referentiedatacenters in de loop van de tijd.
Zoals u kunt zien, nemen de gemiddelde, mediaan en standaardafwijkingsafstandsstatistieken tussen prompt-insluitingen en referentiedatacenters af tussen de initiële basislijn en de laatste momentopname. Hoewel de absolute waarde van de afstand moeilijk te interpreteren is, kunnen we de trends gebruiken om te bepalen of de semantische overlap tussen referentiegegevens en binnenkomende vragen in de loop van de tijd beter of slechter wordt.
Voorbeeldtoepassing
Om de experimentele resultaten te verzamelen die in de vorige sectie zijn besproken, hebben we een voorbeeldtoepassing gebouwd die het RAG-patroon implementeert met behulp van inbeddings- en generatiemodellen die zijn geïmplementeerd via SageMaker JumpStart en gehost op Amazon Sage Maker realtime eindpunten.
De applicatie heeft drie kerncomponenten:
- We gebruiken een interactieve stroom, die een gebruikersinterface bevat voor het vastleggen van aanwijzingen, gecombineerd met een RAG-orkestratielaag, met behulp van LangChain.
- De gegevensverwerkingsstroom extraheert gegevens uit PDF-documenten en creëert insluitingen die worden opgeslagen Amazon OpenSearch-service. We gebruiken deze ook in de laatste component voor driftanalyse van de toepassing.
- De inbedding wordt vastgelegd Amazon eenvoudige opslagservice (Amazon S3) via Amazon Kinesis-gegevens Firehose, en we gebruiken een combinatie van AWS lijm taken en Jupyter-notebooks extraheren, transformeren en laden om de insluitingsanalyse uit te voeren.
Het volgende diagram illustreert de end-to-end-architectuur.
De volledige voorbeeldcode is beschikbaar op GitHub. De verstrekte code is beschikbaar in twee verschillende patronen:
- Voorbeeld van een full-stack-applicatie met een Streamlit-frontend – Dit biedt een end-to-end-applicatie, inclusief een gebruikersinterface die Streamlit gebruikt voor het vastleggen van aanwijzingen, gecombineerd met de RAG-orkestratielaag, waarbij LangChain wordt gebruikt Amazon Elastic Container-service (Amazon ECS) met AWS Fargate
- Backend-applicatie – Voor degenen die niet de volledige applicatiestack willen implementeren, kunt u er optioneel voor kiezen om alleen de backend te implementeren AWS Cloud-ontwikkelingskit (AWS CDK)-stack en gebruik vervolgens de meegeleverde Jupyter-notebook om RAG-orkestratie uit te voeren met behulp van LangChain
Om de geleverde patronen te maken, zijn er verschillende vereisten die in de volgende secties worden beschreven, te beginnen met het inzetten van de generatieve en tekstinsluitingsmodellen en vervolgens door te gaan naar de aanvullende vereisten.
Implementeer modellen via SageMaker JumpStart
Beide patronen veronderstellen de inzet van een inbeddingsmodel en een generatief model. Hiervoor implementeer je twee modellen van SageMaker JumpStart. Het eerste model, GPT-J 6B, wordt gebruikt als het inbeddingsmodel en het tweede model, Falcon-40b, wordt gebruikt voor het genereren van tekst.
U kunt elk van deze modellen implementeren via SageMaker JumpStart vanuit de AWS-beheerconsole, Amazon SageMaker Studio, of programmatisch. Voor meer informatie, zie JumpStart-funderingsmodellen gebruiken. Om de implementatie te vereenvoudigen, kunt u de meegeleverde notitieboekje afgeleid van notebooks die automatisch zijn gemaakt door SageMaker JumpStart. Deze notebook haalt de modellen uit de SageMaker JumpStart ML-hub en implementeert ze op twee afzonderlijke realtime SageMaker-eindpunten.
Het voorbeeldnotitieboekje heeft ook een opruimgedeelte. Voer die sectie nog niet uit, omdat hierdoor de zojuist geïmplementeerde eindpunten worden verwijderd. Aan het einde van de walkthrough voltooit u het opruimen.
Nadat u de succesvolle implementatie van de eindpunten hebt bevestigd, bent u klaar om de volledige voorbeeldtoepassing te implementeren. Als u echter meer geïnteresseerd bent in het verkennen van alleen de backend- en analysenotebooks, kunt u desgewenst alleen dat implementeren, wat in de volgende sectie wordt behandeld.
Optie 1: Implementeer alleen de backend-applicatie
Met dit patroon kunt u alleen de backend-oplossing implementeren en met de oplossing communiceren met behulp van een Jupyter-notebook. Gebruik dit patroon als u niet de volledige frontendinterface wilt uitbouwen.
Voorwaarden
U moet de volgende vereisten hebben:
- Een SageMaker JumpStart-modeleindpunt geïmplementeerd – Implementeer de modellen op realtime eindpunten van SageMaker met behulp van SageMaker JumpStart, zoals eerder beschreven
- Implementatieparameters – Noteer het volgende:
- Eindpuntnaam van tekstmodel – De eindpuntnaam van het tekstgeneratiemodel dat is geïmplementeerd met SageMaker JumpStart
- Eindpuntnaam van insluitingsmodel – De eindpuntnaam van het insluitingsmodel dat is geïmplementeerd met SageMaker JumpStart
Implementeer de bronnen met behulp van de AWS CDK
Gebruik de implementatieparameters die in de vorige sectie zijn vermeld om de AWS CDK-stack te implementeren. Voor meer informatie over de installatie van AWS CDK raadpleegt u Aan de slag met de AWS CDK.
Zorg ervoor dat Docker is geïnstalleerd en actief is op het werkstation dat wordt gebruikt voor de AWS CDK-implementatie. Verwijzen naar Download Docker voor aanvullende begeleiding.
Als alternatief kunt u de contextwaarden invoeren in een bestand met de naam cdk.context.json
in de pattern1-rag/cdk
directory en run cdk deploy BackendStack --exclusively
.
De implementatie zal uitvoer afdrukken, waarvan een deel nodig zal zijn om de notebook te laten draaien. Voordat u kunt beginnen met het stellen van vragen en antwoorden, sluit u de referentiedocumenten in, zoals weergegeven in de volgende sectie.
Referentiedocumenten insluiten
Voor deze RAG-aanpak worden referentiedocumenten eerst ingebed met een tekstinbeddingsmodel en opgeslagen in een vectordatabase. In deze oplossing is een opnamepijplijn gebouwd die PDF-documenten inneemt.
An Amazon Elastic Compute-cloud (Amazon EC2)-instantie is gemaakt voor de opname van PDF-documenten en een Amazon elastisch bestandssysteem (Amazon EFS)-bestandssysteem is op de EC2-instantie gemonteerd om de PDF-documenten op te slaan. Een AWS-gegevenssynchronisatie Er wordt elk uur een taak uitgevoerd om PDF-documenten op te halen die zijn gevonden in het EFS-bestandssysteempad en deze te uploaden naar een S3-bucket om het tekstinsluitingsproces te starten. Dit proces sluit de referentiedocumenten in en slaat de insluitingen op in de OpenSearch Service. Het slaat ook een inbeddingsarchief op in een S3-bucket via Kinesis Data Firehose voor latere analyse.
Om de referentiedocumenten in te nemen, voert u de volgende stappen uit:
- Haal de voorbeeld-EC2-instantie-ID op die is gemaakt (zie de AWS CDK-uitvoer
JumpHostId
) en maak verbinding met behulp van Session Manager, een vermogen van AWS-systeembeheerder. Raadpleeg voor instructies: Maak verbinding met uw Linux-instantie met AWS Systems Manager Session Manager. - Ga naar de map
/mnt/efs/fs1
, waar het EFS-bestandssysteem is aangekoppeld, en maak een map met de naamingest
: - Voeg uw referentie-PDF-documenten toe aan het
ingest
directory.
De DataSync-taak is geconfigureerd om alle bestanden in deze map te uploaden naar Amazon S3 om het insluitingsproces te starten.
De DataSync-taak wordt volgens een uurschema uitgevoerd; U kunt de taak optioneel handmatig starten om het insluitingsproces onmiddellijk te starten voor de PDF-documenten die u hebt toegevoegd.
- Om de taak te starten, zoekt u de taak-ID uit de AWS CDK-uitvoer
DataSyncTaskID
en de taak starten met standaardinstellingen.
Nadat de insluitingen zijn gemaakt, kunt u de RAG-vraag en -antwoorden starten via een Jupyter-notebook, zoals weergegeven in de volgende sectie.
Vraag en antwoord met behulp van een Jupyter-notebook
Voer de volgende stappen uit:
- Haal de exemplaarnaam van het SageMaker-notebook op uit de AWS CDK-uitvoer
NotebookInstanceName
en maak verbinding met JupyterLab vanaf de SageMaker-console. - Ga naar de map
fmops/full-stack/pattern1-rag/notebooks/
. - Open het notitieblok en voer het uit
query-llm.ipynb
in de notebookinstantie om vraag en antwoord uit te voeren met RAG.
Zorg ervoor dat u de conda_python3
kernel voor de notebook.
Dit patroon is handig om de back-endoplossing te verkennen zonder dat u aanvullende vereisten hoeft in te richten die vereist zijn voor de volledige stacktoepassing. Het volgende gedeelte behandelt de implementatie van een full-stack-applicatie, inclusief zowel de frontend- als de backend-componenten, om een gebruikersinterface te bieden voor interactie met uw generatieve AI-applicatie.
Optie 2: Implementeer de full-stack voorbeeldtoepassing met een Streamlit-frontend
Met dit patroon kunt u de oplossing implementeren met een gebruikersfrontendinterface voor vraag en antwoord.
Voorwaarden
Als u de voorbeeldtoepassing wilt implementeren, moet u aan de volgende vereisten voldoen:
- SageMaker JumpStart-modeleindpunt geïmplementeerd – Implementeer de modellen op uw realtime SageMaker-eindpunten met behulp van SageMaker JumpStart, zoals beschreven in de vorige sectie, met behulp van de meegeleverde notebooks.
- Amazon Route 53 gehoste zone - Creëer een Amazon Route 53 openbare gehoste zone gebruiken voor deze oplossing. U kunt ook een bestaande openbare gehoste Route 53-zone gebruiken, zoals
example.com
. - AWS Certificate Manager-certificaat – Bepaling an AWS-certificaatbeheerder (ACM) TLS-certificaat voor de Route 53 gehoste zonedomeinnaam en de toepasselijke subdomeinen, zoals
example.com
en*.example.com
voor alle subdomeinen. Voor instructies, zie Een openbaar certificaat aanvragen. Dit certificaat wordt gebruikt om HTTPS in te stellen Amazon CloudFront en de oorspronkelijke load balancer. - Implementatieparameters – Noteer het volgende:
- Aangepaste domeinnaam van frontend-applicatie – Een aangepaste domeinnaam die wordt gebruikt om toegang te krijgen tot de frontend-voorbeeldtoepassing. De opgegeven domeinnaam wordt gebruikt om een Route 53 DNS-record te maken dat verwijst naar de frontend CloudFront-distributie; Bijvoorbeeld,
app.example.com
. - Aangepaste domeinnaam van load balancer-oorsprong – Een aangepaste domeinnaam die wordt gebruikt voor de oorsprong van de CloudFront-distributieload balancer. De opgegeven domeinnaam wordt gebruikt om een Route 53 DNS-record te maken dat verwijst naar de oorspronkelijke load balancer; Bijvoorbeeld,
app-lb.example.com
. - Route 53 gehoste zone-ID – De door Route 53 gehoste zone-ID om de opgegeven aangepaste domeinnamen te hosten; Bijvoorbeeld,
ZXXXXXXXXYYYYYYYYY
. - Route 53 gehoste zonenaam – De naam van de door Route 53 gehoste zone waar de opgegeven aangepaste domeinnamen worden gehost; Bijvoorbeeld,
example.com
. - ACM-certificaat ARN – De ARN van het ACM-certificaat dat moet worden gebruikt met het opgegeven aangepaste domein.
- Eindpuntnaam van tekstmodel – De eindpuntnaam van het tekstgeneratiemodel dat is geïmplementeerd met SageMaker JumpStart.
- Eindpuntnaam van insluitingsmodel – De eindpuntnaam van het insluitingsmodel dat is geïmplementeerd met SageMaker JumpStart.
- Aangepaste domeinnaam van frontend-applicatie – Een aangepaste domeinnaam die wordt gebruikt om toegang te krijgen tot de frontend-voorbeeldtoepassing. De opgegeven domeinnaam wordt gebruikt om een Route 53 DNS-record te maken dat verwijst naar de frontend CloudFront-distributie; Bijvoorbeeld,
Implementeer de bronnen met behulp van de AWS CDK
Gebruik de implementatieparameters die u in de vereisten hebt genoteerd om de AWS CDK-stack te implementeren. Voor meer informatie, zie Aan de slag met de AWS CDK.
Zorg ervoor dat Docker is geïnstalleerd en actief is op het werkstation dat wordt gebruikt voor de AWS CDK-implementatie.
In de voorgaande code vertegenwoordigt -c een contextwaarde, in de vorm van de vereiste vereisten, die bij invoer worden opgegeven. Als alternatief kunt u de contextwaarden invoeren in een bestand met de naam cdk.context.json
in de pattern1-rag/cdk
directory en run cdk deploy --all
.
Houd er rekening mee dat we de regio in het bestand specificeren bin/cdk.ts
. Voor het configureren van ALB-toegangslogboeken is een opgegeven regio vereist. U kunt deze regio vóór de implementatie wijzigen.
De implementatie drukt de URL af voor toegang tot de Streamlit-applicatie. Voordat u kunt beginnen met het stellen van vragen en antwoorden, moet u de referentiedocumenten insluiten, zoals weergegeven in de volgende sectie.
Sluit de referentiedocumenten in
Voor een RAG-aanpak worden referentiedocumenten eerst ingebed met een tekstinbeddingsmodel en opgeslagen in een vectordatabase. In deze oplossing is een opnamepijplijn gebouwd die PDF-documenten inneemt.
Zoals we in de eerste implementatieoptie hebben besproken, is er een voorbeeld van een EC2-instantie gemaakt voor de opname van PDF-documenten en is er een EFS-bestandssysteem aangekoppeld op de EC2-instantie om de PDF-documenten op te slaan. Elk uur wordt er een DataSync-taak uitgevoerd om PDF-documenten op te halen die in het EFS-bestandssysteempad zijn gevonden en deze naar een S3-bucket te uploaden om het tekstinsluitingsproces te starten. Dit proces sluit de referentiedocumenten in en slaat de insluitingen op in de OpenSearch Service. Het slaat ook een inbeddingsarchief op in een S3-bucket via Kinesis Data Firehose voor latere analyse.
Om de referentiedocumenten in te nemen, voert u de volgende stappen uit:
- Haal de voorbeeld-EC2-instantie-ID op die is gemaakt (zie de AWS CDK-uitvoer
JumpHostId
) en maak verbinding via Sessiebeheer. - Ga naar de map
/mnt/efs/fs1
, waar het EFS-bestandssysteem is aangekoppeld, en maak een map met de naamingest
: - Voeg uw referentie-PDF-documenten toe aan het
ingest
directory.
De DataSync-taak is geconfigureerd om alle bestanden in deze map te uploaden naar Amazon S3 om het insluitingsproces te starten.
De DataSync-taak wordt volgens een uurschema uitgevoerd. U kunt de taak optioneel handmatig starten om het insluitingsproces onmiddellijk te starten voor de PDF-documenten die u hebt toegevoegd.
- Om de taak te starten, zoekt u de taak-ID uit de AWS CDK-uitvoer
DataSyncTaskID
en de taak starten met standaardinstellingen.
Vraag en antwoord
Nadat de referentiedocumenten zijn ingesloten, kunt u de RAG-vraag en -antwoord starten door naar de URL te gaan om toegang te krijgen tot de Streamlit-applicatie. Een Amazon Cognito Er wordt gebruik gemaakt van een authenticatielaag, dus hiervoor is het aanmaken van een gebruikersaccount vereist in de Amazon Cognito-gebruikerspool die is geïmplementeerd via de AWS CDK (zie de AWS CDK-uitvoer voor de naam van de gebruikerspool) voor de eerste toegang tot de applicatie. Voor instructies over het aanmaken van een Amazon Cognito-gebruiker raadpleegt u Een nieuwe gebruiker maken in de AWS Management Console.
Integreer driftanalyse
In deze sectie laten we u zien hoe u een driftanalyse kunt uitvoeren door eerst een basislijn te maken van de insluitingen van referentiegegevens en aanwijzingsinsluitingen, en vervolgens een momentopname van de insluitingen in de loop van de tijd te maken. Hierdoor kunt u de basislijninbedding vergelijken met de momentopname-inbedding.
Maak een inbeddingsbasislijn voor de referentiegegevens en prompt
Om een inbeddingsbasislijn van de referentiegegevens te maken, opent u de AWS Glue-console en selecteert u de ETL-taak embedding-drift-analysis
. Stel de parameters voor de ETL-taak als volgt in en voer de taak uit:
- Zet de
--job_type
naarBASELINE
. - Zet de
--out_table
aan de Amazon DynamoDB tabel voor referentie-inbeddingsgegevens. (Zie de AWS CDK-uitvoerDriftTableReference
voor de tabelnaam.) - Zet de
--centroid_table
naar de DynamoDB-tabel voor referentie-centroid-gegevens. (Zie de AWS CDK-uitvoerCentroidTableReference
voor de tabelnaam.) - Zet de
--data_path
naar de S3-bucket met het voorvoegsel; Bijvoorbeeld,s3://
/embeddingarchive/
. (Zie de AWS CDK-uitvoerBucketName
voor de naam van de bucket.)
Op dezelfde manier kunt u de ETL-taak gebruiken embedding-drift-analysis
, maak een insluitingsbasislijn van de aanwijzingen. Stel de parameters voor de ETL-taak als volgt in en voer de taak uit:
- Zet de
--job_type
naarBASELINE
- Zet de
--out_table
naar de DynamoDB-tabel voor snelle insluiting van gegevens. (Zie de AWS CDK-uitvoerDriftTablePromptsName
voor de tabelnaam.) - Zet de
--centroid_table
naar de DynamoDB-tabel voor snelle centroid-gegevens. (Zie de AWS CDK-uitvoerCentroidTablePrompts
voor de tabelnaam.) - Zet de
--data_path
naar de S3-bucket met het voorvoegsel; Bijvoorbeeld,s3://
/promptarchive/
. (Zie de AWS CDK-uitvoerBucketName
voor de naam van de bucket.)
Maak een insluitingsmomentopname voor de referentiegegevens en prompt
Nadat u aanvullende informatie in de OpenSearch Service hebt opgenomen, voert u de ETL-taak uit embedding-drift-analysis
nogmaals om een momentopname te maken van de insluitingen van referentiegegevens. De parameters zullen hetzelfde zijn als de ETL-taak die u hebt uitgevoerd om de insluitingsbasislijn van de referentiegegevens te maken, zoals weergegeven in de vorige sectie, met uitzondering van het instellen van de --job_type
parameter SNAPSHOT
.
Op dezelfde manier voert u de ETL-taak uit om een momentopname te maken van de promptinsluitingen embedding-drift-analysis
opnieuw. De parameters zijn hetzelfde als de ETL-taak die u hebt uitgevoerd om de insluitingsbasislijn voor de aanwijzingen te maken, zoals weergegeven in de vorige sectie, met uitzondering van het instellen van de --job_type
parameter SNAPSHOT
.
Vergelijk de basislijn met de momentopname
Gebruik het meegeleverde notitieboekje om de insluitingsbasislijn en momentopname voor referentiegegevens en aanwijzingen te vergelijken pattern1-rag/notebooks/drift-analysis.ipynb
.
Als u de insluitingsvergelijking voor referentiegegevens of aanwijzingen wilt bekijken, wijzigt u de DynamoDB-tabelnaamvariabelen (tbl
en c_tbl
) in de notebook naar de juiste DynamoDB-tabel voor elke run van de notebook.
De notebookvariabele tbl
moet worden gewijzigd in de juiste drifttabelnaam. Hieronder ziet u een voorbeeld van waar u de variabele in het notitieblok kunt configureren.
De tabelnamen kunnen als volgt worden opgehaald:
- Haal voor de referentie-insluitingsgegevens de naam van de drifttabel op uit de AWS CDK-uitvoer
DriftTableReference
- Voor de prompt voor het insluiten van gegevens haalt u de naam van de drifttabel op uit de AWS CDK-uitvoer
DriftTablePromptsName
Daarnaast de notebookvariabele c_tbl
moet worden gewijzigd in de juiste centroid-tabelnaam. Hieronder ziet u een voorbeeld van waar u de variabele in het notitieblok kunt configureren.
De tabelnamen kunnen als volgt worden opgehaald:
- Voor de referentie-insluitingsgegevens haalt u de centroid-tabelnaam op uit de AWS CDK-uitvoer
CentroidTableReference
- Voor de prompt voor het insluiten van gegevens haalt u de centroid-tabelnaam op uit de AWS CDK-uitvoer
CentroidTablePrompts
Analyseer de promptafstand van de referentiegegevens
Voer eerst de AWS Glue-taak uit embedding-distance-analysis
. Met deze taak wordt uitgezocht tot welk cluster, op basis van de K-Means-evaluatie van de insluitingen van referentiegegevens, elke prompt behoort. Vervolgens berekent het het gemiddelde, de mediaan en de standaardafwijking van de afstand van elke prompt tot het midden van het overeenkomstige cluster.
U kunt het notitieboekje uitvoeren pattern1-rag/notebooks/distance-analysis.ipynb
om de trends in de afstandsstatistieken in de loop van de tijd te zien. Dit geeft u een idee van de algemene trend in de verdeling van de prompt-inbeddingsafstanden.
De notebook pattern1-rag/notebooks/prompt-distance-outliers.ipynb
is een AWS Glue-notebook dat zoekt naar uitschieters, waarmee u kunt identificeren of u meer aanwijzingen krijgt die geen verband houden met de referentiegegevens.
Monitor gelijkenisscores
Alle gelijkenisscores van OpenSearch Service worden ingelogd Amazon Cloud Watch onder de rag
naamruimte. Het dashboard RAG_Scores
toont de gemiddelde score en het totale aantal opgenomen scores.
Opruimen
Om te voorkomen dat er in de toekomst kosten in rekening worden gebracht, verwijdert u alle bronnen die u heeft gemaakt.
Verwijder de geïmplementeerde SageMaker-modellen
Raadpleeg het opruimgedeelte van de meegeleverde voorbeeldnotitieboekje om de geïmplementeerde SageMaker JumpStart-modellen te verwijderen, of u kunt dat doen verwijder de modellen op de SageMaker-console.
Verwijder de AWS CDK-bronnen
Als u uw parameters heeft ingevoerd in a cdk.context.json
bestand, ruim het als volgt op:
Als u uw parameters op de opdrachtregel hebt ingevoerd en alleen de backend-applicatie (de backend AWS CDK-stack) hebt geïmplementeerd, ruimt u als volgt op:
Als u uw parameters op de opdrachtregel hebt ingevoerd en de volledige oplossing (de frontend- en backend AWS CDK-stacks) hebt geïmplementeerd, ruimt u als volgt op:
Conclusie
In dit bericht hebben we een werkend voorbeeld gegeven van een applicatie die inbeddingsvectoren vastlegt voor zowel referentiegegevens als aanwijzingen in het RAG-patroon voor generatieve AI. We hebben laten zien hoe u clusteranalyses kunt uitvoeren om te bepalen of referentie- of promptgegevens in de loop van de tijd veranderen, en hoe goed de referentiegegevens de soorten vragen dekken die gebruikers stellen. Als u drift detecteert, kan dit een signaal geven dat de omgeving is veranderd en dat uw model nieuwe input krijgt waarvoor het mogelijk niet is geoptimaliseerd. Dit maakt een proactieve evaluatie van het huidige model mogelijk tegen veranderende inputs.
Over de auteurs
Abdullahi Olaoye is Senior Solutions Architect bij Amazon Web Services (AWS). Abdullahi heeft een MSC in Computer Networking behaald aan de Wichita State University en is een gepubliceerde auteur die functies heeft bekleed in verschillende technologiedomeinen, zoals DevOps, modernisering van de infrastructuur en AI. Hij richt zich momenteel op generatieve AI en speelt een sleutelrol bij het helpen van ondernemingen bij het ontwerpen en bouwen van geavanceerde oplossingen, mogelijk gemaakt door generatieve AI. Buiten het domein van de technologie vindt hij vreugde in de kunst van het verkennen. Als hij geen AI-oplossingen bedenkt, reist hij graag met zijn gezin om nieuwe plekken te verkennen.
Randy DeFauw is Senior Principal Solutions Architect bij AWS. Hij heeft een MSEE van de Universiteit van Michigan, waar hij werkte aan computervisie voor autonome voertuigen. Hij heeft ook een MBA van de Colorado State University. Randy heeft verschillende functies bekleed in de technologiesector, variërend van software-engineering tot productbeheer. In betrad de Big Data-ruimte in 2013 en blijft dat gebied verkennen. Hij werkt actief aan projecten in de ML-ruimte en heeft op tal van conferenties gepresenteerd, waaronder Strata en GlueCon.
Shelbee Eigenbrode is een Principal AI en Machine Learning Specialist Solutions Architect bij Amazon Web Services (AWS). Ze is al 24 jaar actief in de technologie, verspreid over meerdere sectoren, technologieën en functies. Ze concentreert zich momenteel op het combineren van haar DevOps- en ML-achtergrond in het domein van MLOps om klanten te helpen ML-workloads op grote schaal te leveren en te beheren. Met meer dan 35 verleende patenten in verschillende technologiedomeinen, heeft ze een passie voor continue innovatie en het gebruik van data om bedrijfsresultaten te stimuleren. Shelbee is co-creator en docent van de specialisatie Praktische Data Science op Coursera. Ze is ook co-directeur van Women In Big Data (WiBD), afdeling Denver. In haar vrije tijd brengt ze graag tijd door met haar familie, vrienden en overactieve honden.
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- PlatoData.Network Verticale generatieve AI. Versterk jezelf. Toegang hier.
- PlatoAiStream. Web3-intelligentie. Kennis versterkt. Toegang hier.
- PlatoESG. carbon, CleanTech, Energie, Milieu, Zonne, Afvalbeheer. Toegang hier.
- Plato Gezondheid. Intelligentie op het gebied van biotech en klinische proeven. Toegang hier.
- Bron: https://aws.amazon.com/blogs/machine-learning/monitor-embedding-drift-for-llms-deployed-from-amazon-sagemaker-jumpstart/
- : heeft
- :is
- :niet
- :waar
- $UP
- 1
- 10
- 100
- 2013
- 24
- 35%
- 39
- 7
- 9
- 95%
- a
- in staat
- Over
- absoluut
- toegang
- Account
- ACM
- over
- actief
- toegevoegd
- toevoeging
- Extra
- Extra informatie
- Daarnaast
- weer
- tegen
- aggregaat
- AI
- Lijnt uit
- Alles
- Het toestaan
- toestaat
- ook
- Hoewel
- Amazone
- Amazon Cognito
- Amazon EC2
- Amazon Sage Maker
- Amazon SageMaker JumpStart
- Amazon Web Services
- Amazon Web Services (AWS)
- an
- analyse
- analyseren
- het analyseren van
- en
- beantwoorden
- beantwoorden
- iets
- toepasselijk
- Aanvraag
- nadering
- passend
- architectuur
- Archief
- ZIJN
- GEBIED
- gebieden
- Kunst
- artikelen
- AS
- vragen
- vragen
- bijstaan
- ervan uitgaan
- At
- vergroten
- aangevuld
- authenticatie
- auteur
- webmaster.
- autonoom
- autonome voertuigen
- Beschikbaar
- gemiddelde
- vermijd
- weg
- AWS
- AWS lijm
- backend
- achtergrond
- balancer
- gebaseerde
- Baseline
- BE
- omdat
- geweest
- vaardigheden
- wezen
- behoort
- Betere
- tussen
- Verder
- Groot
- Big data
- lichamen
- zowel
- breed
- bouw
- bebouwd
- bedrijfsdeskundigen
- by
- berekenen
- berekent
- Bellen
- Dit betekent dat we onszelf en onze geliefden praktisch vergiftigen.
- CAN
- bekwaamheid
- vangen
- gevangen
- captures
- Het vastleggen
- geval
- CD
- Centreren
- Centra
- certificaat
- verandering
- veranderd
- Wijzigingen
- veranderende
- Hoofdstuk
- lasten
- spaander
- Chocolade
- Kies
- schoon
- Sluiten
- dichterbij
- Cloud
- TROS
- clustering
- code
- Colorado
- combinatie van
- gecombineerde
- combineren
- komst
- compact
- vergelijken
- vergeleken
- vergelijking
- compleet
- bestanddeel
- componenten
- Berekenen
- computer
- Computer visie
- concepten
- conferenties
- geconfigureerd
- configureren
- Verbinden
- overwegingen
- troosten
- Containers
- content
- verband
- blijft
- doorlopend
- geconverteerd
- cookies
- Kern
- Overeenkomend
- dekking
- bedekt
- aan het bedekken
- Covers
- en je merk te creëren
- aangemaakt
- creëert
- Wij creëren
- Actueel
- Op dit moment
- gewoonte
- Klanten
- op het randje
- dashboards
- gegevens
- datacenters
- gegevensverwerking
- data science
- Database
- defaults
- gedefinieerd
- leveren
- Denver
- implementeren
- ingezet
- het inzetten
- inzet
- ontplooit
- Afgeleid
- vernietigen
- gedetailleerd
- opsporen
- Opsporing
- Bepalen
- Ontwikkeling
- afwijking
- diagram
- anders
- moeilijk
- Afmeting
- Afmeting
- besproken
- verspreid
- afstand
- ver
- distributie
- dns
- do
- havenarbeider
- document
- documenten
- domein
- domeinnaam
- DOMEINNAMEN
- domeinen
- Dont
- beneden
- rit
- elk
- insluiten
- ingebed
- inbedding
- einde
- eind tot eind
- Endpoint
- Engineering
- Enter
- ingevoerd
- bedrijven
- Milieu
- schatten
- evaluatie
- Alle
- voorbeeld
- voorbeelden
- uitzondering
- bestaand
- experimenteel
- Verklaren
- exploratie
- Verken
- Verkennen
- extern
- extract
- extracten
- familie
- ver
- Figuur
- Dien in
- Bestanden
- finale
- Tot slot
- VIND DE PLEK DIE PERFECT VOOR JOU IS
- vondsten
- Voornaam*
- drijvend
- stroom
- gericht
- gericht
- volgend
- volgt
- Voor
- formulier
- gevonden
- Foundation
- vrienden
- oppompen van
- Frontend
- vol
- toekomst
- verzamelen
- Algemeen
- het genereren van
- generatie
- generatief
- generatieve AI
- krijgen
- het krijgen van
- Geven
- Go
- weg
- verleend
- Groep
- leiding
- handvat
- Hebben
- he
- Held
- hulp
- haar
- hoger
- zijn
- houdt
- gastheer
- gehost
- uur
- Hoe
- How To
- Echter
- HTML
- http
- HTTPS
- Naaf
- ID
- identificeren
- if
- illustreert
- per direct
- uitvoering
- gereedschap
- belangrijk
- in
- omvatten
- omvat
- Inclusief
- Inkomend
- aangeven
- industrieën
- traagheid
- informatie
- Infrastructuur
- eerste
- Innovatie
- invoer
- ingangen
- inzicht
- installatie
- geïnstalleerd
- instantie
- instructies
- interactie
- interactie
- interactieve
- geïnteresseerd
- Interface
- in
- IT
- HAAR
- Jobomschrijving:
- Vacatures
- vreugde
- jpg
- voor slechts
- sleutel
- Kinesis Data-brandslang
- kennis
- taal
- Groot
- later
- laatste
- lagen
- LEARN
- leren
- Laten we
- Bibliotheek
- sympathieën
- Lijn
- linux
- LLM
- laden
- plaats
- ingelogd
- Kijk
- LOOKS
- te verlagen
- machine
- machine learning
- maken
- beheer
- management
- manager
- handmatig
- Mei..
- gemiddelde
- middel
- maatregel
- maatregelen
- Metriek
- Michigan
- macht
- ML
- MLops
- model
- modellen
- monitor
- meer
- meest
- bewegend
- meervoudig
- Dan moet je
- naam
- namen
- Naturel
- Natural Language Processing
- Noodzaak
- nodig
- nodig
- netwerken
- New
- nieuwere
- volgende
- nlp
- notitieboekje
- bekend
- aantal
- nummers
- vele
- of
- vaak
- on
- Slechts
- open
- geoptimaliseerde
- Keuze
- or
- orkestratie
- bestellen
- herkomst
- Overige
- onze
- uit
- resultaten
- geschetst
- uitgang
- uitgangen
- over
- totaal
- overlappen
- het te bezitten.
- parameter
- parameters
- bijzonder
- passie
- Octrooien
- pad
- Patronen
- patronen
- Uitvoeren
- uitvoerend
- stukken
- pijpleiding
- plaatsen
- Plato
- Plato gegevensintelligentie
- PlatoData
- speelt
- punt
- punten
- zwembad
- posities
- mogelijk
- Post
- potentieel
- aangedreven
- PRAKTISCH
- voorafgaat
- vereisten
- gepresenteerd
- het behoud van
- vorig
- die eerder
- Principal
- Proactieve
- verwerking
- Product
- product management
- projecten
- prompts
- proportie
- zorgen voor
- mits
- biedt
- voorziening
- publiek
- gepubliceerde
- Truien
- vraag
- Contact
- doek
- ranges
- variërend
- klaar
- real-time
- rijk
- recept
- record
- verminderen
- reductie
- verwijzen
- referentie
- regio
- verwant
- relatief
- relevante
- vertegenwoordigen
- vertegenwoordiging
- vertegenwoordigt
- nodig
- vereist
- Resources
- antwoord
- Resultaten
- ophalen
- Rol
- rollen
- weg
- lopen
- lopend
- loopt
- sagemaker
- dezelfde
- Bespaar
- Scale
- rooster
- Wetenschap
- partituur
- Ontdek
- zoekopdrachten
- Tweede
- sectie
- secties
- zien
- gezien
- kiezen
- semantisch
- senior
- zin
- verzonden
- apart
- service
- Diensten
- Sessie
- reeks
- het instellen van
- verscheidene
- ze
- moet
- tonen
- vertoonde
- getoond
- Shows
- Signaal
- signalen
- gelijk
- Eenvoudig
- vereenvoudigen
- Maat
- Momentopname
- So
- Software
- software engineering
- oplossing
- Oplossingen
- sommige
- bron
- bronnen
- Tussenruimte
- overspannen
- specialist
- gespecificeerd
- besteden
- squared
- stack
- Stacks
- standaard
- begin
- gestart
- Start
- Land
- statistiek
- Stappen
- mediaopslag
- shop
- opgeslagen
- geslaagd
- dergelijk
- zeker
- system
- Systems
- tafel
- Nemen
- Taak
- techniek
- Technologies
- Technologie
- tekst
- dat
- De
- de informatie
- De Bron
- hun
- Ze
- harte
- Er.
- Deze
- dit
- die
- drie
- Door
- niet de tijd of
- naar
- samen
- onderwerpen
- Totaal
- Transformeren
- Reizend
- trend
- Trends
- proberen
- twee
- types
- voor
- universiteit-
- URL
- us
- .
- gebruikt
- nuttig
- Gebruiker
- User Interface
- gebruikers
- gebruik
- bevestiging
- waarde
- Values
- variabele
- variëteit
- divers
- Voertuigen
- via
- visie
- visuele
- walkthrough
- willen
- was
- Manier..
- we
- web
- webservices
- GOED
- wanneer
- of
- welke
- en
- wil
- Met
- binnen
- zonder
- Dames
- Mijn werk
- werkte
- werkzaam
- werkstation
- erger
- zou
- jaar
- nog
- You
- Your
- zephyrnet
- zone