Această postare este scrisă împreună cu Stanislav Yeshchenko de la Q4 Inc.
Întreprinderile apelează la Retrieval Augmented Generation (RAG) ca abordare generală pentru construirea de chatbot-uri de întrebări și răspunsuri. Continuăm să vedem provocări emergente care decurg din natura sortimentului de seturi de date disponibile. Aceste seturi de date sunt adesea un amestec de date numerice și text, uneori structurate, nestructurate sau semi-structurate.
Q4 Inc. trebuiau să abordeze unele dintre aceste provocări într-unul dintre numeroasele lor cazuri de utilizare AI construite pe AWS. În această postare, discutăm despre un caz de utilizare a botului Q&A pe care l-a implementat Q4, provocările pe care le-au prezentat seturile de date numerice și structurate și modul în care Q4 a concluzionat că utilizarea SQL poate fi o soluție viabilă. În cele din urmă, aruncăm o privire mai atentă asupra modului în care echipa Q4 a folosit Amazon Bedrock și SQLDatabaseChain pentru a implementa o soluție bazată pe RAG cu generare SQL.
Prezentare generală a cazului de utilizare
Q4 Inc., cu sediul în Toronto, cu birouri în New York și Londra, este o platformă lider de acces la piețele de capital care transformă modul în care emitenții, investitorii și vânzătorii se conectează, comunică și interacționează eficient între ei. Platforma Q4 facilitează interacțiunile pe piețele de capital prin produse de site-uri web IR, soluții de evenimente virtuale, analize de implicare, relații cu investitorii, managementul relațiilor cu clienții (CRM), analiza acționarilor și a pieței, supraveghere și instrumente ESG.
În peisajul financiar rapid și bazat pe date de astăzi, ofițerii de relații cu investitorii (IRO) joacă un rol esențial în stimularea comunicării între o companie și acționarii, analiștii și investitorii săi. Ca parte a sarcinilor lor zilnice, IRO analizează diverse seturi de date, inclusiv CRM, înregistrările de proprietate și datele bursiere. Agregatul acestor date este utilizat pentru a genera rapoarte financiare, pentru a stabili obiective de relații cu investitorii și pentru a gestiona comunicarea cu investitorii existenți și potențiali.
Pentru a satisface cererea tot mai mare de recuperare eficientă și dinamică a datelor, Q4 și-a propus să creeze un instrument de întrebări și răspunsuri chatbot care să ofere o metodă intuitivă și simplă pentru ca IRO să acceseze informațiile necesare de care au nevoie într-un format ușor de utilizat.
Scopul final a fost acela de a crea un chatbot care să integreze perfect datele disponibile publicului, împreună cu datele proprietare specifice ale clienților din Q4, menținând în același timp cel mai înalt nivel de securitate și confidențialitate a datelor. În ceea ce privește performanța, scopul a fost menținerea unui timp de răspuns la interogare de secunde pentru a asigura o experiență pozitivă pentru utilizatorii finali.
Piețele financiare sunt o industrie reglementată cu mize mari implicate. Furnizarea de informații incorecte sau învechite poate afecta încrederea investitorilor și a acționarilor, pe lângă alte posibile riscuri legate de confidențialitatea datelor. Înțelegând industria și cerințele, Q4 stabilește confidențialitatea datelor și acuratețea răspunsului drept principii directoare în evaluarea oricărei soluții înainte de a putea fi introdusă pe piață.
Pentru demonstrarea conceptului, Q4 a decis să folosească un set de date privind proprietatea financiară. Setul de date constă din puncte de date din seria temporală reprezentând numărul de active deținute; istoricul tranzacțiilor dintre instituțiile de investiții, persoane fizice și companii publice; si multe alte elemente.
Deoarece Q4 dorea să se asigure că poate satisface toate cerințele funcționale și nefuncționale pe care le-am discutat, proiectul trebuia să rămână fezabil din punct de vedere comercial. Acest lucru a fost respectat pe tot parcursul procesului de decizie privind abordarea, arhitectura, alegerea tehnologiei și elementele specifice soluției.
Experimentare și provocări
A fost clar de la început că pentru a înțelege o întrebare despre limbajul uman și pentru a genera răspunsuri precise, Q4 ar trebui să folosească modele de limbaj mari (LLM).
Următoarele sunt câteva dintre experimentele care au fost efectuate de echipă, împreună cu provocările identificate și lecțiile învățate:
- Pre-antrenament – Q4 a înțeles complexitatea și provocările care vin odată cu pregătirea prealabilă a unui LLM folosind propriul set de date. A devenit rapid evident că această abordare necesită resurse intensive, cu mulți pași non-triviali, cum ar fi preprocesarea datelor, instruirea și evaluarea. Pe lângă efortul implicat, costurile ar fi prohibitive. Având în vedere natura setului de date din seria cronologică, Q4 a realizat, de asemenea, că va trebui să efectueze continuu o pregătire prealabilă incrementală pe măsură ce apar noi date. Acest lucru ar fi necesitat o echipă interdisciplinară dedicată, cu experiență în știința datelor, învățarea automată și domeniu. cunoştinţe.
- Reglaj fin – Reglarea fină a unui model de fundație pre-antrenat (FM) implicată folosind mai multe exemple etichetate. Această abordare a arătat un oarecare succes inițial, dar în multe cazuri, halucinația model a fost o provocare. Modelul s-a luptat să înțeleagă indicii contextuale nuanțate și a returnat rezultate incorecte.
- RAG cu căutare semantică – RAG convențional cu căutare semantică a fost ultimul pas înainte de a trece la generarea SQL. Echipa a experimentat utilizarea căutării, căutării semantice și înglobărilor pentru a extrage contextul. În timpul experimentului de înglobare, setul de date a fost convertit în înglobare, stocat într-o bază de date vectorială și apoi corelat cu înglobările întrebării pentru a extrage contextul. Contextul preluat în oricare dintre cele trei experimente a fost apoi folosit pentru a mări promptul original ca intrare în LLM. Această abordare a funcționat bine pentru conținutul bazat pe text, unde datele constau din limbaj natural cu cuvinte, propoziții și paragrafe. Având în vedere natura setului de date din Q4, care constă în principal date financiare constând din numere, tranzacții financiare, cotații bursiere și date, rezultatele în toate cele trei cazuri au fost suboptime. Chiar și atunci când se utilizează înglobări, înglobările generate din numere s-au luptat cu clasarea similarității și, în multe cazuri, au condus la preluarea de informații incorecte.
Concluzia Q4: Generarea SQL este calea de urmat
Având în vedere provocările cu care se confruntă folosind metodologia RAG convențională, echipa a început să ia în considerare generarea SQL. Ideea a fost de a folosi LLM pentru a genera mai întâi o instrucțiune SQL din întrebarea utilizatorului, prezentată LLM în limbaj natural. Interogarea generată este apoi rulată pe baza de date pentru a prelua contextul relevant. Contextul este utilizat în cele din urmă pentru a mări promptul de intrare pentru un pas de rezumare.
Ipoteza lui Q4 a fost că, pentru a obține o reamintire mai mare pentru pasul de recuperare, în special pentru setul de date numerice, trebuiau mai întâi să genereze SQL din întrebarea utilizatorului. Se credea că acest lucru nu numai că crește acuratețea, ci și menține contextul în domeniul afacerii pentru o anumită întrebare. Pentru generarea de interogări și pentru a genera SQL precis, Q4 trebuia să facă LLM-ul pe deplin conștient de structura setului de date. Aceasta a însemnat promptul necesar pentru a include schema bazei de date, câteva rânduri de date eșantion și explicații despre câmpuri care pot fi citite de om pentru câmpurile care nu sunt ușor de înțeles.
Pe baza testelor inițiale, această metodă a dat rezultate excelente. LLM echipat cu toate informațiile necesare a fost capabil să genereze SQL-ul corect, care a fost apoi rulat pe baza de date pentru a prelua contextul corect. După ce a experimentat ideea, Q4 a decis că generarea SQL este calea de urmat pentru a aborda provocările de extragere a contextului pentru propriul set de date specific.
Să începem prin a descrie abordarea globală a soluției, să o descompunem în componentele sale și apoi să punem piesele împreună.
Prezentare generală a soluțiilor
LLM-urile sunt modele mari cu miliarde de parametri care sunt pre-antrenați folosind cantități foarte mari de date dintr-o varietate de surse. Datorită amplorii seturilor de date de formare, se așteaptă ca LLM-urile să aibă cunoștințe generale într-o varietate de domenii. LLM-urile sunt, de asemenea, cunoscute pentru abilitățile lor de raționament, care variază de la un model la altul. Acest comportament general poate fi optimizat pentru un anumit domeniu sau industrie prin optimizarea suplimentară a unui model de bază folosind date suplimentare de pre-antrenare specifice domeniului sau prin ajustarea fină folosind date etichetate. Având în vedere contextul, metadatele și instrucțiunile potrivite, un LLM cu scop general bine selectat poate produce SQL de bună calitate, atâta timp cât are acces la contextul adecvat specific domeniului.
În cazul de utilizare al Q4, începem cu traducerea întrebării clientului în SQL. Facem acest lucru combinând întrebarea utilizatorului, schema bazei de date, câteva exemple de rânduri ale bazei de date și instrucțiuni detaliate ca o solicitare către LLM pentru a genera SQL. După ce avem SQL, putem rula un pas de validare dacă considerăm necesar. Când suntem mulțumiți de calitatea SQL, rulăm interogarea în baza de date pentru a prelua contextul relevant de care avem nevoie pentru următorul pas. Acum că avem contextul relevant, putem trimite întrebarea originală a utilizatorului, contextul preluat și un set de instrucțiuni înapoi la LLM pentru a produce un răspuns final rezumat. Scopul ultimului pas este ca LLM să rezumă rezultatele și să ofere un răspuns contextual și precis, care poate fi apoi transmis utilizatorului.
Alegerea LLM utilizată în fiecare etapă a procesului are un impact puternic asupra preciziei, costurilor și performanței. Alegerea unei platforme sau a unei tehnologii care vă poate permite flexibilitatea de a comuta între LLM-uri în cadrul aceluiași caz de utilizare (deplasări LLM multiple pentru sarcini diferite) sau în diferite cazuri de utilizare, poate fi benefică în optimizarea calității rezultatelor, a latenței și a costurilor. . Abordăm alegerea LLM mai târziu în această postare.
Blocuri de construcție a soluției
Acum că am evidențiat abordarea la un nivel înalt, să ne afundăm în detalii, începând cu blocurile de bază ale soluției.
Amazon Bedrock
Amazon Bedrock este un serviciu complet gestionat care oferă o gamă de FM de înaltă performanță de la companii lider, inclusiv AI21 Labs, Anthropic, Cohere, Meta, Stability AI și Amazon. Amazon Bedrock oferă, de asemenea, un set larg de instrumente necesare pentru a construi aplicații AI generative, pentru a simplifica procesul de dezvoltare și pentru a menține confidențialitatea și securitatea. În plus, cu Amazon Bedrock puteți alege dintre diverse opțiuni FM și puteți ajusta în continuare modelele în mod privat, folosind propriile date, pentru a alinia răspunsurile modelelor cu cerințele cazului dvs. de utilizare. Amazon Bedrock este complet fără server, fără infrastructură de bază pentru a gestiona extinderea accesului la modelele disponibile printr-un singur API. În cele din urmă, Amazon Bedrock acceptă mai multe cerințe de securitate și confidențialitate, inclusiv eligibilitatea HIPAA și conformitatea cu GDPR.
În soluția din Q4, folosim Amazon Bedrock ca un model fără server, bazat pe API, cu mai multe fundații. Deoarece intenționăm să facem mai multe călătorii la LLM în cadrul aceluiași caz de utilizare, pe baza tipului de sarcină, putem alege modelul care este cel mai optim pentru o anumită sarcină, fie că este vorba de generare SQL, validare sau rezumare.
LangChain
LangChain este un cadru de integrare și orchestrare open source cu un set de module pre-construite (I/O, recuperare, lanțuri și agenți) pe care le puteți utiliza pentru a integra și a orchestra sarcini între FM, surse de date și instrumente. Cadrul facilitează construirea de aplicații AI generative care necesită orchestrarea mai multor pași pentru a produce rezultatul dorit, fără a fi nevoie să scrieți cod de la zero. LangChain acceptă Amazon Bedrock ca model API cu mai multe fundații.
Specific pentru cazul de utilizare al Q4, folosim LangChain pentru coordonarea și orchestrarea sarcinilor din fluxul nostru de lucru, inclusiv conectarea la surse de date și LLM-uri. Această abordare a simplificat codul nostru, deoarece putem folosi modulele LangChain existente.
SQLDatabaseChain
SQLDatabaseChain este un lanț LangChain care poate fi importat din langchain_experimental. SLDatabaseChain simplifică crearea, implementarea și rularea interogărilor SQL, folosind conversiile și implementările sale eficiente text-to-SQL.
În cazul nostru de utilizare, folosim SQLDatabaseChain în generarea SQL, simplificând și orchestrând interacțiunile dintre baza de date și LLM.
Setul de date
Setul nostru de date structurat poate locui într-o bază de date SQL, lac de date sau depozit de date, atâta timp cât avem suport pentru SQL. În soluția noastră, putem folosi orice tip de set de date cu suport SQL; acest lucru ar trebui să fie extras din soluție și nu ar trebui să schimbe soluția în niciun fel.
Detalii de implementare
Acum că am explorat abordarea soluției, componentele soluției, alegerea tehnologiei și instrumentele, putem pune piesele împreună. Următoarea diagramă evidențiază soluția end-to-end.
Să parcurgem detaliile implementării și fluxul procesului.
Generați interogarea SQL
Pentru a simplifica codarea, folosim cadrele existente. Folosim LangChain ca cadru de orchestrare. Începem cu etapa de introducere, în care primim întrebarea utilizatorului în limbaj natural.
În această primă etapă, luăm această intrare și generăm un SQL echivalent pe care îl putem rula pe baza de date pentru extragerea contextului. Pentru a genera SQL, folosim SQLDatabaseChain, care se bazează pe Amazon Bedrock pentru acces la LLM dorit. Cu Amazon Bedrock, folosind un singur API, avem acces la un număr de LLM-uri subiacente și îl putem alege pe cel potrivit pentru fiecare călătorie LLM pe care o facem. Mai întâi stabilim o conexiune la baza de date și preluăm schema tabelului necesară împreună cu câteva rânduri eșantion din tabelele pe care intenționăm să le folosim.
În testarea noastră, am constatat că 2-5 rânduri de date din tabel sunt suficiente pentru a oferi suficiente informații modelului fără a adăuga prea multă suprasarcină inutilă. Trei rânduri au fost suficiente pentru a oferi context, fără a copleși modelul cu prea multă intrare. În cazul nostru de utilizare, am început cu Anthropic Claude V2. Modelul este cunoscut pentru raționamentul său avansat și pentru răspunsurile contextuale articulate atunci când este furnizat cu contextul și instrucțiunile potrivite. Ca parte a instrucțiunilor, putem include mai multe detalii clarificatoare pentru LLM. De exemplu, putem descrie acea coloană Comp_NAME
reprezintă numele companiei. Acum putem construi promptul combinând întrebarea utilizatorului așa cum este, schema bazei de date, trei rânduri eșantion din tabelul pe care intenționăm să-l folosim și un set de instrucțiuni pentru a genera SQL-ul necesar în format SQL curat, fără comentarii sau adăugiri.
Toate elementele de intrare combinate sunt considerate prompt de intrare model. Un prompt de intrare bine conceput, care este adaptat la sintaxa preferată a modelului, are un impact puternic atât asupra calității, cât și asupra performanței rezultatelor. Alegerea modelului de utilizat pentru o anumită sarcină este, de asemenea, importantă, nu numai pentru că are un impact asupra calității rezultatelor, ci și pentru că are implicații de cost și performanță.
Discutăm selecția modelului și inginerie și optimizare promptă mai târziu în această postare, dar merită remarcat faptul că pentru etapa de generare a interogărilor, am observat că Claude Instant a reușit să producă rezultate comparabile, mai ales când întrebarea utilizatorului este bine formulată și nu la fel de sofisticată. Cu toate acestea, Claude V2 a produs rezultate mai bune chiar și cu informații mai complexe și indirecte ale utilizatorului. Am aflat că, deși în unele cazuri Claude Instant poate oferi suficientă acuratețe la o latență și un preț mai bun, cazul nostru pentru generarea de interogări a fost mai potrivit pentru Claude V2.
Verificați interogarea SQL
Următorul nostru pas este să verificăm dacă LLM a generat cu succes sintaxa de interogare corectă și că interogarea are sens contextual având în vedere schemele bazei de date și rândurile exemplu furnizate. Pentru acest pas de verificare, putem reveni la validarea interogării native în SQLDatabaseChain sau putem efectua o a doua călătorie la LLM, inclusiv interogarea generată împreună cu instrucțiunile de validare.
Dacă folosim un LLM pentru pasul de validare, putem folosi același LLM ca înainte (Claude V2) sau un LLM mai mic și mai performant pentru o sarcină mai simplă, cum ar fi Claude Instant. Deoarece folosim Amazon Bedrock, aceasta ar trebui să fie o ajustare foarte simplă. Folosind același API, putem schimba numele modelului în apelul nostru API, care se ocupă de modificare. Este important de reținut că, în majoritatea cazurilor, un LLM mai mic poate oferi o eficiență mai bună atât în ceea ce privește costul, cât și latența și ar trebui luat în considerare, atâta timp cât obțineți precizia dorită. În cazul nostru, testarea a dovedit că interogarea generată este constant exactă și cu sintaxa corectă. Știind asta, am putut sări peste acest pas de validare și să economisim latență și costuri.
Rulați interogarea SQL
Acum că avem interogarea SQL verificată, putem rula interogarea SQL în baza de date și putem prelua contextul relevant. Acesta ar trebui să fie un pas simplu.
Luăm contextul generat, îl oferim LLM-ului ales de noi cu întrebarea inițială a utilizatorului și câteva instrucțiuni și cerem modelului să genereze un rezumat contextual și articulat. Prezentăm apoi rezumatul generat utilizatorului ca răspuns la întrebarea inițială, totul aliniat cu contextul extras din setul nostru de date.
Pentru LLM implicat în pasul de rezumare, putem folosi fie Titan Text Express, fie Claude Instant. Ambele ar prezenta opțiuni bune pentru sarcina de rezumare.
Integrarea aplicației
Capacitatea de chatbot Q&A este unul dintre serviciile AI ale Q4. Pentru a asigura modularitatea și scalabilitatea, Q4 construiește servicii AI ca microservicii care sunt accesibile aplicațiilor Q4 prin intermediul API-urilor. Această abordare bazată pe API permite integrarea perfectă cu ecosistemul platformei Q4 și facilitează expunerea capabilităților serviciilor AI la suita completă de aplicații ale platformei.
Obiectivul principal al serviciilor de inteligență artificială este acela de a oferi capabilități simple de preluare a datelor din orice sursă de date publică sau proprietară, folosind limbajul natural ca intrare. În plus, serviciile AI oferă straturi suplimentare de abstractizare pentru a se asigura că sunt îndeplinite cerințele funcționale și nefuncționale, cum ar fi confidențialitatea și securitatea datelor. Următoarea diagramă demonstrează conceptul de integrare.
Provocări de implementare
Pe lângă provocările prezentate de natura setului de date numerice structurate pe care le-am discutat mai devreme, Q4 s-a confruntat cu o serie de alte provocări de implementare care trebuiau abordate.
Selectarea și performanța LLM
Selectarea LLM potrivită pentru sarcină este crucială, deoarece are un impact direct asupra calității rezultatelor, precum și asupra performanței (latență dus-întors). Iată câțiva factori care joacă în procesul de selecție LLM:
- Tip de LLM – Modul în care sunt arhitecți FM-urile și datele inițiale pe care modelul a fost pregătit în prealabil determină tipurile de sarcini la care ar fi bun LLM și cât de bun va fi. De exemplu, un text LLM ar fi bun la generarea și rezumarea textului, în timp ce un model text-to-image sau imagine-to-text ar fi mai orientat spre analiza imaginilor și sarcinile de generare.
- Dimensiunea LLM – Dimensiunile FM sunt măsurate prin numărul de parametri de model pe care un anumit model are, de obicei în miliarde pentru LLM-urile moderne. În mod obișnuit, cu cât modelul este mai mare, cu atât este mai scump de antrenat sau de reglat ulterior. Pe de altă parte, în general, pentru aceeași arhitectură de model, cu cât modelul este mai mare, cu atât ne așteptăm să fie mai inteligent în îndeplinirea tipului de sarcină către care este orientat.
- Performanță LLM – De obicei, cu cât modelul este mai mare, cu atât este nevoie de mai mult timp pentru a genera ieșire, presupunând că utilizați aceiași parametri de calcul și I/O (prompt și dimensiunea de ieșire). În plus, pentru aceeași dimensiune a modelului, performanța este puternic influențată de cât de optimizat este promptul dvs., de dimensiunea jetoanelor I/O și de claritatea și sintaxa promptului. Un prompt bine conceput, împreună cu o dimensiune optimizată a jetonului I/O, poate îmbunătăți timpul de răspuns al modelului.
Prin urmare, atunci când vă optimizați sarcina, luați în considerare următoarele bune practici:
- Alegeți un model care este potrivit pentru sarcina în cauză
- Selectați cea mai mică dimensiune a modelului care poate produce precizia pe care o căutați
- Optimizați-vă structura promptă și fiți cât mai specific posibil cu instrucțiunile într-un mod ușor de înțeles pentru model
- Utilizați cel mai mic prompt de introducere care poate oferi suficiente instrucțiuni și context pentru a produce nivelul de precizie pe care îl căutați
- Limitați dimensiunea de ieșire la cea mai mică dimensiune care poate fi semnificativă pentru dvs. și vă satisface cerințele de ieșire
Luând în considerare selecția modelului și factorii de optimizare a performanței, ne-am apucat de a optimiza cazul nostru de utilizare pentru generarea SQL. După câteva teste, am observat că, cu condiția să avem contextul și instrucțiunile potrivite, Claude Instant, cu aceleași date prompte, ar produce o calitate comparabilă a SQL ca Claude V2 la o performanță și un preț mult mai bun. Acest lucru este valabil atunci când intrarea utilizatorului este mai directă și mai simplă. Pentru o intrare mai sofisticată, Claude V2 a fost necesar pentru a produce precizia dorită.
Aplicarea aceleiași logici la sarcina de rezumare ne-a determinat să concluzionam că utilizarea Claude Instant sau Titan Text Express ar produce acuratețea necesară la un punct de performanță mult mai bun decât dacă am folosi un model mai mare, cum ar fi Claude V2. Titan Text Expressed a oferit și un preț-performanță mai bun, așa cum am discutat mai devreme.
Provocarea orchestrației
Ne-am dat seama că sunt multe de orchestrat înainte de a putea obține un răspuns semnificativ pentru întrebarea utilizatorului. După cum se arată în prezentarea generală a soluției, procesul a implicat mai multe călătorii în baza de date și mai multe călătorii LLM care sunt împletite. Dacă ar fi fost să construim de la zero, ar fi trebuit să facem o investiție semnificativă în ridicarea greutății nediferențiate doar pentru a pregăti codul de bază. Am trecut rapid la utilizarea LangChain ca cadru de orchestrare, profitând de puterea comunității open source și reutilizand modulele existente fără a reinventa roata.
Provocarea SQL
De asemenea, am realizat că generarea SQL nu este la fel de simplă precum mecanismele de extracție a contextului, cum ar fi căutarea semantică sau utilizarea înglobărilor. Mai întâi trebuie să obținem schema bazei de date și câteva rânduri eșantion pentru a le include în promptul nostru către LLM. Există și etapa de validare SQL, în care trebuia să interacționăm atât cu baza de date, cât și cu LLM. SQLDatabaseChain a fost alegerea evidentă a instrumentului. Deoarece face parte din LangChain, a fost ușor de adaptat, iar acum putem gestiona generarea și verificarea SQL asistată cu lanțul, minimizând cantitatea de muncă pe care trebuie să o facem.
Provocări de performanță
Cu utilizarea lui Claude V2 și după o inginerie promptă adecvată (pe care o discutăm în secțiunea următoare), am reușit să producem SQL de înaltă calitate. Având în vedere calitatea SQL-ului generat, am început să ne uităm la cât de multă valoare adaugă de fapt etapa de validare. După o analiză suplimentară a rezultatelor, a devenit clar că calitatea SQL-ului generat a fost constant precisă, într-un mod care a făcut nefavorabil costul/beneficiul adăugării unei etape de validare SQL. Am ajuns să eliminăm etapa de validare SQL fără a afecta negativ calitatea rezultatelor noastre și am redus timpul de validare SQL dus-întors.
Pe lângă optimizarea pentru un LLM mai eficient din punct de vedere al costurilor și al performanței pentru etapa de rezumare, am putut folosi Titan Text Express pentru a obține performanțe mai bune și eficiență a costurilor.
Optimizarea ulterioară a performanței a implicat reglarea fină a procesului de generare a interogărilor folosind tehnici eficiente de inginerie promptă. În loc să ofere o abundență de jetoane, s-a concentrat pe furnizarea unei cantități minime de jetoane de intrare, în sintaxa corectă pe care modelul este antrenat să o înțeleagă și cu un set de instrucțiuni minim, dar optim. Discutăm acest lucru mai mult în secțiunea următoare - este un subiect important care este aplicabil nu numai aici, ci și în alte cazuri de utilizare.
Inginerie promptă și optimizare
Puteți ajusta Claude pe Amazon Bedrock pentru diverse cazuri de utilizare în afaceri dacă sunt folosite tehnicile de inginerie prompte potrivite. Claude acționează în principal ca asistent conversațional care utilizează un format uman/asistent. Claude este instruit să completeze text pentru rolul de asistent. Având în vedere instrucțiunile și completările prompte dorite, putem optimiza solicitările noastre pentru Claude folosind mai multe tehnici.
Începem cu un șablon de prompt formatat corespunzător, care oferă o completare validă, apoi putem optimiza în continuare răspunsurile experimentând cu solicitări cu diverse seturi de intrări care sunt reprezentative pentru datele din lumea reală. Este recomandat să obțineți multe intrări în timp ce dezvoltați un șablon prompt. De asemenea, puteți utiliza seturi separate de date de dezvoltare promptă și date de testare.
O altă modalitate de a optimiza răspunsul Claude este de a experimenta și repeta prin adăugarea de reguli, instrucțiuni și optimizări utile. Din aceste optimizări, puteți vizualiza diferite tipuri de completări, de exemplu, spunându-i lui Claude să menționeze „Nu știu” pentru a preveni halucinațiile, gândind pas cu pas, folosind înlănțuirea promptă, oferind loc „gândirii” pe măsură ce generează răspunsuri și verificarea de două ori pentru înțelegere și acuratețe.
Să folosim sarcina noastră de generare a interogărilor și să discutăm câteva dintre tehnicile pe care le-am folosit pentru a optimiza promptul nostru. Au fost câteva elemente de bază care au beneficiat de eforturile noastre de generare de interogări:
- Folosind sintaxa umană/asistent adecvată
- Utilizarea etichetelor XML (Claude respectă și înțelege etichetele XML)
- Adăugarea de instrucțiuni clare pentru model pentru a preveni halucinațiile
Următorul exemplu generic arată cum am folosit sintaxa umană/asistent, etichetele XML aplicate și instrucțiunile adăugate pentru a restricționa ieșirea la SQL și a instrui modelul să spună „îmi pare rău, nu pot să ajut” dacă nu poate produce SQL relevant. . Etichetele XML au fost folosite pentru a încadra instrucțiunile, indicii suplimentare, schema bazei de date, explicații suplimentare pentru tabel și rânduri de exemplu.
Soluția finală de lucru
După ce am abordat toate provocările identificate în timpul probei conceptului, am îndeplinit toate cerințele soluției. Q4 a fost mulțumit de calitatea SQL-ului generat de LLM. Acest lucru este valabil pentru sarcinile simple care necesitau doar o clauză WHERE pentru a filtra datele și, de asemenea, pentru sarcinile mai complexe care necesitau agregări bazate pe context cu GROUP BY și funcții matematice. Latența de la capăt la capăt a soluției globale a fost în limitele a ceea ce a fost definit ca acceptabil pentru cazul de utilizare - secunde cu o singură cifră. Toate acestea s-au datorat alegerii unui LLM optim în fiecare etapă, unei inginerie promptă adecvată, eliminării pasului de verificare SQL și utilizării unui LLM eficient pentru etapa de rezumare (Titan Text Express sau Claude Instant).
Merită remarcat faptul că utilizarea Amazon Bedrock ca serviciu complet gestionat și capacitatea de a avea acces la o suită de LLM-uri prin același API a permis experimentarea și comutarea fără probleme între LLM-uri prin schimbarea numelui modelului în apelul API. Cu acest nivel de flexibilitate, Q4 a putut alege cel mai performant LLM pentru fiecare apel LLM în funcție de natura sarcinii, fie că este vorba de generarea de interogări, verificare sau rezumare.
Concluzie
Nu există o singură soluție care să se potrivească tuturor cazurilor de utilizare. Într-o abordare RAG, calitatea rezultatelor depinde în mare măsură de furnizarea contextului potrivit. Extragerea contextului potrivit este cheia, iar fiecare set de date este diferit prin caracteristicile sale unice.
În această postare, am demonstrat că pentru seturile de date numerice și structurate, utilizarea SQL pentru a extrage contextul utilizat pentru augmentare poate duce la rezultate mai favorabile. De asemenea, am demonstrat că cadre precum LangChain pot minimiza efortul de codare. În plus, am discutat despre necesitatea de a putea comuta între LLM-uri în cadrul aceluiași caz de utilizare pentru a obține cea mai optimă acuratețe, performanță și cost. În cele din urmă, am evidențiat modul în care Amazon Bedrock, fără server și cu o varietate de LLM-uri sub capotă, oferă flexibilitatea necesară pentru a crea aplicații sigure, performante și optimizate din punct de vedere al costurilor, cu cel mai mic volum de sarcini grele.
Începeți-vă călătoria către construirea de aplicații generative compatibile cu inteligența artificială, identificând un caz de utilizare cu valoare pentru afacerea dvs. Generarea SQL, după cum a învățat echipa Q4, poate schimba jocul în construirea de aplicații inteligente care se integrează cu depozitele dvs. de date, deblocând potențialul de venituri.
Despre autori
Tamer Soliman este arhitect senior de soluții la AWS. El îi ajută pe clienții furnizorului independent de software (ISV) să inoveze, să construiască și să se extindă pe AWS. Are peste două decenii de experiență în industrie în consultanță, instruire și servicii profesionale. Este un inventator de brevete multiple cu trei brevete acordate și experiența sa se întinde pe mai multe domenii tehnologice, inclusiv telecomunicații, rețele, integrarea aplicațiilor, AI/ML și implementări în cloud. El este specializat în AWS Networking și are o pasiune profundă pentru machine leaning, AI și AI generativă.
Mani Khanuja este Tehnic Lead – Generative AI Specialists, autoarea cărții – Applied Machine Learning and High Performance Computing on AWS și membru al Consiliului de Administrație pentru Women in Manufacturing Education Foundation Board. Ea conduce proiecte de învățare automată (ML) în diverse domenii, cum ar fi viziunea computerizată, procesarea limbajului natural și AI generativă. Ea îi ajută pe clienți să construiască, să antreneze și să implementeze modele mari de învățare automată la scară. Vorbește în cadrul conferințelor interne și externe precum re:Invent, Women in Manufacturing West, webinarii YouTube și GHC 23. În timpul liber, îi place să meargă la alergări lungi de-a lungul plajei.
Stanislav Iescenko este arhitect software la Q4 Inc.. Are peste un deceniu de experiență în industrie în dezvoltarea de software și arhitectura de sistem. Contextul său divers, care acoperă roluri, cum ar fi Tehnic Lead și Senior Full Stack Developer, îi stimulează contribuțiile la promovarea inovației a Platformei Q4. Stanislav este dedicat impulsionării inovației tehnice și modelării soluțiilor strategice în domeniu.
- 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/how-q4-inc-used-amazon-bedrock-rag-and-sqldatabasechain-to-address-numerical-and-structured-dataset-challenges-building-their-qa-chatbot/
- :are
- :este
- :nu
- :Unde
- $UP
- 100
- 118
- 125
- 15%
- 23
- 7
- a
- abilități
- capacitate
- Capabil
- abstracție
- abundenţă
- acceptabil
- acces
- accesibil
- Cont
- precizie
- precis
- Obține
- peste
- Acte
- de fapt
- adapta
- adăugat
- adăugare
- plus
- Suplimentar
- În plus,
- adăugări
- adresa
- adresat
- Ajustare
- avansat
- înaintând
- Avantaj
- După
- împotriva
- agenţi
- agregat
- AI
- Servicii AI
- ai cazuri de utilizare
- AI / ML
- vizează
- alinia
- aliniat
- TOATE
- permite
- permis
- de-a lungul
- de asemenea
- Cu toate ca
- am
- Amazon
- Amazon Web Services
- sumă
- Sume
- an
- analiză
- analiști
- Google Analytics
- analiza
- analiza
- și
- O alta
- răspunde
- răspunsuri
- Antropică
- Orice
- nimic
- api
- API-uri
- aplicabil
- aplicație
- aplicatii
- aplicat
- abordare
- arhitectură
- SUNT
- AS
- cere
- Bunuri
- Asistent
- asistată
- sortiment
- At
- spori
- augmented
- autor
- disponibil
- conştient
- AWS
- înapoi
- fundal
- bazat
- de bază
- BE
- Plajă
- a devenit
- deoarece
- fost
- înainte
- Început
- comportament
- fiind
- credea
- benefică
- CEL MAI BUN
- Cele mai bune practici
- Mai bine
- între
- miliarde
- Bloca
- Blocuri
- bord
- Consiliu de Administratie
- carte
- Bot
- atât
- lăţime
- Pauză
- larg
- construi
- Clădire
- construiește
- construit
- afaceri
- dar
- by
- apel
- a venit
- CAN
- Poate obține
- capacități
- capacitate
- capital
- Piețele de capital
- pasă
- caz
- cazuri
- lanţ
- lanţuri
- contesta
- provocări
- construirea provocărilor
- Schimbare
- Changer
- schimbarea
- Caracteristici
- chatbot
- chatbots
- alegere
- Alege
- alegere
- claritate
- curat
- clar
- mai aproape
- Cloud
- cod
- Codificare
- Coloană
- combinate
- combinând
- cum
- comentarii
- comercial
- comunica
- Comunicare
- comunitate
- Companii
- companie
- comparabil
- completare
- complex
- complexitate
- conformitate
- componente
- înţelege
- Calcula
- calculator
- Computer Vision
- tehnica de calcul
- concept
- încheia
- încheiat
- concluzie
- efectuat
- conferințe
- Conectați
- Conectarea
- conexiune
- Lua în considerare
- luate în considerare
- luand in considerare
- consecvent
- Constând
- constă
- construi
- consultant
- conţinut
- context
- contextual
- continua
- continuu
- contribuţii
- convențional
- de conversaţie
- conversii
- convertit
- coordonator
- Nucleu
- corecta
- A costat
- ar putea
- crea
- critic
- CRM
- crucial
- client
- clienţii care
- zilnic
- de date
- Lacul de date
- puncte de date
- confidențialitatea datelor
- Confidențialitatea și securitatea datelor
- știința datelor
- Pe bază de date
- Baza de date
- seturi de date
- Date
- deceniu
- zeci de ani
- hotărât
- Decidând
- dedicat
- considerate
- definit
- Cerere
- demonstrat
- demonstrează
- depinde de
- implementa
- implementări
- descrie
- descriind
- dorit
- detaliat
- detalii
- determină
- Dezvoltator
- în curs de dezvoltare
- Dezvoltare
- diferit
- direcționa
- direct
- Directorii
- discuta
- discutat
- scufunda
- diferit
- do
- domeniu
- domenii
- Dont
- verificare dubla
- jos
- conducere
- două
- în timpul
- dinamic
- fiecare
- Mai devreme
- uşor
- ecosistem
- Educaţie
- Eficace
- eficiență
- eficient
- eficient
- efort
- Eforturile
- oricare
- element
- eligibilitate
- eliminarea
- șmirghel
- angajat
- permite
- capăt
- un capăt la altul
- încheiat
- angaja
- angajament
- Inginerie
- suficient de
- asigura
- echipat
- Echivalent
- IT G
- mai ales
- stabili
- evaluarea
- evaluare
- Chiar
- evenimente
- Fiecare
- exemplu
- exemple
- existent
- aștepta
- de aşteptat
- scump
- experienţă
- experiment
- experimente
- expert
- expertiză
- explorat
- expres
- și-a exprimat
- extindere
- extern
- extrage
- extracţie
- cu care se confruntă
- facilitează
- factori
- ritm rapid
- favorabil
- realizabil
- puțini
- camp
- Domenii
- umple
- filtru
- final
- În cele din urmă
- financiar
- date financiare
- First
- Flexibilitate
- debit
- Concentra
- urma
- următor
- Pentru
- format
- Înainte
- promovarea
- găsit
- Fundație
- FRAME
- Cadru
- cadre
- Gratuit
- din
- Complet
- Stivă completă
- complet
- funcțional
- funcții
- mai mult
- joc
- joc schimbător
- GDPR
- Respectarea GDPR
- orientat
- General
- genera
- generată
- generează
- generator
- generaţie
- generativ
- AI generativă
- obține
- obtinerea
- Da
- dat
- oferă
- Oferirea
- Go
- scop
- Goluri
- bine
- acordate
- mare
- grup
- În creştere
- HAD
- mână
- fericit
- Avea
- având în
- he
- cu sediul
- greu
- ridicare de greutati
- ajutor
- ajută
- ei
- aici
- Înalt
- performanta inalta
- de înaltă calitate
- superior
- cea mai mare
- Evidențiat
- highlights-uri
- extrem de
- sugestii
- lui
- istorie
- capotă
- Cum
- Totuși
- HTTPS
- uman
- uman poate fi citit
- i
- idee
- identificat
- identificarea
- if
- imagine
- Impactul
- afectate
- impact
- Impacturi
- punerea în aplicare a
- implementarea
- implementările
- implementat
- implicații
- important
- îmbunătăţi
- in
- În altele
- Inc
- include
- Inclusiv
- Crește
- incrementală
- independent
- persoane fizice
- industrie
- informații
- Infrastructură
- inițială
- inițial
- inova
- Inovaţie
- intrare
- intrări
- clipă
- instituții
- instrucțiuni
- integra
- integrare
- intenţionează
- interacţiona
- interacţiuni
- intern
- impletesc
- în
- intuitiv
- investiţie
- investitor
- Investitori
- implicat
- emitenți
- isv
- IT
- ESTE
- călătorie
- jpg
- doar
- A pastra
- Cheie
- Cunoaștere
- cunoştinţe
- cunoscut
- Labs
- lac
- peisaj
- limbă
- mare
- mai mare
- Nume
- în cele din urmă
- Latență
- mai tarziu
- straturi
- conduce
- conducere
- Conduce
- învățat
- învăţare
- cel mai puțin
- Led
- Lectii
- Lectii invatate
- Nivel
- ridicare
- ca
- îi place
- LLM
- logică
- Londra
- Lung
- Uite
- cautati
- Lot
- maşină
- masina de învățare
- făcut
- Principal
- mai ales
- Mainstream
- menține
- Mentine
- face
- FACE
- administra
- gestionate
- administrare
- de fabricaţie
- multe
- Piață
- Analiza de piaţă
- Piata de date
- pieţe
- potrivire
- matematic
- Mai..
- semnificativ
- a însemnat
- mecanisme
- Întâlni
- membru
- cu
- meta
- Metadata
- metodă
- Metodologie
- microservices
- minim
- minimizând
- amesteca
- ML
- model
- Modele
- Modern
- Module
- mai mult
- cele mai multe
- Mai ales
- în mişcare
- mult
- Multicolor
- multiplu
- nume
- nativ
- Natural
- Procesarea limbajului natural
- Natură
- necesar
- Nevoie
- necesar
- negativ
- rețele
- Nou
- New York
- următor
- Nu.
- nota
- observând
- acum
- număr
- numere
- obiectiv
- evident
- of
- de pe
- oferit
- promoții
- ofițerii
- Birouri
- de multe ori
- on
- ONE
- afară
- deschide
- open-source
- optimă
- optimizare
- Optimizați
- optimizate
- optimizarea
- Opţiuni
- or
- orchestrând
- orchestrație
- comandă
- original
- Altele
- al nostru
- producție
- peste
- global
- Prezentare generală
- copleşitor
- propriu
- deţinute
- proprietate
- parametrii
- parte
- special
- Trecut
- pasiune
- brevet
- Brevete de inventie
- cale
- Efectua
- performanță
- efectuarea
- alege
- piese
- platformă
- Plato
- Informații despre date Platon
- PlatoData
- Joaca
- Punct
- puncte
- pozitiv
- posibil
- Post
- potenţial
- putere
- competenţelor
- practicile
- preferat
- prezenta
- prezentat
- împiedica
- preţ
- Principiile
- intimitate
- Confidențialitate și securitate
- proces
- prelucrare
- produce
- Produs
- Produse
- profesional
- profund
- proiect
- Proiecte
- solicitări
- dovadă
- dovada de concept
- adecvat
- proprietate
- s-au dovedit
- furniza
- prevăzut
- furnizează
- furnizarea
- public
- companii publice
- public
- scop
- pune
- Q & A
- calitate
- interogări
- întrebare
- repede
- Citate
- Clasat
- mai degraba
- RE
- gata
- lumea reală
- realizat
- a primi
- recomandat
- înregistrări
- corelarea
- reglementate
- relaţii
- relaţie
- Rapoarte
- reprezentant
- reprezentând
- reprezintă
- necesita
- necesar
- Cerinţe
- resursă
- apreciat
- privințe
- răspuns
- răspunsuri
- restrânge
- REZULTATE
- venituri
- reveni
- revizuirea
- dreapta
- Riscurile
- Rol
- rolurile
- Cameră
- rotund
- norme
- Alerga
- ruleaza
- acelaşi
- satisfăcut
- mulțumit cu
- Economisiți
- Spune
- scalabilitate
- Scară
- Ştiinţă
- zgâria
- fără sudură
- perfect
- Caută
- Al doilea
- secunde
- Secțiune
- sigur
- securitate
- vedea
- selecţie
- Vanzatorii
- trimite
- senior
- sens
- distinct
- serie
- serverless
- serviciu
- Servicii
- set
- Seturi
- câteva
- fasonarea
- acționar
- Acționarii
- ea
- să
- a arătat
- indicat
- Emisiuni
- semnificativ
- simplu
- simplu
- simplificată
- simplifica
- simplificarea
- singur
- Mărimea
- dimensiuni
- mai mici
- inteligent
- mai inteligent
- Software
- de dezvoltare de software
- soluţie
- soluţii
- unele
- sofisticat
- Sursă
- Surse
- tensiune
- se întinde
- vorbeşte
- specialiști
- specializată
- specific
- specific
- Stabilitate
- stivui
- Etapă
- pari
- stand
- Standuri
- Începe
- început
- Pornire
- Declarație
- şedere
- Pas
- paşi
- stoc
- bursa de valori
- stocate
- magazine
- simplu
- Strategic
- structura
- structurat
- Ulterior
- succes
- Reușit
- astfel de
- suficient
- potrivit
- suită
- rezuma
- REZUMAT
- a sustine
- Sprijină
- supraveghere
- Intrerupator
- sintaxă
- sistem
- tabel
- adaptate
- Lua
- luate
- ia
- luare
- Sarcină
- sarcini
- echipă
- tech
- Tehnic
- tehnici de
- Tehnologia
- telecom
- spune
- șablon
- test
- Testarea
- teste
- 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.
- decât
- mulțumesc
- acea
- Capitala
- lor
- apoi
- Acolo.
- Acestea
- ei
- Gândire
- acest
- trei
- Prin
- de-a lungul
- timp
- Seria de timp
- ori
- gigant
- la
- azi
- împreună
- semn
- indicativele
- de asemenea
- instrument
- Unelte
- subiect
- Toronto
- față de
- Tren
- dresat
- Pregătire
- tranzacție
- Tranzacții
- transformare
- excursie
- adevărat
- Încredere
- ÎNTORCĂ
- Două
- tip
- Tipuri
- tipic
- incapabil
- în
- care stau la baza
- înţelege
- înţelegere
- înțelege
- înțeles
- unic
- deblocare
- inutil
- us
- utilizare
- carcasa de utilizare
- utilizat
- Utilizator
- ușor de utilizat
- folosind
- utilizează
- valabil
- validare
- valoare
- varietate
- diverse
- vânzător
- Verificare
- verificat
- verifica
- foarte
- viabil
- Vizualizare
- Virtual
- viziune
- umbla
- dorit
- a fost
- Cale..
- we
- web
- servicii web
- Webinare
- website
- BINE
- a mers
- au fost
- Vest
- Ce
- Roată
- cand
- întrucât
- care
- în timp ce
- voi
- cu
- în
- fără
- Femei
- cuvinte
- Apartamente
- a lucrat
- flux de lucru
- de lucru
- valoare
- ar
- scrie
- scrie cod
- XML
- încă
- York
- Tu
- Ta
- youtube
- zephyrnet