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.