Unul dintre cele mai utile modele de aplicații pentru sarcinile de lucru AI generative este Retrieval Augmented Generation (RAG). În modelul RAG, găsim bucăți de conținut de referință legate de un prompt de intrare prin efectuarea de căutări de similaritate pe înglobări. Înglobările captează conținutul de informații în corpuri de text, permițând modelelor de procesare a limbajului natural (NLP) să lucreze cu limbajul într-o formă numerică. Înglobările sunt doar vectori de numere în virgulă mobilă, așa că le putem analiza pentru a răspunde la trei întrebări importante: Se schimbă datele noastre de referință în timp? Întrebările pe care le pun utilizatorii se schimbă în timp? Și, în sfârșit, cât de bine sunt datele noastre de referință care acoperă întrebările adresate?
În această postare, veți afla despre unele dintre considerentele pentru încorporarea analizei vectoriale și detectarea semnalelor de derive de încorporare. Deoarece înglobările sunt o sursă importantă de date pentru modelele NLP în general și pentru soluțiile AI generative în special, avem nevoie de o modalitate de a măsura dacă înglobările noastre se schimbă în timp (derivare). În această postare, veți vedea un exemplu de realizare a detectării derivei pe vectori încorporați folosind o tehnică de grupare cu modele de limbaj mari (LLMS) implementate din Amazon SageMaker JumpStart. De asemenea, veți putea explora aceste concepte prin două exemple furnizate, inclusiv un exemplu de aplicație end-to-end sau, opțional, un subset al aplicației.
Prezentare generală a RAG
Model RAG vă permite să preluați cunoștințele din surse externe, cum ar fi documente PDF, articole wiki sau transcrierea apelurilor, și apoi să utilizați aceste cunoștințe pentru a spori promptul de instrucțiuni trimis la LLM. Acest lucru permite LLM să facă referire la informații mai relevante atunci când generează un răspuns. De exemplu, dacă întrebați un LLM cum să facă prăjituri cu ciocolată, acesta poate include informații din propria bibliotecă de rețete. În acest model, textul rețetei este convertit în vectori de încorporare folosind un model de încorporare și stocat într-o bază de date vectorială. Întrebările primite sunt convertite în încorporare, iar apoi baza de date vectorială rulează o căutare de similaritate pentru a găsi conținut similar. Întrebarea și datele de referință intră apoi în promptul pentru LLM.
Să aruncăm o privire mai atentă asupra vectorilor de încorporare care sunt creați și a modului de efectuare a analizei de derivă pe acești vectori.
Analiza vectorilor de încorporare
Vectorii de încorporare sunt reprezentări numerice ale datelor noastre, astfel încât analiza acestor vectori poate oferi o perspectivă asupra datelor noastre de referință care pot fi utilizate ulterior pentru a detecta semnale potențiale de deriva. Vectorii de încorporare reprezintă un element în spațiul n-dimensional, unde n este adesea mare. De exemplu, modelul GPT-J 6B, folosit în această postare, creează vectori de dimensiunea 4096. Pentru a măsura deriva, presupunem că aplicația noastră captează vectori de încorporare atât pentru datele de referință, cât și pentru solicitările primite.
Începem prin a efectua reducerea dimensiunii utilizând analiza componentelor principale (PCA). PCA încearcă să reducă numărul de dimensiuni, păstrând în același timp cea mai mare parte a variației datelor. În acest caz, încercăm să găsim numărul de dimensiuni care păstrează 95% din variație, care ar trebui să surprindă orice în limita a două abateri standard.
Apoi folosim K-Means pentru a identifica un set de centre de cluster. K-Means încearcă să grupeze punctele împreună în clustere astfel încât fiecare cluster să fie relativ compact și clusterele să fie cât mai îndepărtate unele de altele.
Calculăm următoarele informații pe baza rezultatului de grupare prezentat în următoarea figură:
- Numărul de dimensiuni din PCA care explică 95% din varianță
- Locația fiecărui centru de cluster sau centroid
În plus, ne uităm la proporția (mai mare sau mai mică) de eșantioane din fiecare grup, așa cum se arată în figura următoare.
În cele din urmă, folosim această analiză pentru a calcula următoarele:
- Inerţie – Inerția este suma distanțelor pătrate până la centroizii cluster, care măsoară cât de bine au fost grupate datele folosind K-Means.
- Scor siluetă – Scorul siluetei este o măsură pentru validarea consistenței în cadrul clusterelor și variază de la -1 la 1. O valoare apropiată de 1 înseamnă că punctele dintr-un cluster sunt aproape de celelalte puncte din același cluster și departe de punctele celorlalte clustere. O reprezentare vizuală a scorului siluetei poate fi văzută în figura următoare.
Putem captura periodic aceste informații pentru instantanee ale înglobărilor atât pentru datele de referință sursă, cât și pentru solicitări. Captarea acestor date ne permite să analizăm semnalele potențiale ale derivei de încorporare.
Detectarea derivei de încorporare
Periodic, putem compara informațiile de grupare prin instantanee ale datelor, care includ încorporarea datelor de referință și încorporarea promptă. În primul rând, putem compara numărul de dimensiuni necesare pentru a explica 95% din variația datelor de încorporare, inerția și scorul siluetei din jobul de grupare. După cum puteți vedea în tabelul următor, în comparație cu o linie de bază, cel mai recent instantaneu al înglobărilor necesită încă 39 de dimensiuni pentru a explica variația, ceea ce indică faptul că datele noastre sunt mai dispersate. Inerția a crescut, indicând faptul că eșantioanele sunt în agregat mai departe de centrii lor cluster. În plus, scorul siluetei a scăzut, indicând faptul că grupurile nu sunt la fel de bine definite. Pentru date prompte, acest lucru ar putea indica faptul că tipurile de întrebări care vin în sistem acoperă mai multe subiecte.
În continuare, în figura următoare, putem vedea cum s-a schimbat proporția de eșantioane din fiecare cluster în timp. Acest lucru ne poate arăta dacă datele noastre de referință mai noi sunt în general similare cu setul anterior sau acoperă zone noi.
În cele din urmă, putem vedea dacă centrele clusterului se mișcă, ceea ce ar arăta o derivă în informațiile din clustere, așa cum se arată în tabelul următor.
Acoperirea datelor de referință pentru întrebările primite
De asemenea, putem evalua cât de bine se aliniază datele noastre de referință cu întrebările primite. Pentru a face acest lucru, atribuim fiecare încorporare promptă unui cluster de date de referință. Calculăm distanța de la fiecare prompt la centrul său corespunzător și ne uităm la media, mediana și abaterea standard a acelor distanțe. Putem stoca aceste informații și să vedem cum se schimbă în timp.
Următoarea figură prezintă un exemplu de analiză a distanței dintre centrele de date de referință și încorporarea promptului în timp.
După cum puteți vedea, statisticile de distanță medie, mediană și abatere standard între încorporarea promptă și centrele de date de referință sunt în scădere între linia de bază inițială și cel mai recent instantaneu. Deși valoarea absolută a distanței este dificil de interpretat, putem folosi tendințele pentru a determina dacă suprapunerea semantică dintre datele de referință și întrebările primite se îmbunătățește sau se înrăutățește în timp.
Exemplu de aplicație
Pentru a aduna rezultatele experimentale discutate în secțiunea anterioară, am construit un exemplu de aplicație care implementează modelul RAG folosind modele de încorporare și generare implementate prin SageMaker JumpStart și găzduite pe Amazon SageMaker puncte finale în timp real.
Aplicația are trei componente principale:
- Folosim un flux interactiv, care include o interfață cu utilizatorul pentru capturarea solicitărilor, combinată cu un strat de orchestrare RAG, folosind LangChain.
- Fluxul de procesare a datelor extrage date din documente PDF și creează înglobări care sunt stocate Serviciul Amazon OpenSearch. De asemenea, le folosim în componenta finală de analiză a deriva de încorporare a aplicației.
- Înglobările sunt capturate în Serviciul Amazon de stocare simplă (Amazon S3) prin Firehose Amazon Kinesis Data, și rulăm o combinație de AWS Adeziv extrageți, transformați și încărcați joburi (ETL) și notebook-uri Jupyter pentru a efectua analiza de încorporare.
Următoarea diagramă ilustrează arhitectura end-to-end.
Codul eșantion complet este disponibil pe GitHub. Codul furnizat este disponibil în două modele diferite:
- Exemplu de aplicație full-stack cu un front-end Streamlit – Aceasta oferă o aplicație end-to-end, inclusiv o interfață cu utilizatorul care utilizează Streamlit pentru capturarea solicitărilor, combinată cu stratul de orchestrare RAG, folosind LangChain care rulează pe Serviciul Amazon de containere elastice (Amazon ECS) cu AWS Fargate
- Aplicație de backend – Pentru cei care nu doresc să implementeze întreaga stivă de aplicații, puteți alege opțional să implementați numai backend-ul Kit AWS Cloud Development (AWS CDK), apoi utilizați blocnotesul Jupyter furnizat pentru a efectua orchestrarea RAG folosind LangChain
Pentru a crea modelele furnizate, există mai multe cerințe preliminare detaliate în secțiunile următoare, începând cu implementarea modelelor generative și de încorporare a textului, apoi trecând la cerințele preliminare suplimentare.
Implementați modele prin SageMaker JumpStart
Ambele modele presupun implementarea unui model de încorporare și a unui model generativ. Pentru aceasta, veți implementa două modele de la SageMaker JumpStart. Primul model, GPT-J 6B, este folosit ca model de încorporare, iar al doilea model, Falcon-40b, este folosit pentru generarea de text.
Puteți implementa fiecare dintre aceste modele prin SageMaker JumpStart din Consola de administrare AWS, Amazon SageMaker Studio, sau programatic. Pentru mai multe informații, consultați Cum se utilizează modelele de fond de ten JumpStart. Pentru a simplifica implementarea, puteți utiliza caietul furnizat derivate din blocnotesurile create automat de SageMaker JumpStart. Acest notebook extrage modelele din hub-ul SageMaker JumpStart ML și le implementează în două puncte finale SageMaker în timp real separate.
Caietul de probă are și o secțiune de curățare. Nu rulați încă acea secțiune, deoarece va șterge punctele finale tocmai implementate. Veți finaliza curățarea la sfârșitul tutorialului.
După ce confirmați implementarea cu succes a punctelor finale, sunteți gata să implementați aplicația eșantion completă. Cu toate acestea, dacă sunteți mai interesat să explorați numai blocnotesurile backend și de analiză, puteți, opțional, să implementați numai asta, care este tratată în secțiunea următoare.
Opțiunea 1: implementați numai aplicația backend
Acest model vă permite să implementați numai soluția de backend și să interacționați cu soluția folosind un notebook Jupyter. Utilizați acest model dacă nu doriți să construiți interfața frontend completă.
Cerințe preliminare
Ar trebui să aveți următoarele condiții preliminare:
- Un punct final model SageMaker JumpStart a fost implementat – Implementați modelele în punctele finale în timp real SageMaker utilizând SageMaker JumpStart, așa cum sa subliniat anterior
- Parametri de implementare - Înregistrați următoarele:
- Numele punctului final al modelului text – Numele punctului final al modelului de generare de text implementat cu SageMaker JumpStart
- Numele punctului final al modelului de încorporare – Numele punctului final al modelului de încorporare implementat cu SageMaker JumpStart
Implementați resursele utilizând AWS CDK
Utilizați parametrii de implementare menționați în secțiunea anterioară pentru a implementa stiva AWS CDK. Pentru mai multe informații despre instalarea AWS CDK, consultați Noțiuni introductive cu AWS CDK.
Asigurați-vă că Docker este instalat și rulează pe stația de lucru care va fi utilizată pentru implementarea AWS CDK. A se referi la Ia Docker pentru îndrumări suplimentare.
Alternativ, puteți introduce valorile contextului într-un fișier numit cdk.context.json
în pattern1-rag/cdk
director și rulați cdk deploy BackendStack --exclusively
.
Implementarea va imprima rezultate, dintre care unele vor fi necesare pentru a rula notebook-ul. Înainte de a începe să întrebați și să răspundeți, încorporați documentele de referință, așa cum se arată în secțiunea următoare.
Încorporați documente de referință
Pentru această abordare RAG, documentele de referință sunt mai întâi încorporate cu un model de încorporare a textului și stocate într-o bază de date vectorială. În această soluție, a fost construită o conductă de asimilare care primește documente PDF.
An Cloud Elastic de calcul Amazon Instanța (Amazon EC2) a fost creată pentru ingerarea documentelor PDF și un Sistem de fișiere elastice Amazon Sistemul de fișiere (Amazon EFS) este montat pe instanța EC2 pentru a salva documentele PDF. Un AWS DataSync sarcina este rulată la fiecare oră pentru a prelua documentele PDF găsite în calea sistemului de fișiere EFS și pentru a le încărca într-o găleată S3 pentru a începe procesul de încorporare a textului. Acest proces încorporează documentele de referință și salvează înglobările în OpenSearch Service. De asemenea, salvează o arhivă de încorporare într-o găleată S3 prin Kinesis Data Firehose pentru analiză ulterioară.
Pentru a ingera documentele de referință, parcurgeți următorii pași:
- Preluați exemplul de ID instanță EC2 care a fost creat (consultați rezultatul AWS CDK
JumpHostId
) și conectați folosind Manager sesiune, o capacitate de Manager sistem AWS. Pentru instrucțiuni, consultați Conectați-vă la instanța dvs. Linux cu AWS Systems Manager Session Manager. - Accesați directorul
/mnt/efs/fs1
, care este locul unde este montat sistemul de fișiere EFS și creați un folder numitingest
: - Adăugați documentele PDF de referință la
ingest
director.
Sarcina DataSync este configurată pentru a încărca toate fișierele găsite în acest director în Amazon S3 pentru a începe procesul de încorporare.
Sarcina DataSync rulează pe un program orar; opțional, puteți începe manual sarcina pentru a începe imediat procesul de încorporare pentru documentele PDF pe care le-ați adăugat.
- Pentru a porni sarcina, localizați ID-ul sarcinii din rezultatul AWS CDK
DataSyncTaskID
și începe sarcina cu valori implicite.
După ce înglobările sunt create, puteți începe întrebarea RAG și puteți răspunde printr-un caiet Jupyter, așa cum se arată în secțiunea următoare.
Întrebări și răspunsuri folosind un caiet Jupyter
Urmați pașii următori:
- Preluați numele instanței de notebook SageMaker din rezultatul AWS CDK
NotebookInstanceName
și conectați-vă la JupyterLab din consola SageMaker. - Accesați directorul
fmops/full-stack/pattern1-rag/notebooks/
. - Deschideți și rulați blocnotesul
query-llm.ipynb
în instanța caietului pentru a efectua întrebări și răspunsuri folosind RAG.
Asigurați-vă că utilizați funcția conda_python3
nucleu pentru notebook.
Acest model este util pentru a explora soluția de backend fără a fi nevoie să furnizați cerințe preliminare suplimentare care sunt necesare pentru aplicația full-stack. Următoarea secțiune acoperă implementarea unei aplicații full-stack, inclusiv componentele front-end și backend, pentru a oferi o interfață de utilizator pentru a interacționa cu aplicația dvs. generativă AI.
Opțiunea 2: implementați aplicația eșantion full-stack cu un front-end Streamlit
Acest model vă permite să implementați soluția cu o interfață frontend de utilizator pentru întrebări și răspunsuri.
Cerințe preliminare
Pentru a implementa aplicația exemplu, trebuie să aveți următoarele cerințe preliminare:
- Punct final model SageMaker JumpStart implementat – Implementați modelele în punctele finale în timp real SageMaker utilizând SageMaker JumpStart, așa cum este prezentat în secțiunea anterioară, folosind blocnotesurile furnizate.
- Zona găzduită Amazon Route 53 - Creaza un Ruta Amazonului 53 zonă găzduită publică de utilizat pentru această soluție. De asemenea, puteți utiliza o zonă găzduită publică Route 53, cum ar fi
example.com
. - Certificat AWS Certificate Manager – Dispoziţia an Manager certificat AWS Certificat TLS (ACM) pentru numele de domeniu al zonei găzduite Route 53 și subdomeniile aplicabile, cum ar fi
example.com
și*.example.com
pentru toate subdomeniile. Pentru instrucțiuni, consultați Solicitarea unui certificat public. Acest certificat este folosit pentru a activa HTTPS Amazon CloudFront și echilibrul de încărcare de origine. - Parametri de implementare - Înregistrați următoarele:
- Nume de domeniu personalizat al aplicației frontend – Un nume de domeniu personalizat folosit pentru a accesa aplicația exemplu de front-end. Numele de domeniu furnizat este folosit pentru a crea o înregistrare DNS Route 53 care indică către distribuția CloudFront frontală; de exemplu,
app.example.com
. - Nume de domeniu personalizat de origine a echilibrului de încărcare – Un nume de domeniu personalizat utilizat pentru originea echilibrului de încărcare a distribuției CloudFront. Numele de domeniu furnizat este utilizat pentru a crea o înregistrare DNS Route 53 care indică către echilibratorul de încărcare de origine; de exemplu,
app-lb.example.com
. - ID-ul zonei găzduite de Route 53 – ID-ul zonei găzduite Route 53 pentru a găzdui numele de domenii personalizate furnizate; de exemplu,
ZXXXXXXXXYYYYYYYYY
. - Numele zonei găzduite pe Route 53 – Numele zonei găzduite Route 53 pentru a găzdui numele de domenii personalizate furnizate; de exemplu,
example.com
. - Certificat ACM ARN – ARN-ul certificatului ACM care urmează să fie utilizat cu domeniul personalizat furnizat.
- Numele punctului final al modelului text – Numele punctului final al modelului de generare de text implementat cu SageMaker JumpStart.
- Numele punctului final al modelului de încorporare – Numele punctului final al modelului de încorporare implementat cu SageMaker JumpStart.
- Nume de domeniu personalizat al aplicației frontend – Un nume de domeniu personalizat folosit pentru a accesa aplicația exemplu de front-end. Numele de domeniu furnizat este folosit pentru a crea o înregistrare DNS Route 53 care indică către distribuția CloudFront frontală; de exemplu,
Implementați resursele utilizând AWS CDK
Utilizați parametrii de implementare pe care i-ați notat în cerințele preliminare pentru a implementa stiva AWS CDK. Pentru mai multe informații, consultați Noțiuni introductive cu AWS CDK.
Asigurați-vă că Docker este instalat și rulează pe stația de lucru care va fi utilizată pentru implementarea AWS CDK.
În codul precedent, -c reprezintă o valoare de context, sub forma cerințelor preliminare necesare, furnizate la intrare. Alternativ, puteți introduce valorile contextului într-un fișier numit cdk.context.json
în pattern1-rag/cdk
director și rulați cdk deploy --all
.
Rețineți că specificăm Regiunea în fișier bin/cdk.ts
. Configurarea jurnalelor de acces ALB necesită o regiune specificată. Puteți schimba această regiune înainte de implementare.
Implementarea va tipări adresa URL pentru a accesa aplicația Streamlit. Înainte de a putea începe întrebările și răspunsurile, trebuie să încorporați documentele de referință, așa cum se arată în secțiunea următoare.
Încorporați documentele de referință
Pentru o abordare RAG, documentele de referință sunt mai întâi încorporate cu un model de încorporare a textului și stocate într-o bază de date vectorială. În această soluție, a fost construită o conductă de asimilare care primește documente PDF.
După cum am discutat în prima opțiune de implementare, un exemplu de instanță EC2 a fost creat pentru ingerarea documentelor PDF și un sistem de fișiere EFS este montat pe instanța EC2 pentru a salva documentele PDF. O sarcină DataSync este rulată la fiecare oră pentru a prelua documentele PDF găsite în calea sistemului de fișiere EFS și pentru a le încărca într-o găleată S3 pentru a începe procesul de încorporare a textului. Acest proces încorporează documentele de referință și salvează înglobările în OpenSearch Service. De asemenea, salvează o arhivă de încorporare într-o găleată S3 prin Kinesis Data Firehose pentru analiză ulterioară.
Pentru a ingera documentele de referință, parcurgeți următorii pași:
- Preluați exemplul de ID instanță EC2 care a fost creat (consultați rezultatul AWS CDK
JumpHostId
) și conectați-vă folosind Session Manager. - Accesați directorul
/mnt/efs/fs1
, care este locul unde este montat sistemul de fișiere EFS și creați un folder numitingest
: - Adăugați documentele PDF de referință la
ingest
director.
Sarcina DataSync este configurată pentru a încărca toate fișierele găsite în acest director în Amazon S3 pentru a începe procesul de încorporare.
Sarcina DataSync rulează pe un program orar. Opțional, puteți începe manual sarcina pentru a începe imediat procesul de încorporare pentru documentele PDF pe care le-ați adăugat.
- Pentru a porni sarcina, localizați ID-ul sarcinii din rezultatul AWS CDK
DataSyncTaskID
și începe sarcina cu valori implicite.
Întrebare și răspuns
După ce documentele de referință au fost încorporate, puteți începe întrebarea RAG și răspunsul vizitând adresa URL pentru a accesa aplicația Streamlit. Un Amazon Cognito este utilizat stratul de autentificare, așa că necesită crearea unui cont de utilizator în pool-ul de utilizatori Amazon Cognito implementat prin AWS CDK (consultați ieșirea AWS CDK pentru numele pool-ului de utilizatori) pentru prima dată acces la aplicație. Pentru instrucțiuni despre crearea unui utilizator Amazon Cognito, consultați Crearea unui utilizator nou în Consola de management AWS.
Încorporați analiza deriva
În această secțiune, vă arătăm cum să efectuați o analiză a derivei creând mai întâi o linie de bază a înglobărilor de date de referință și a înglobărilor prompte, apoi creând un instantaneu al înglobărilor în timp. Acest lucru vă permite să comparați înglobările liniei de bază cu înglobările instantanee.
Creați o linie de bază de încorporare pentru datele de referință și prompt
Pentru a crea o linie de bază de încorporare a datelor de referință, deschideți consola AWS Glue și selectați lucrarea ETL embedding-drift-analysis
. Setați parametrii pentru jobul ETL după cum urmează și rulați jobul:
- set
--job_type
laBASELINE
. - set
--out_table
la Amazon DynamoDB tabel pentru datele de încorporare de referință. (Consultați rezultatul AWS CDKDriftTableReference
pentru numele tabelului.) - set
--centroid_table
la tabelul DynamoDB pentru datele centrului de referință. (Consultați rezultatul AWS CDKCentroidTableReference
pentru numele tabelului.) - set
--data_path
la găleata S3 cu prefixul; de exemplu,s3://
/embeddingarchive/
. (Consultați rezultatul AWS CDKBucketName
pentru numele găleții.)
În mod similar, folosind jobul ETL embedding-drift-analysis
, creați o linie de bază de încorporare a solicitărilor. Setați parametrii pentru jobul ETL după cum urmează și rulați jobul:
- set
--job_type
laBASELINE
- set
--out_table
în tabelul DynamoDB pentru încorporarea promptă a datelor. (Consultați rezultatul AWS CDKDriftTablePromptsName
pentru numele tabelului.) - set
--centroid_table
la tabelul DynamoDB pentru date prompte de centru. (Consultați rezultatul AWS CDKCentroidTablePrompts
pentru numele tabelului.) - set
--data_path
la găleata S3 cu prefixul; de exemplu,s3://
/promptarchive/
. (Consultați rezultatul AWS CDKBucketName
pentru numele găleții.)
Creați un instantaneu de încorporare pentru datele de referință și prompt
După ce ingerați informații suplimentare în Serviciul OpenSearch, rulați jobul ETL embedding-drift-analysis
din nou pentru a capta înglobarea datelor de referință. Parametrii vor fi aceiași cu jobul ETL pe care l-ați rulat pentru a crea linia de bază de încorporare a datelor de referință, așa cum se arată în secțiunea anterioară, cu excepția setării --job_type
parametru pentru a SNAPSHOT
.
În mod similar, pentru a captura încorporarea promptului, rulați jobul ETL embedding-drift-analysis
din nou. Parametrii vor fi aceiași cu jobul ETL pe care l-ați executat pentru a crea linia de bază de încorporare pentru solicitări, așa cum se arată în secțiunea anterioară, cu excepția setării --job_type
parametru pentru a SNAPSHOT
.
Comparați linia de bază cu instantaneul
Pentru a compara linia de bază de încorporare și instantaneul pentru date de referință și solicitări, utilizați blocnotesul furnizat pattern1-rag/notebooks/drift-analysis.ipynb
.
Pentru a analiza comparația de încorporare pentru date de referință sau solicitări, modificați variabilele numelui tabelului DynamoDB (tbl
și c_tbl
) în notebook la tabelul DynamoDB corespunzător pentru fiecare rulare a notebook-ului.
Variabila notebook tbl
ar trebui schimbat cu numele corespunzător tabelului de deriva. Următorul este un exemplu de unde să configurați variabila în notebook.
Numele tabelelor pot fi preluate după cum urmează:
- Pentru datele de încorporare de referință, preluați numele tabelului de deriva din rezultatul AWS CDK
DriftTableReference
- Pentru datele de încorporare prompte, preluați numele tabelului de deriva din rezultatul AWS CDK
DriftTablePromptsName
În plus, variabila notebook c_tbl
ar trebui schimbat cu numele corespunzator al tabelului centroid. Următorul este un exemplu de unde să configurați variabila în notebook.
Numele tabelelor pot fi preluate după cum urmează:
- Pentru datele de încorporare de referință, preluați numele tabelului centroid din rezultatul AWS CDK
CentroidTableReference
- Pentru datele de încorporare prompte, preluați numele tabelului centroid din rezultatul AWS CDK
CentroidTablePrompts
Analizați distanța promptă față de datele de referință
Mai întâi, rulați lucrarea AWS Glue embedding-distance-analysis
. Acest job va afla cărui cluster, din evaluarea K-Means a înglobărilor de date de referință, căreia îi aparține fiecare prompt. Apoi calculează media, mediana și abaterea standard a distanței de la fiecare prompt la centrul clusterului corespunzător.
Puteți rula notebook-ul pattern1-rag/notebooks/distance-analysis.ipynb
pentru a vedea tendințele în metrica distanței de-a lungul timpului. Acest lucru vă va oferi o idee despre tendința generală în distribuția distanțelor de încorporare prompte.
Caietul pattern1-rag/notebooks/prompt-distance-outliers.ipynb
este un notebook AWS Glue care caută valori aberante, ceea ce vă poate ajuta să identificați dacă primiți mai multe solicitări care nu au legătură cu datele de referință.
Monitorizați scorurile de similaritate
Toate scorurile de similaritate de la Serviciul OpenSearch sunt conectate Amazon CloudWatch în temeiul rag
spatiu de nume. Tabloul de bord RAG_Scores
arată scorul mediu și numărul total de scoruri ingerate.
A curăța
Pentru a evita costurile viitoare, ștergeți toate resursele pe care le-ați creat.
Ștergeți modelele SageMaker implementate
Consultați secțiunea de curățare a caiet de exemplu oferit pentru a șterge modelele SageMaker JumpStart implementate sau puteți ștergeți modelele de pe consola SageMaker.
Ștergeți resursele AWS CDK
Dacă ați introdus parametrii dvs. în a cdk.context.json
fișier, curățați după cum urmează:
Dacă ați introdus parametrii pe linia de comandă și ați implementat doar aplicația de backend (stiva AWS CDK de backend), curățați după cum urmează:
Dacă ați introdus parametrii pe linia de comandă și ați implementat soluția completă (stivele AWS CDK de front-end și backend), curățați după cum urmează:
Concluzie
În această postare, am oferit un exemplu de lucru al unei aplicații care captează vectori de încorporare atât pentru date de referință, cât și pentru solicitări în modelul RAG pentru IA generativă. Am arătat cum se efectuează o analiză de grupare pentru a determina dacă datele de referință sau prompte se deplasează în timp și cât de bine acoperă datele de referință tipurile de întrebări pe care le pun utilizatorii. Dacă detectați deriva, poate furniza un semnal că mediul s-a schimbat și modelul dvs. primește noi intrări pe care este posibil să nu fie optimizat pentru a le gestiona. Acest lucru permite evaluarea proactivă a modelului actual în raport cu intrările în schimbare.
Despre Autori
Abdullahi Olaoye este arhitect senior de soluții la Amazon Web Services (AWS). Abdullahi deține un MSC în Rețele de calculatoare de la Universitatea de Stat din Wichita și este un autor publicat care a deținut roluri în diferite domenii tehnologice, cum ar fi DevOps, modernizarea infrastructurii și AI. În prezent, el se concentrează pe IA generativă și joacă un rol cheie în a ajuta întreprinderile să proiecteze și să construiască soluții de ultimă oră alimentate de IA generativă. Dincolo de domeniul tehnologiei, el găsește bucurie în arta explorării. Când nu creează soluții AI, îi place să călătorească cu familia pentru a explora locuri noi.
Randy DeFauw este arhitect principal principal de soluții la AWS. El deține un MSEE de la Universitatea din Michigan, unde a lucrat la viziunea computerizată pentru vehicule autonome. De asemenea, deține un MBA de la Universitatea de Stat din Colorado. Randy a ocupat o varietate de poziții în spațiul tehnologic, de la inginerie software la managementul produselor. In a intrat în spațiul Big Data în 2013 și continuă să exploreze acea zonă. Lucrează activ la proiecte în spațiul ML și a prezentat la numeroase conferințe, inclusiv Strata și GlueCon.
Shelbee Eigenbrode este arhitect principal în soluții de AI și învățare automată la Amazon Web Services (AWS). Ea lucrează în tehnologie de 24 de ani, acoperind mai multe industrii, tehnologii și roluri. În prezent, ea se concentrează pe combinarea experienței sale DevOps și ML în domeniul MLOps pentru a ajuta clienții să livreze și să gestioneze sarcinile de lucru ML la scară. Cu peste 35 de brevete acordate în diverse domenii tehnologice, ea are o pasiune pentru inovarea continuă și utilizarea datelor pentru a genera rezultate în afaceri. Shelbee este co-creator și instructor al specializării Practical Data Science pe Coursera. Ea este, de asemenea, co-director al Women In Big Data (WiBD), capitolul Denver. În timpul liber, îi place să petreacă timpul cu familia, prietenii și câinii hiperactivi.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/monitor-embedding-drift-for-llms-deployed-from-amazon-sagemaker-jumpstart/
- :are
- :este
- :nu
- :Unde
- $UP
- 1
- 10
- 100
- 2013
- 24
- 35%
- 39
- 7
- 9
- 95%
- a
- Capabil
- Despre Noi
- Absolut
- acces
- Cont
- ACM
- peste
- activ
- adăugat
- plus
- Suplimentar
- informatii suplimentare
- În plus,
- din nou
- împotriva
- agregat
- AI
- Se aliniază
- TOATE
- Permiterea
- permite
- de asemenea
- Cu toate ca
- Amazon
- Amazon Cognito
- Amazon EC2
- Amazon SageMaker
- Amazon SageMaker JumpStart
- Amazon Web Services
- Amazon Web Services (AWS)
- an
- analiză
- analiza
- analiza
- și
- răspunde
- telefonic
- nimic
- aplicabil
- aplicație
- abordare
- adecvat
- arhitectură
- arhivă
- SUNT
- ZONĂ
- domenii
- Artă
- bunuri
- AS
- cere
- solicitând
- asistarea
- asuma
- At
- spori
- augmented
- Autentificare
- autor
- în mod automat
- autonom
- autovehicule autonome
- disponibil
- in medie
- evita
- departe
- AWS
- AWS Adeziv
- Backend
- fundal
- echilibrist
- bazat
- De bază
- BE
- deoarece
- fost
- înainte
- fiind
- aparține
- Mai bine
- între
- Dincolo de
- Mare
- Datele mari
- organisme
- atât
- in linii mari
- construi
- construit
- afaceri
- by
- calcula
- calculează
- apel
- denumit
- CAN
- capacitate
- captura
- capturat
- capturi
- capturarea
- caz
- CD
- Centru
- Centre
- certificat
- Schimbare
- si-a schimbat hainele;
- Modificări
- schimbarea
- Capitol
- taxe
- cip
- Ciocolată
- Alege
- curat
- Închide
- mai aproape
- Cloud
- Grup
- clustering
- cod
- Colorado
- combinaţie
- combinate
- combinând
- venire
- compact
- comparaţie
- comparație
- comparație
- Completă
- component
- componente
- Calcula
- calculator
- Computer Vision
- Concepte
- conferințe
- configurat
- configurarea
- Conectați
- Considerații
- Consoleze
- Recipient
- conţinut
- context
- continuă
- continuu
- convertit
- fursecuri
- Nucleu
- Corespunzător
- acoperire
- acoperit
- acoperire
- Covers
- crea
- a creat
- creează
- Crearea
- Curent
- În prezent
- personalizat
- clienţii care
- ultima generație
- tablou de bord
- de date
- centre de date
- de prelucrare a datelor
- știința datelor
- Baza de date
- implicite
- definit
- livra
- Denver
- implementa
- dislocate
- Implementarea
- desfășurarea
- implementează
- Derivat
- distruge
- detaliat
- detecta
- Detectare
- Determina
- Dezvoltare
- deviere
- diagramă
- diferit
- dificil
- Dimensiune
- Dimensiuni
- discutat
- dispersat
- distanţă
- îndepărtat
- distribuire
- dns
- do
- Docher
- document
- documente
- domeniu
- Domain Name
- NUMELE DE DOMENIU
- domenii
- Dont
- jos
- conduce
- fiecare
- încastra
- încorporat
- Încorporarea
- capăt
- un capăt la altul
- Punct final
- Inginerie
- Intrați
- a intrat
- Companii
- Mediu inconjurator
- evalua
- evaluare
- Fiecare
- exemplu
- exemple
- excepție
- existent
- experimental
- Explica
- explorare
- explora
- Explorarea
- extern
- extrage
- extracte
- familie
- departe
- Figura
- Fișier
- Fişiere
- final
- În cele din urmă
- Găsi
- descoperiri
- First
- plutitor
- debit
- concentrat
- concentrându-se
- următor
- urmează
- Pentru
- formă
- găsit
- Fundație
- Prietenii lui
- din
- Frontend
- Complet
- viitor
- aduna
- General
- generator
- generaţie
- generativ
- AI generativă
- obține
- obtinerea
- Da
- Go
- plecat
- acordate
- grup
- îndrumare
- manipula
- Avea
- he
- Held
- ajutor
- ei
- superior
- lui
- deține
- gazdă
- găzduit
- oră
- Cum
- Cum Pentru a
- Totuși
- HTML
- http
- HTTPS
- Butuc
- ID
- identifica
- if
- ilustrează
- imediat
- implementarea
- ustensile
- important
- in
- include
- include
- Inclusiv
- Intrare
- indica
- industrii
- inerţie
- informații
- Infrastructură
- inițială
- Inovaţie
- intrare
- intrări
- înţelegere
- instalare
- instalat
- instanță
- instrucțiuni
- interacţiona
- interacționând
- interactiv
- interesat
- interfaţă
- în
- IT
- ESTE
- Loc de munca
- Locuri de munca
- bucurie
- jpg
- doar
- Cheie
- Kinesis Data Firehose
- cunoştinţe
- limbă
- mare
- mai tarziu
- Ultimele
- strat
- AFLAȚI
- învăţare
- Permite
- Bibliotecă
- îi place
- Linie
- linux
- LLM
- încărca
- locaţie
- autentificat
- Uite
- Se pare
- LOWER
- maşină
- masina de învățare
- face
- administra
- administrare
- manager
- manual
- Mai..
- însemna
- mijloace
- măsura
- măsuri
- Metrici
- Michigan
- ar putea
- ML
- MLOps
- model
- Modele
- monitor
- mai mult
- cele mai multe
- în mişcare
- multiplu
- trebuie sa
- nume
- nume
- Natural
- Procesarea limbajului natural
- Nevoie
- necesar
- au nevoie
- rețele
- Nou
- mai nou
- următor
- nlp
- caiet
- notat
- număr
- numere
- numeroși
- of
- de multe ori
- on
- afară
- deschide
- optimizate
- Opțiune
- or
- orchestrație
- comandă
- origine
- Altele
- al nostru
- afară
- rezultate
- a subliniat
- producție
- iesiri
- peste
- global
- suprapune
- propriu
- parametru
- parametrii
- special
- pasiune
- Brevete de inventie
- cale
- Model
- modele
- Efectua
- efectuarea
- piese
- conducte
- Locuri
- Plato
- Informații despre date Platon
- PlatoData
- joacă
- Punct
- puncte
- piscină
- poziţii
- posibil
- Post
- potenţial
- alimentat
- Practic
- precedent
- premise
- prezentat
- păstrarea
- precedent
- în prealabil
- Principal
- Proactivă
- proces
- prelucrare
- Produs
- management de produs
- Proiecte
- solicitări
- proporție
- furniza
- prevăzut
- furnizează
- dispoziţie
- public
- publicat
- Trage
- întrebare
- Întrebări
- cârpă
- game
- variind
- gata
- în timp real
- tărâm
- reţetă
- record
- reduce
- reducere
- trimite
- referință
- regiune
- legate de
- relativ
- reprezenta
- reprezentare
- reprezintă
- necesar
- Necesită
- Resurse
- răspuns
- REZULTATE
- regăsire
- Rol
- rolurile
- Traseul
- Alerga
- funcţionare
- ruleaza
- sagemaker
- acelaşi
- Economisiți
- Scară
- programa
- Ştiinţă
- scor
- Caută
- Cautari
- Al doilea
- Secțiune
- secțiuni
- vedea
- văzut
- selecta
- semantică
- senior
- sens
- trimis
- distinct
- serviciu
- Servicii
- sesiune
- set
- instalare
- câteva
- ea
- să
- Arăta
- a arătat
- indicat
- Emisiuni
- Semnal
- semnalele
- asemănător
- simplu
- simplifica
- Mărimea
- Instantaneu
- So
- Software
- Inginerie software
- soluţie
- soluţii
- unele
- Sursă
- Surse
- Spaţiu
- tensiune
- specialist
- specificată
- petrece
- Squared
- stivui
- Stive
- standard
- Începe
- început
- Pornire
- Stat
- statistică
- paşi
- depozitare
- stoca
- stocate
- de succes
- astfel de
- sigur
- sistem
- sisteme
- tabel
- Lua
- Sarcină
- tehnică
- Tehnologii
- Tehnologia
- a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the community’s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana Țapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match.
- acea
- informațiile
- Sursa
- lor
- Lor
- apoi
- Acolo.
- Acestea
- acest
- aceste
- trei
- Prin
- timp
- la
- împreună
- subiecte
- Total
- Transforma
- Traveling
- tendință
- Tendinţe
- încerca
- Două
- Tipuri
- în
- universitate
- URL-ul
- us
- utilizare
- utilizat
- util
- Utilizator
- User Interface
- utilizatorii
- folosind
- validare
- valoare
- Valori
- variabil
- varietate
- diverse
- Vehicule
- de
- viziune
- vizual
- walkthrough
- vrea
- a fost
- Cale..
- we
- web
- servicii web
- BINE
- cand
- dacă
- care
- în timp ce
- voi
- cu
- în
- fără
- Femei
- Apartamente
- a lucrat
- de lucru
- Statie de lucru
- mai rău
- ar
- ani
- încă
- Tu
- Ta
- zephyrnet
- zonă