Fabrice AI: Attuale implementazione tecnica

Nell’ultimo post, Fabrice AI: il viaggio tecnico, ho spiegato il percorso che abbiamo seguito per costruire Fabrice AI facendo un giro completo. Ho iniziato usando le Chat GPT 3 e 3.5. Deluso dai risultati, ho provato a utilizzare Langchain Framework per costruire il mio modello di intelligenza artificiale, prima di tornare a Chat GPT quando ha iniziato a utilizzare i database vettoriali e a migliorare notevolmente i risultati con 4o.

Ecco l’attuale processo di formazione dell’intelligenza artificiale di Fabrice:

  • I dati di formazione (post di blog, URL di Youtube, URL di podcast, URL di PDF e URL di immagini) sono archiviati nel nostro database WordPress.
  • Estraiamo i dati e li strutturiamo.
  • Forniamo i dati strutturati a Open AI per la formazione utilizzando l’API Assistants.
  • Open AI crea quindi un database di archivi vettoriali e lo memorizza.

Ecco un esempio di dati strutturati. Ogni contenuto ha il suo file JSON. Ci assicuriamo di non superare il limite di 32.000 gettoni.

{

“id”: “1”,

“data”: ” “,

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

“titolo”: {

“reso”: “Che cos’è Fabrice AI?”

  },

“Categoria”: “Informazioni su Fabrice”,

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

“altri_media”: “”,

“tipo_di_conoscenza”: “blog”,

“contentUpdated”: “Fabrice AI è una rappresentazione digitale dei pensieri di Fabrice basata sui post del suo blog e su alcuni podcast e interviste trascritte con ChatGPT. Dato che molte delle trascrizioni sono imperfette e che il blog non è che una rappresentazione limitata di Fabrice come individuo, ci scusiamo per le imprecisioni e le informazioni mancanti. Tuttavia, questo è un buon punto di partenza per conoscere i pensieri di Fabrice su molti argomenti”.

}

Questa è l’attuale implementazione tecnica:

  • Il sito web rivolto ai consumatori è ospitato su AWS Amplify.
  • L’integrazione tra il sito pubblico e Open AI avviene attraverso un livello API, ospitato su AWS come server API Python.
  • Utilizziamo MongoDB come registro per memorizzare tutte le domande poste dal pubblico, le risposte fornite dalla Chat GPT e gli URL delle fonti.
  • Utilizziamo vari script per strutturare i dati provenienti dal blog, da YouTube, ecc. da passare a Open AI per l’addestramento.
  • Utilizziamo React-Speech Recognition per convertire le richieste vocali in testo.
  • Utilizziamo anche Google Analytics per monitorare il traffico del sito web.

È importante notare che utilizziamo due assistenti:

  • Uno per rispondere alle domande.
  • Uno per ottenere gli URL dei metadati, ovvero gli URL dei blog che hanno il contenuto originale per visualizzare le fonti in fondo alle risposte.

E poi?

  1. Miglioramenti al linguaggio parlato

Il modello Whisper di Open AI per la sintesi vocale è più preciso di React. Inoltre, supporta più lingue ed è in grado di gestire discorsi in lingue miste, accenti e dialetti. Di conseguenza, molto probabilmente passerò a questo modello nei prossimi mesi. Tuttavia è più complesso da configurare, quindi potrebbe volerci un po’ di tempo. Devi gestire il modello, gestire le dipendenze (ad esempio, Python, librerie) e assicurarti di avere un hardware sufficiente per ottenere prestazioni efficienti. Inoltre, Whisper non è stato progettato per essere utilizzato direttamente nei browser. Quando costruisci un’applicazione web, devi creare un servizio backend per gestire la trascrizione, il che aggiunge complessità.

  • Fabrice AI Avatar

Voglio creare un avatar Fabrice AI che abbia il mio stesso aspetto e la mia stessa voce e con il quale sia possibile conversare. Ho valutato D-iD ma l’ho trovato troppo costoso per i miei scopi. Eleven Labs è solo vocale. Synthesia è ottimo ma al momento non crea video in tempo reale. Alla fine ho deciso di utilizzare HeyGen, visto il prezzo e le funzionalità più adeguate.

Sospetto che a un certo punto Open AI rilascerà la propria soluzione e che questo lavoro sarà stato inutile. Sono tranquillo e passerò alla soluzione di Open AI quando e se verrà rilasciata. A questo punto lo scopo di tutto questo esercizio è imparare cosa è possibile fare con l’IA e quanto lavoro richiede per aiutarmi a capire meglio lo spazio.

  • Cruscotto personalizzato

In questo momento, ho bisogno di eseguire una query MongoDB per ottenere un estratto delle domande e delle risposte del giorno. Sto costruendo una semplice dashboard dove posso ottenere estrazioni e semplici statistiche sul numero di interrogazioni per lingua, sul numero di richieste speech-to-text, ecc.

  • Fonti di dati aggiuntive

Abbiamo appena caricato il Portfolio di FJ Labs su Fabrice AI. Ora puoi chiedere se un’azienda fa parte del portfolio. Fabrice AI risponde con una breve descrizione dell’azienda e un link al suo sito web.

Dato il numero di domande personali che l’intelligenza artificiale di Fabrice riceveva e alle quali non sapeva rispondere, mi sono preso il tempo di etichettare manualmente ogni interlocutore del mio video del 50° compleanno per dargli il contenuto di cui aveva bisogno.

Conclusione

Con tutto il lavoro che ho svolto negli ultimi dodici mesi su tutto ciò che riguarda l’IA, sembra esserci una chiara conclusione universale: più aspetti, più diventa economico, facile e migliore e più è probabile che Open AI lo offra! Nel frattempo, fammi sapere se hai domande.

Fabrice AI: il viaggio tecnico

Come ho detto nel post precedente, lo sviluppo di Fabrice AI si è rivelato molto più complesso del previsto, costringendomi a esplorare molti approcci diversi.

L’approccio iniziale: Indice dei lama – Ricerca vettoriale

Il mio primo tentativo di migliorare le capacità di ricerca di Fabrice AI ha riguardato l’utilizzo dell’indice Llama per la ricerca vettoriale. Il concetto era semplice: prendere i contenuti del mio blog, convertirli in documenti Langchain e poi trasformarli in documenti Llama. Questi documenti Llama sarebbero poi stati memorizzati in un indice vettoriale, consentendomi di interrogare questo indice per ottenere informazioni rilevanti.

Tuttavia, quando ho iniziato a testare il sistema, è diventato evidente che questo approccio non stava dando i risultati sperati. In particolare, quando interrogavo il sistema con domande contestualizzate come “Quali sono i più grandi errori commessi dai fondatori di mercati?”, l’intelligenza artificiale non riusciva a fornire risposte significative. Invece di recuperare il contenuto ricco di sfumature che sapevo essere incorporato nei dati, forniva risposte irrilevanti o incomplete.

Questo fallimento iniziale mi ha portato a riconsiderare il mio approccio. Mi resi conto che la semplice memorizzazione dei contenuti in un indice vettoriale non era sufficiente; il meccanismo di recupero doveva comprendere il contesto e le sfumature delle domande poste. Questa consapevolezza è stata la prima di molte lezioni che hanno segnato l’evoluzione di Fabrice AI.

Memorizzare la conoscenza: Archiviazione e recupero di documenti con MongoDB

Tenendo conto delle limitazioni dell’approccio dell’indice Llama, ho poi valutato la possibilità di archiviare i documenti Llama in MongoDB. Lo schema flessibile e la struttura orientata ai documenti di MongoDB sembravano una soluzione promettente per gestire i diversi tipi di contenuti che avevo accumulato nel corso degli anni.

Il piano era quello di creare un’esperienza di ricerca più dinamica e reattiva. Tuttavia, questo approccio ha incontrato rapidamente dei problemi. La funzionalità di ricerca, che avevo previsto più robusta, non ha funzionato come previsto. Le query che avrebbero dovuto restituire documenti rilevanti non davano alcun risultato o producevano contenuti irrilevanti.

Questa battuta d’arresto è stata frustrante, ma ha anche sottolineato una lezione fondamentale: il metodo di archiviazione è importante quanto la strategia di recupero. Ho iniziato a considerare altre opzioni, come l’utilizzo di MongoDB Atlas per le ricerche vettoriali, che potenzialmente potrebbe fornire la precisione e la scalabilità di cui avevo bisogno. Tuttavia, prima di scegliere questa alternativa, ho voluto esplorare altri approcci per capire se esistesse una soluzione più efficace.

Metadata Retriever e Vector Store: Alla ricerca della specificità

Una delle strade successive che ho esplorato è stata l’utilizzo di un recuperatore di metadati combinato con un archivio vettoriale. L’idea alla base di questo approccio era quella di categorizzare la vasta gamma di informazioni presenti in Fabrice AI e di recuperare le risposte in base a queste categorie. Strutturando i dati con i metadati, speravo di migliorare la capacità dell’intelligenza artificiale di fornire risposte specifiche e mirate.

Tuttavia, anche questo metodo aveva i suoi limiti. Sebbene all’apparenza sembrasse promettente, l’intelligenza artificiale faticava a fornire risposte accurate a tutti i tipi di domande. Ad esempio, quando ho chiesto: “L’autore è ottimista?”. Il sistema non è riuscito a interpretare la domanda nel contesto del contenuto pertinente. Invece di fornire un’analisi approfondita basata sui metadati, ha fornito risposte vaghe o nessuna.

Questo approccio mi ha insegnato una lezione preziosa sull’importanza del contesto nell’IA. Non è sufficiente categorizzare le informazioni; l’IA deve anche capire come queste categorie interagiscono e si sovrappongono per formare una comprensione coesa del contenuto. Senza questa profondità di comprensione, anche i metodi di recupero più sofisticati possono fallire.

Strutturare la conoscenza: L’indice SummaryTree

Mentre continuavo a perfezionare Fabrice AI, ho sperimentato la creazione di un SummaryTreeIndex. Questo approccio mirava a riassumere tutti i documenti in un formato ad albero, consentendo all’IA di navigare attraverso questi riassunti e di recuperare le informazioni rilevanti in base alla struttura del contenuto.

L’idea era che, riassumendo i documenti, l’intelligenza artificiale potesse identificare rapidamente i punti chiave e rispondere alle domande con informazioni concise e precise. Tuttavia, anche questo metodo ha dovuto affrontare sfide significative. L’intelligenza artificiale faticava a fornire risposte significative a domande complesse, come “Come prendere decisioni importanti nella vita?”. Invece di attingere ai contenuti ricchi e ricchi di sfumature contenuti nei riassunti, le risposte dell’IA erano spesso superficiali o incomplete.

Questa esperienza ha sottolineato la difficoltà di bilanciare ampiezza e profondità nell’IA. Sebbene i riassunti possano fornire una panoramica di alto livello, spesso mancano del contesto dettagliato necessario per rispondere a domande più complesse. Mi sono reso conto che una soluzione efficace avrebbe dovuto integrare sia i contenuti dettagliati che i riassunti di alto livello, permettendo all’IA di attingere a entrambi secondo le necessità.

Per questo motivo, nella versione dell’IA di Fabrice attualmente in funzione, faccio in modo che l’IA dia prima un riassunto della risposta, prima di entrare nei dettagli.

Espandere gli orizzonti: Indice del grafico della conoscenza

Riconoscendo i limiti dei metodi precedenti, ho scelto un approccio più sofisticato: il Knowledge Graph Index. Questo approccio prevede la costruzione di un grafo della conoscenza a partire da un testo non strutturato, consentendo all’intelligenza artificiale di effettuare interrogazioni basate su entità. L’obiettivo era quello di creare una comprensione più dinamica e interconnessa dei contenuti, consentendo all’intelligenza artificiale di Fabrice di rispondere in modo più efficace a domande complesse e contestualizzate.

Nonostante le sue promesse, il Knowledge Graph Index ha dovuto affrontare ostacoli significativi. L’intelligenza artificiale ha faticato a produrre risultati accurati, in particolare per le query che richiedevano una profonda comprensione del contesto. Ad esempio, alla domanda “Quali sono le valutazioni corrette di Seed e Series A?”, l’IA non è riuscita a fornire una risposta pertinente, evidenziando la difficoltà di integrare un testo non strutturato in un Knowledge Graph coerente.

Questo approccio, sebbene alla fine non abbia avuto successo, ha fornito importanti spunti di riflessione sulle sfide dell’utilizzo dei grafi di conoscenza nell’IA. La complessità dei dati e la necessità di un contesto preciso hanno fatto sì che anche un grafico della conoscenza ben costruito potesse faticare a fornire i risultati desiderati. Un altro inconveniente del Knowledge Graph Index era la sua lentezza. Il tempo di risposta per ottenere documenti correlati era molto elevato rispetto a un indice vettoriale.

Rivalutazione dei dati: Gemelli

Dopo diversi insuccessi, ho deciso di adottare un approccio diverso sfruttando l’intelligenza artificiale di Google, Gemini. L’idea era quella di creare set di dati da file JSON-CSV e di addestrare un modello personalizzato LLM utilizzando questi dati. Speravo che utilizzando dati strutturati e un modello di addestramento robusto, avrei potuto superare alcune delle difficoltà che avevano afflitto i precedenti tentativi.

Tuttavia, anche questo approccio ha incontrato delle difficoltà. Il processo di formazione è stato interrotto a causa di una formattazione errata dei dati, che ha impedito al modello di essere addestrato in modo efficace. Questa battuta d’arresto ha sottolineato l’importanza dell’integrità dei dati nella formazione dell’intelligenza artificiale. Senza dati correttamente formattati e strutturati, anche i modelli più avanzati possono non funzionare come previsto.

Questa esperienza mi ha portato a considerare il potenziale dell’utilizzo di BigQuery per archiviare i dati JSON, fornendo una piattaforma più scalabile e affidabile per gestire i grandi set di dati necessari per addestrare efficacemente l’intelligenza artificiale di Fabrice.

Combinare i punti di forza: Documenti Langchain con Pinecone

Nonostante le sfide affrontate finora, ero determinato a trovare una soluzione che permettesse a Fabrice AI di memorizzare e recuperare efficacemente la conoscenza. Questa determinazione mi ha portato a sperimentare i documenti Langchain e Pinecone. L’approccio prevedeva la creazione di un archivio vettoriale Pinecone utilizzando i documenti Langchain e gli embeddings OpenAI, per poi recuperare i documenti più simili in base alla query.

Questo metodo si è rivelato promettente, soprattutto quando la query includeva il titolo del documento. Ad esempio, alla domanda “Qual è la chiave della felicità?”, l’IA è stata in grado di recuperare e riassumere accuratamente i contenuti rilevanti. Tuttavia, c’erano ancora dei limiti, in particolare quando la query non conteneva parole chiave o titoli specifici.

Questo approccio ha dimostrato il potenziale della combinazione di diverse tecnologie per migliorare le prestazioni dell’IA. Integrando i documenti di Langchain con l’archivio vettoriale di Pinecone, sono riuscito a migliorare la pertinenza e l’accuratezza delle risposte dell’IA, anche se con alcune limitazioni.

Raggiungere la coerenza: Costruttore GPT OpenAI

Dopo aver esplorato vari metodi e tecnologie, mi sono rivolto al GPT Builder di Open AI per consolidare e perfezionare le conoscenze archiviate in Fabrice AI. Caricando tutti i contenuti in una base di conoscenza GPT, ho voluto creare una piattaforma più coerente e affidabile per recuperare e interagire con le mie conoscenze.

Questo approccio si è rivelato uno dei più efficaci: l’IA è stata in grado di fornire risultati migliori in una serie di interrogazioni. La chiave di questo successo è stata l’integrazione di tutte le conoscenze in un unico sistema coeso, che ha permesso all’IA di attingere all’intera gamma di contenuti per rispondere alle domande.

Come ho detto nel mio post precedente, non riuscivo a farlo funzionare sul mio sito web ed era disponibile solo per gli abbonati a pagamento di Chat GPT, il che mi sembrava troppo limitante. Inoltre, anche se era migliore, non mi piaceva la qualità delle risposte e non mi sentivo a mio agio nel rilasciarlo al pubblico.

Perfezionamento finale: Assistenti GPT con il modello 4o

L’ultimo pezzo del puzzle nello sviluppo di Fabrice AI è arrivato con l’introduzione degli assistenti GPT utilizzando il Modello 4o. Questo approccio ha rappresentato il culmine di tutto ciò che avevo imparato nel corso del progetto. Utilizzando un database vettoriale e perfezionando i suggerimenti, ho cercato di raggiungere il massimo livello possibile di accuratezza e di comprensione del contesto nelle risposte dell’IA.

Questo metodo prevedeva il caricamento di tutte le conoscenze che avevo accumulato in un database vettoriale, che veniva poi utilizzato come base per le interazioni dell’IA. Il database vettoriale ha permesso all’IA di eseguire ricerche più sofisticate, recuperando informazioni basate sul significato semantico delle query anziché affidarsi esclusivamente alla corrispondenza delle parole chiave. Questo ha rappresentato un progresso significativo rispetto agli approcci precedenti, consentendo all’IA di comprendere meglio e rispondere a domande complesse e ricche di sfumature.

Una delle innovazioni principali di questo approccio è stato l’attento perfezionamento dei suggerimenti. Creando e testando meticolosamente diverse richieste, sono stato in grado di guidare l’intelligenza artificiale verso risposte più accurate e pertinenti. Ciò ha comportato non solo la modifica della formulazione dei messaggi, ma anche la sperimentazione di diversi modi di strutturare le domande per ottenere le migliori risposte possibili.

I risultati sono stati impressionanti. L’intelligenza artificiale era ora in grado di gestire un’ampia gamma di interrogazioni con un’elevata precisione, anche quando le domande erano aperte o richiedevano una profonda comprensione del contesto. Ad esempio, alla domanda “Come prendere le decisioni più importanti della tua vita?”. L’IA ha fornito una risposta completa e approfondita, attingendo a una serie di fonti e prospettive per fornire una risposta completa.

Questo successo è stato il culmine di centinaia di ore di lavoro e di innumerevoli esperimenti. Ha dimostrato che, con la giusta combinazione di tecnologia e perfezionamento, era possibile creare un’IA in grado non solo di memorizzare e recuperare le informazioni in modo efficace, ma anche di interagire con esse in modo significativo. Lo sviluppo di GPT Assistants con il Modello 4o ha segnato il momento in cui Fabrice AI ha raggiunto il livello di sofisticazione e precisione che avevo immaginato fin dall’inizio. L’API di GPT Assistants è stata poi integrata nel mio blog per consentire agli utenti finali di interagire con Fabrice AI nel modo in cui la vedi ora sul blog.

Riflettere sul viaggio

Il processo di sviluppo di Fabrice AI ha messo in luce le complessità del lavoro con l’AI, in particolare quando si tratta di comprendere e contestualizzare le informazioni. Mi ha insegnato che non esistono scorciatoie nello sviluppo dell’IA: ogni passo, ogni iterazione e ogni esperimento è una parte necessaria del viaggio verso la creazione di qualcosa di veramente efficace.

Guardando al futuro, sono entusiasta di continuare a perfezionare e ampliare Fabrice AI. Come accennato nell’ultimo post, rivedrò le domande poste per completare la base di conoscenze dove ci sono delle lacune. Spero anche di rilasciare una versione interattiva che abbia il mio aspetto e la mia voce e con cui tu possa parlare.

>
This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.