Fabrice AI: Implementarea tehnică actuală

În ultima postare, Fabrice AI: Călătoria tehnică, am explicat călătoria prin care am trecut pentru a construi Fabrice AI făcând un cerc complet. Am început prin a utiliza Chat GPT 3 și 3.5. Dezamăgit de rezultate, am încercat să folosesc Langchain Framework pentru a-mi construi propriul model AI deasupra acestuia, înainte de a reveni la Chat GPT odată ce au început să folosească baze de date vectoriale și să îmbunătățească masiv rezultatele cu 4o.

Iată procesul actual de formare a lui Fabrice AI:

  • Datele de formare (postări pe blog, URL-uri Youtube, URL-uri podcast-uri, URL-uri PDF și URL-uri de imagini) sunt stocate în baza noastră de date WordPress.
  • Extragem datele și le structurăm.
  • Noi furnizăm datele structurate către Open AI pentru instruire, utilizând API-ul Assistants.
  • Open AI creează apoi o bază de date a magazinului de vectori și o stochează.

Iată un exemplu de bucată de date structurate. Fiecare bucată de conținut are propriul fișier JSON. Ne asigurăm să nu depășim limita de 32 000 de token-uri.

{

„id”: „1”,

„data”: ” „,

„link”:”https://fabricegrinda.com/”,

„title”: {

„redat”: „Ce este Fabrice AI?”

  },

„Categorie”: „Despre Fabrice”,

„featured_media”: „https://fabricegrinda.com/wp-content/uploads/2023/12/About-me.png”,

„other_media”: „”,

„knowledge_type”: „blog”,

„contentUpdated”: „Fabrice AI este o reprezentare digitală a gândurilor lui Fabrice pe baza postărilor de pe blogul său și a unor podcasturi și interviuri transcrise selecționate folosind ChatGPT.Având în vedere că multe dintre transcrieri sunt transcrise imperfect și că blogul este doar o reprezentare limitată a individului Fabrice, ne cerem scuze pentru inexactitățile și informațiile lipsă. Cu toate acestea, acesta este un bun punct de plecare pentru a obține gândurile lui Fabrice pe multe subiecte.”

}

Aceasta este implementarea tehnică actuală:

  • Site-ul web destinat consumatorilor este găzduit pe AWS Amplify.
  • Integrarea dintre site-ul public și Open AI se realizează prin intermediul unui strat API, care este găzduit pe AWS ca server API Python.
  • Utilizăm MongoDB ca jurnal pentru a stoca toate întrebările adresate de public, răspunsurile date de Chat GPT și adresele URL ale surselor.
  • Utilizăm diverse scripturi pentru a structura datele de pe blog, YouTube etc. pentru a le transmite către Open AI în vederea instruirii.
  • Utilizăm React-Speech Recognition pentru a converti solicitările vocale în text.
  • De asemenea, utilizăm Google Analytics pentru a urmări traficul pe site.

Este important să rețineți că folosim doi asistenți:

  • Unul pentru a răspunde la întrebări.
  • Unul pentru obținerea URL-urilor metadatelor, URL-urile blogurilor care au conținutul original pentru a afișa sursele în partea de jos a răspunsurilor.

Ce urmează?

  1. Îmbunătățiri de la vorbire la text

Modelul Whisper al Open AI pentru conversia vocii în text este mai precis decât React. De asemenea, suportă mai multe limbi din fabrică și este bun la gestionarea vorbirii în limbi mixte, accente și dialecte. Ca urmare, cel mai probabil voi trece la el în lunile următoare. Acestea fiind spuse, configurarea este mai complexă, așa că s-ar putea să dureze ceva timp. Trebuie să vă ocupați de model, să gestionați dependențele (de exemplu, Python, biblioteci) și să vă asigurați că aveți suficient hardware pentru o performanță eficientă. De asemenea, Whisper nu este conceput pentru utilizarea directă în browsere. Atunci când construiți o aplicație web, trebuie să creați un serviciu backend pentru a gestiona transcrierea, ceea ce adaugă complexitate.

  • Fabrice AI Avatar

Vreau să creez un avatar Fabrice AI care arată și sună ca mine și cu care puteți purta o conversație. Am evaluat D-iD, dar l-am găsit mult prea scump pentru scopurile mele. Eleven Labs este doar pentru voce. Synthesia este grozav, dar în prezent nu creează videoclipuri în timp real. În cele din urmă, am decis să folosesc HeyGen, având în vedere prețul și funcționalitatea mai adecvate.

Bănuiesc că, la un moment dat, Open AI își va lansa propria soluție, astfel încât această muncă va fi fost în zadar. Nu mă deranjează acest lucru și voi trece la soluția Open AI când și dacă aceasta va apărea. În acest stadiu, scopul acestui exercițiu este de a afla ce este posibil cu ajutorul inteligenței artificiale și cât de multă muncă este necesară pentru a mă ajuta să înțeleg mai bine spațiul.

  • Tablou de bord personalizat

În acest moment, trebuie să execut o interogare MongoDB pentru a obține un extras al întrebărilor și răspunsurilor zilei. Construiesc un tablou de bord simplu în care pot obține extrageri și statistici simple privind numărul de interogări pe limbă, numărul de cereri speech-to-text etc.

  • Surse suplimentare de date

Tocmai am încărcat portofoliul FJ Labs la Fabrice AI. Acum puteți întreba dacă o companie face parte din portofoliu. Fabrice AI răspunde cu o scurtă descriere a companiei și un link către site-ul acesteia.

Având în vedere numărul mare de întrebări personale pe care Fabrice AI le primea și la care nu avea răspuns, mi-am făcut timp să etichetez manual fiecare vorbitor din videoclipul meu cu aniversarea a 50 de ani pentru a-i oferi conținutul de care avea nevoie.

Concluzie

Cu toată munca pe care am desfășurat-o în ultimele douăsprezece luni cu privire la toate aspectele legate de inteligența artificială, se pare că există o concluzie universală clară: cu cât aștepți mai mult, cu atât devine mai ieftin, mai ușor și mai bun, și cu atât este mai probabil ca Open AI să ofere acest lucru! Între timp, dați-mi de știre dacă aveți întrebări.

Fabrice AI: Călătoria tehnică

După cum am menționat în postarea anterioară, dezvoltarea Fabrice AI s-a dovedit mult mai complexă decât mă așteptam, forțându-mă să explorez multe abordări diferite.

Abordarea inițială: Indicele Llama – Căutare vectorială

Prima mea incursiune în îmbunătățirea abilităților de regăsire ale lui Fabrice AI a implicat utilizarea indexului Llama pentru căutarea vectorială. Conceptul a fost simplu: să iau conținutul de pe blogul meu, să-l convertesc în documente Langchain și apoi să le transform în documente Llama. Aceste documente Llama vor fi apoi stocate într-un index vectorial, permițându-mi să interoghez acest index pentru informații relevante.

Cu toate acestea, pe măsură ce am început să testez sistemul, a devenit evident că această abordare nu dădea rezultatele pe care le speram. Mai exact, atunci când am interogat sistemul cu întrebări cu context puternic, precum „Care sunt cele mai mari greșeli pe care le fac fondatorii de piețe?”, AI nu a reușit să ofere răspunsuri semnificative. În loc să recupereze conținutul nuanțat despre care știam că este încorporat în date, aceasta a returnat răspunsuri irelevante sau incomplete.

Acest eșec inițial m-a determinat să îmi reconsider abordarea. Mi-am dat seama că simpla stocare a conținutului într-un index vectorial nu era suficientă; mecanismul de recuperare trebuia să înțeleagă contextul și nuanțele întrebărilor adresate. Această constatare a fost prima dintre multele lecții care aveau să modeleze evoluția Fabrice AI.

Stocarea cunoștințelor: Stocarea și recuperarea documentelor MongoDB

Ținând cont de limitările abordării indexului Llama, am explorat apoi posibilitatea stocării documentelor Llama în MongoDB. Schema flexibilă a MongoDB și structura orientată spre documente mi s-au părut o soluție promițătoare pentru gestionarea diverselor tipuri de conținut pe care le-am acumulat de-a lungul anilor.

Planul era de a crea o experiență de căutare mai dinamică și mai receptivă. Cu toate acestea, această abordare a întâmpinat rapid probleme. Funcționalitatea de căutare, pe care am anticipat-o ca fiind mai robustă, nu a funcționat conform așteptărilor. Interogările care ar fi trebuit să returneze documente relevante nu au produs niciun rezultat sau conținut irelevant.

Acest eșec a fost frustrant, dar a subliniat, de asemenea, o lecție esențială: metoda de stocare este la fel de importantă ca strategia de recuperare. Am început să iau în considerare alte opțiuni, cum ar fi utilizarea MongoDB Atlas pentru căutările vectoriale, care ar putea oferi precizia și scalabilitatea de care aveam nevoie. Cu toate acestea, înainte de a mă angaja în această alternativă, am dorit să explorez alte abordări pentru a determina dacă există o soluție mai eficientă.

Metadata Retriever și Vector Store: Căutarea specificității

Una dintre următoarele căi pe care le-am explorat a fost utilizarea unui recuperator de metadate combinat cu un magazin vectorial. Ideea din spatele acestei abordări a fost de a categoriza vasta gamă de informații din Fabrice AI și apoi de a extrage răspunsuri bazate pe aceste categorii. Prin structurarea datelor cu metadate, am sperat să îmbunătățesc capacitatea AI de a oferi răspunsuri specifice, direcționate.

Totuși, această metodă avea și ea limitele sale. Deși părea promițătoare la suprafață, inteligența artificială s-a chinuit să ofere răspunsuri exacte la toate tipurile de întrebări. De exemplu, când am întrebat: „Autorul este optimist?” sistemul nu a reușit să interpreteze întrebarea în contextul conținutului relevant. În loc să ofere o analiză pătrunzătoare bazată pe metadate, acesta a oferit fie răspunsuri vagi, fie niciun răspuns.

Această abordare m-a învățat o lecție valoroasă despre importanța contextului în IA. Nu este suficient să se clasifice pur și simplu informațiile; inteligența artificială trebuie să înțeleagă și modul în care aceste categorii interacționează și se suprapun pentru a forma o înțelegere coerentă a conținutului. Fără această înțelegere profundă, chiar și cele mai sofisticate metode de regăsire pot fi insuficiente.

Structurarea cunoștințelor: SummaryTreeIndex

Pe măsură ce am continuat să perfecționez Fabrice AI, am experimentat cu crearea unui SummaryTreeIndex. Această abordare urmărea să rezume toate documentele într-un format arborescent, permițând AI să navigheze prin aceste rezumate și să recupereze informații relevante pe baza structurii conținutului.

Ideea era că, prin rezumarea documentelor, inteligența artificială poate identifica rapid punctele-cheie și răspunde la întrebări cu informații concise și exacte. Cu toate acestea, această metodă s-a confruntat și cu provocări semnificative. Inteligența artificială a avut dificultăți în a oferi răspunsuri semnificative la interogări complexe, precum „Cum să luăm decizii importante în viață?” În loc să se bazeze pe conținutul bogat și nuanțat stocat în cadrul rezumatelor, răspunsurile AI erau adesea superficiale sau incomplete.

Această experiență a scos în evidență dificultatea de a echilibra amploarea și profunzimea în IA. În timp ce rezumatele pot oferi o imagine de ansamblu la nivel înalt, adesea nu au contextul detaliat necesar pentru a răspunde la întrebări mai complexe. Mi-am dat seama că orice soluție eficientă ar trebui să integreze atât conținut detaliat, cât și rezumate la nivel înalt, permițând inteligenței artificiale să apeleze la ambele, după cum este necesar.

Acesta este motivul pentru care în versiunea Fabrice AI care este disponibilă în prezent, AI oferă mai întâi un rezumat al răspunsului, înainte de a intra în mai multe detalii.

Extinderea orizonturilor: Indexul graficului de cunoștințe

Recunoscând limitările metodelor anterioare, am apelat la o abordare mai sofisticată: Knowledge Graph Index. Această abordare a implicat construirea unui graf de cunoștințe din text nestructurat, permițând AI să se angajeze în interogarea bazată pe entități. Scopul a fost de a crea o înțelegere mai dinamică și mai interconectată a conținutului, permițându-i AI-ului Fabrice să răspundă mai eficient la întrebări complexe, bazate pe context.

În ciuda promisiunilor sale, Knowledge Graph Index s-a confruntat și cu obstacole semnificative. Inteligența artificială s-a chinuit să producă rezultate exacte, în special pentru interogările care necesitau o înțelegere profundă a contextului. De exemplu, la întrebarea „Care sunt evaluările corecte ale Seed & Series A?”, AI-ul nu a reușit din nou să ofere un răspuns relevant, subliniind dificultatea integrării textului nestructurat într-un graf de cunoștințe coerent.

Această abordare, deși a eșuat în cele din urmă, a oferit informații importante cu privire la provocările utilizării grafurilor de cunoștințe în IA. Complexitatea datelor și necesitatea unui context precis au însemnat că și un graf de cunoștințe bine construit ar putea avea dificultăți în a furniza rezultatele dorite. Un alt dezavantaj al Knowledge Graph Index a fost viteza sa redusă. Timpul de răspuns pentru obținerea documentelor conexe a fost foarte mare în raport cu un index de tip vector store.

Reevaluarea datelor: Gemeni

După mai multe eșecuri, am decis să adopt o abordare diferită prin valorificarea AI-ului Google, Gemini. Ideea era să creez seturi de date din fișiere JSON-CSV și apoi să antrenez un model personalizat LLM folosind aceste date. Am sperat că, prin utilizarea datelor structurate și a unui model de formare robust, aș putea depăși unele dintre provocările care au afectat încercările anterioare.

Cu toate acestea, această abordare a întâmpinat, de asemenea, dificultăți. Procesul de formare a fost întrerupt din cauza formatării incorecte a datelor, ceea ce a împiedicat formarea eficientă a modelului. Acest eșec a subliniat importanța integrității datelor în formarea inteligenței artificiale. Fără date corect formatate și structurate, chiar și cele mai avansate modele pot să nu funcționeze conform așteptărilor.

Această experiență m-a determinat să iau în considerare potențialul de a utiliza BigQuery pentru a stoca date JSON, oferind o platformă mai scalabilă și mai fiabilă pentru gestionarea seturilor mari de date necesare pentru a antrena Fabrice AI în mod eficient.

Combinarea punctelor forte: Documente Langchain cu Pinecone

În ciuda provocărilor întâmpinate până acum, am fost hotărât să găsesc o soluție care să-i permită lui Fabrice AI să stocheze și să recupereze eficient cunoștințele. Această determinare m-a determinat să experimentez cu documentele Langchain și Pinecone. Abordarea a implicat crearea unui depozit vectorial Pinecone folosind documente Langchain și încorporări OpenAI, apoi recuperarea celor mai asemănătoare documente pe baza interogării.

Această metodă s-a dovedit promițătoare, în special atunci când interogarea a inclus titlul documentului. De exemplu, la întrebarea „Care este cheia fericirii?”, inteligența artificială a fost capabilă să recupereze și să rezume cu exactitate conținutul relevant. Cu toate acestea, au existat încă limitări, în special atunci când interogarea nu conținea cuvinte-cheie sau titluri specifice.

Această abordare a demonstrat potențialul de combinare a diferitelor tehnologii pentru a îmbunătăți performanța AI. Prin integrarea documentelor Langchain cu magazinul vectorial Pinecone, am reușit să îmbunătățesc relevanța și acuratețea răspunsurilor AI, deși cu unele limitări.

Atingerea consecvenței: Constructorul GPT OpenAI

După ce am explorat diverse metode și tehnologii, am apelat la GPT Builder de la Open AI pentru a consolida și a rafina cunoștințele stocate în Fabrice AI. Prin încărcarea întregului conținut într-o bază de cunoștințe GPT, am urmărit să creez o platformă mai coerentă și mai fiabilă pentru recuperarea și interacțiunea cu cunoștințele mele.

Această abordare s-a dovedit a fi una dintre cele mai reușite, inteligența artificială fiind capabilă să ofere rezultate mai bune într-o gamă largă de interogări. Cheia acestui succes a fost integrarea tuturor cunoștințelor într-un singur sistem coerent, permițând AI să se bazeze pe întreaga gamă de conținut atunci când răspunde la întrebări.

După cum am menționat în postarea mea anterioară, nu am putut să o fac să ruleze pe site-ul meu și a fost disponibilă numai pentru abonații plătiți ai Chat GPT, ceea ce am simțit că era prea limitativ. De asemenea, deși era mai bine, tot nu-mi plăcea calitatea răspunsurilor și nu mă simțeam confortabil să o eliberez publicului.

Rafinare finală: Asistenți GPT utilizând modelul 4o

Piesa finală a puzzle-ului în dezvoltarea Fabrice AI a venit odată cu introducerea asistenților GPT folosind modelul 4o. Această abordare a reprezentat punctul culminant al tot ceea ce am învățat pe parcursul proiectului. Prin utilizarea unei baze de date vectoriale și rafinarea solicitărilor, am urmărit să ating cel mai înalt nivel posibil de acuratețe și înțelegere contextuală în răspunsurile AI.

Această metodă a presupus încărcarea tuturor cunoștințelor pe care le-am acumulat într-o bază de date vectorială, care a fost apoi utilizată ca bază pentru interacțiunile inteligenței artificiale. Baza de date vectorială a permis AI-ului să efectueze căutări mai sofisticate, recuperând informații pe baza semnificației semantice a interogărilor, în loc să se bazeze exclusiv pe potrivirea cuvintelor cheie. Acest lucru a marcat un progres semnificativ față de abordările anterioare, permițând AI să înțeleagă și să răspundă mai bine la întrebări complexe și nuanțate.

Una dintre inovațiile cheie ale acestei abordări a fost rafinarea atentă a solicitărilor. Prin elaborarea și testarea meticuloasă a diferitelor solicitări, am reușit să ghidez inteligența artificială către furnizarea unor răspunsuri mai exacte și mai relevante. Acest lucru a implicat nu numai ajustarea formulării solicitărilor, ci și experimentarea diferitelor modalități de structurare a întrebărilor pentru a obține cele mai bune răspunsuri posibile.

Rezultatele au fost impresionante. Inteligența artificială era acum capabilă să gestioneze o gamă largă de interogări cu o precizie ridicată, chiar și atunci când întrebările erau deschise sau necesitau o înțelegere profundă a contextului. De exemplu, la întrebarea „Cum să iei cele mai importante decizii din viața ta?” AI-ul a oferit un răspuns cuprinzător și pătrunzător, bazându-se pe o varietate de surse și perspective pentru a oferi un răspuns complet.

Acest succes a fost punctul culminant al sute de ore de muncă și nenumărate experimente. Acesta a demonstrat că, cu combinația potrivită de tehnologie și rafinament, este posibil să se creeze o inteligență artificială care nu numai că poate stoca și extrage informații în mod eficient, dar și să se implice în mod semnificativ în acestea. Dezvoltarea asistenților GPT cu ajutorul modelului 4o a marcat momentul în care inteligența artificială Fabrice și-a intrat cu adevărat în drepturi, atingând nivelul de sofisticare și precizie pe care mi l-am imaginat de la început. API-ul GPT Assistants a fost apoi integrat în blogul meu pentru a permite utilizatorilor finali să interacționeze cu Fabrice AI în modul în care îl vedeți pe blog chiar acum.

Reflectând asupra călătoriei

Procesul de dezvoltare a AI Fabrice a evidențiat complexitatea lucrului cu AI, în special atunci când vine vorba de înțelegerea și contextualizarea informațiilor. M-a învățat că nu există scurtături în dezvoltarea AI – fiecare pas, fiecare iterație și fiecare experiment este o parte necesară a călătoriei către crearea a ceva cu adevărat eficient.

Privind înainte, sunt încântat să continui să perfecționez și să extind Fabrice AI. Așa cum am menționat în ultima postare, voi revizui întrebările adresate pentru a completa baza de cunoștințe acolo unde există lacune. De asemenea, sper să lansez în cele din urmă o versiune interactivă care arată și sună ca mine și cu care puteți vorbi.

>