Embedchain In Azione.

Embedchain in Azione La Rivoluzione della Tecnologia Blockchain.

immagine creata con Midjourney

Immagina di sviluppare un bot che può fornire informazioni da un documentario su YouTube in tendenza e conoscenze da un classico della letteratura e alcune pubblicazioni di blog contemporanee. Basta inserire i link rispettivi e come per magia il tuo bot multifunzionale è pronto a funzionare.

Introduzione

Probabilmente ti sarai imbattuto in innumerevoli articoli che discutono della creazione di chatbot intelligenti che filtrano dati, documenti e link utilizzando popolari database vettoriali. Tra questi, Langchain e LlamaIndex emergono spesso come soluzioni preferite per l’estrazione di conoscenza, indicizzazione e interrogazione di database.

Quindi, ho una solida base in questo campo, avendo contribuito a un corso su Langchain e Vector Databases per la produzione. In questo articolo, ho intenzione di condividere le conoscenze acquisite affrontando gli aspetti più impegnativi nel lavorare con queste strutture e strumenti.

Tra i problemi più comuni vi erano:

Come dovrei suddividere i dati? Qual è una dimensione di suddivisione significativa? Come posso creare embedding per ogni frammento? Quale modello di embedding dovrei utilizzare? Come dovrei archiviare i frammenti in un database vettoriale? Quale database vettoriale dovrei utilizzare? Dovrei archiviare i metadati insieme agli embedding? Come posso trovare documenti simili per una query? Qual modello di ranking dovrei utilizzare?

Qualche mese fa, mi sono imbattuto in Embedchain. L’entusiasmo nel testare le sue capacità era evidente e ora è diventato uno strumento indispensabile per i miei progetti personali.

Quindi, cosa rende Embedchain una novità rivoluzionaria nella creazione di app e chatbot?

Scopriamo gli elementi di Embedchain per comprendere il suo approccio metodico nella creazione di chatbot capaci di analizzare qualsiasi dataset.

La struttura per la creazione del bot

Rilevamento e caricamento dei dati: Embedchain è flessibile nel gestire diversi tipi di dati. Sia che si tratti di un video su YouTube, di un libro digitale in PDF, di un post di blog interessante, di un link web o di dati memorizzati in locale, riconosce e elabora tutto con facilità. Questo elimina la complicazione di gestire caricatori di dati o selezionare il formato appropriato. Basta un semplice comando .add per integrare i dati nel chatbot o nell’app di interrogazione.

Suddivisione dei dati: Una volta caricati, i dati vengono suddivisi in segmenti significativi. Questa strategia di suddivisione amplifica le potenzialità delle fasi successive nel processo di creazione di chatbot più intelligenti e reattivi.

Questa fase è spesso fonte di problemi, costringendomi a tentativi ed errori. La sottile linea di demarcazione tra mantenere le informazioni essenziali e creare dimensioni di frammenti gestibili è una problematica comune. Inutile dire che mi sono trovato immerso per ore nel tentativo di evitare la perdita di informazioni derivante da una suddivisione inappropriata.

Creazione di embedding: Ciascun pezzo suddiviso viene trasformato. I frammenti vengono convertiti in embedding, trasformando i dati grezzi in vettori leggibili dalle macchine, pronti per l’archiviazione e il recupero.

La scelta del modello e del metodo può influire notevolmente sui risultati. Personalmente, mi sono orientato su modelli rinomati di OpenAI per il recupero migliorato, alimentati ulteriormente da un database vettoriale. Embedchain offre una gamma di opzioni per l’indicizzazione, l’archiviazione e il recupero di vettori su misura per diverse attività e budget.

immagine dell'autore

Per coloro che hanno un budget limitato o che stanno sperimentando, c’è la possibilità di utilizzare il sentence transformer o modelli personalizzati disponibili tramite Huggingface, che non comportano alcun costo. Questa flessibilità significa che, con le giuste configurazioni e scelte, è possibile eseguire efficacemente l’intera applicazione di chatbot senza sostenere spese aggiuntive.

Archiviazione: Infine, questi vettori leggibili dalle macchine, che racchiudono l’essenza dei dati originali, trovano una casa in un database vettoriale, in attesa della loro chiamata in futuro durante le interrogazioni. Embedchain si basa sul database vettoriale Chroma, una scelta lodevole secondo la mia esperienza, e come bonus è disponibile senza costi aggiuntivi.

Funzionalità: Embedchain offre funzionalità progettate per interazioni intuitive. C’è l’Interfaccia di Query, che funge da bot di domande e risposte. Utilizzando la funzione .query(), fornisce risposte dirette senza conservare il contesto della conversazione precedente.

L’Interfaccia di Chat offre un’esperienza più connessa. Attraverso la funzione .chat, ricorda le conversazioni precedenti, garantendo risposte consapevoli del contesto.

Esiste l’opzione Dry Run per testare le richieste senza inviarle a LLM. E per una risposta in tempo reale, è utile la capacità di Stream Response.

Esempio di App

Il modo migliore per dimostrare ciò è con un esempio. Ho creato una app veloce per cercare nella documentazione che contiene numerose tabelle, benchmark, nuovi concetti e algoritmi. Mi è stato chiesto di scrivere un whitepaper per un’azienda di cui sapevo poco. Ho raccolto tutte le informazioni che potevo dal loro sito web e da alcune fonti aggiuntive.

Il flusso di lavoro: ho raccolto le fonti di dati e le ho caricate. Sono state quindi automaticamente suddivise, incorporate e memorizzate nel database, consentendomi di interrogarle rapidamente. Ecco il codice dettagliato che spiega come ho realizzato tutto ciò:

Prima di tutto, assumendo che tu abbia installato sia OpenAI che Embedchain tramite pip, puoi importare la chiave API di OpenAI. Assicurati di conservare questa chiave in un file separato per evitare l’esposizione pubblica:

Puoi dare un nome al tuo bot e assegnare quel nome alla funzione App(). Successivamente, inizierai il processo di ingestione dei dati. Nel mio caso, avevo bisogno di informazioni disponibili sul sito web. Embedchain offre un modo per incorporare un intero sito web, ma avevo bisogno solo di pagine specifiche per la mia indagine:

Come puoi vedere, aggiungere link per alimentare il bot è semplice con il comando .add. Quando esegui la cella, dovresti ricevere un output simile al seguente, confermando che i dati sono stati vettorializzati e memorizzati:

'80cd3a55397a9406be28c5d752c0f41b'

Successivamente, ho cercato dati da YouTube che potessero darmi informazioni su benchmarking e dettagli aggiuntivi sull’azienda:

Alla base di questo approccio c’è un modello che elabora le trascrizioni, insieme a un ‘yt_loader’ che recupera i link e li incorpora nel bot. Il bot è come una spugna: più ci lanci dentro, più diventa succoso. Quindi, ho inserito un paper di ArXiv sul benchmarking per dare un po’ di pepe alle cose.

In questo frammento di codice, ho inserito dati da Notion, Google Docs e GitHub. Perché limitare la saggezza mondiale del tuo bot, no?

Per ottenere risposte dal mio bot, tutto quello che devo fare è intrattenere una conversazione informale. Esplora il suo database, recupera gemme pertinenti e restituisce una risposta eloquente:

L’output:

Per inviare benchmarks sulla piattaforma DataPerf, i partecipanti possono utilizzare la piattaforma online chiamata Dynabench. Possono inviare le proprie soluzioni per la valutazione seguendo le linee guida fornite sulla piattaforma. La piattaforma Dynabench ospita i benchmark DataPerf, gli strumenti di valutazione, le classifiche e la documentazione. I partecipanti possono inviare, valutare e confrontare le proprie soluzioni per tutti i benchmark incentrati sui dati definiti nella suite DataPerf. La piattaforma supporta anche una vasta gamma di elementi di invio, come subset di addestramento, valori di priorità/ordinamento e strategie di acquisto. Se hai bisogno di istruzioni più specifiche su come inviare benchmark, si consiglia di fare riferimento alla documentazione o alle linee guida fornite sulla piattaforma Dynabench.

Posso semplicemente chiacchierare con esso, e sfoglia il suo database come un bibliotecario sotto caffeina, servendo risposte generate da tutta quella conoscenza selezionata 🙂

Esperimento n. 2

Ecco un valore aggiunto: includo un breve esperimento con un bot Discord. Quello che è notevole è che mi sono avventurato in questo senza esperienza precedente nello sviluppo di bot Discord. Questo mostra quanto sia facile esplorare nuove aree quando si utilizza Embedchain.

La documentazione

La documentazione di Embedchain è una masterclass di chiarezza, ad essere onesti. Nel labirinto che è la documentazione tecnica, è facile perdere di vista ciò che avevi inizialmente impostato per trovare. Con Embedchain, questo non è un problema. Hanno implementato un bot automatico che ti guida nella documentazione, fornendo non solo risposte, ma anche frammenti di codice e suggerimenti di risorse. È un livello di assistenza raramente visto nei nuovi moduli o framework, e sono totalmente a favore di rendere questo il nuovo standard nelle documentazioni tecniche.

Bot di Discord in 5 minuti

Per configurare un bot, inizia inserendo la tua chiave API di OpenAI in un file separato .env. Successivamente, visita il sito del developer di Discord per creare una nuova applicazione bot.

Lì, segui la documentazione per inserire i dettagli del bot e modificare alcune impostazioni, come attivare tutte e tre le opzioni sotto ‘Privileged Gateway Intents’. Non dimenticare di salvarle.

Dopo aver fatto ciò, dovrai reimpostare e copiare un valore token di Discord da utilizzare successivamente. Dopodiché, torna alle impostazioni del bot, trova la sezione OAuth2 e aggiorna ulteriori impostazioni, principalmente sulle azioni che il bot può svolgere come l’invio di messaggi.

Genererai quindi un URL che ti permetterà di aggiungere il tuo bot a un server di Discord. Copia quell’URL, incollalo in un browser web, seleziona il server in cui desideri che il tuo bot sia e dagli il via libera.

Ecco un suggerimento da professionisti:

Puoi mantenere il tuo bot di Discord online quasi costantemente e utilizzare la sua capacità di embedchain per ottenere nuovi dati al volo. Con la configurazione che ho descritto, puoi far funzionare rapidamente il tuo bot e tenerlo aggiornato semplicemente fornendogli dei link. Quindi, se ti trovi in una situazione in cui hai bisogno di informazioni immediatamente, il tuo bot è a una semplice query di distanza. Non dovrai più fare ricerche per trovare quei dati sfuggenti; il tuo bot ti copre.

Installa i requisiti:

discord==2.3.1embedchain==0.0.58python-dotenv==1.0.0

Sei anche libero di clonare il repository Embedchain da GitHub, che include esempi funzionali. Sono qui solo per mostrarti come un po’ di personalizzazione del codice possa aiutarti a far coincidere il bot con i tuoi interessi particolari.

Ad esempio, ho creato un bot per cani influenzato dai meme che mi fornisce le informazioni di cui ho bisogno al momento opportuno. In un gesto giocoso, ho apportato una piccola modifica al codice per ‘dogsplain’ – un termine che mi permette di ottenere informazioni nel mio stile di chat distintivo con il bot:

Tinkering con il codice, probabilmente scoprirai numerosi modi per progettare lo stile del bot secondo le tue preferenze. Inoltre, l’esperienza serve come un campo di gioco per l’apprendimento.

caption by author

Per aggiungere le fonti di dati al bot utilizza il comando slash:

/add <data_type> <url_or_text>/query <question>/chat <question>
caption by author

Voilà! Esegui il codice di attivazione e il tuo bot prende vita, apparirà online immediatamente.

Conclusioni

Come illustrato negli esempi sopra, la creazione di un bot completamente funzionale capace di reperire istantaneamente informazioni in una varietà di formati – testo, video di YouTube, PDF, pagine web, sitemap, Docx, documenti di Google, Notion, CSV, MDX o coppie di domande e risposte – è notevolmente semplice.

Consiglio vivamente di dare uno sguardo ai vari esempi nella sezione di esposizione della comunità showcase section. Probabilmente li troverai ispiratori e potrai avere nuove idee ispirate a ciò che vedi 😎