Anche detto: Cosa ho capito dell’intelligenza artificiale senza conoscere l’intelligenza artificiale
Nel corso della scorsa settimana sono stato alla Dotfmp 2024, la conferenza dedicata agli sviluppatori FileMaker che si tiene ogni anno a Berlino (qui il mio articolo sulla conferenza).
La conferenza si teneva solo 2 giorni dopo il lancio di FileMaker 2024 con la sua dirompente novità legata all'intelligenza artificiale. Inevitabile che fosse quindi l'argomento principe grazie a sessioni tenute da alcuni dei migliori esperti del settore.
Un'intelligenza non molto intelligente?
Non so quanto sia “intelligente” l’intelligenza artificiale (da ora AI), ma quello che ho capito è che è sicuramente molto artificiale.
Sembra una battuta, anche poco originale, ma in realtà non lo è.
In sintesi l’AI funziona trasformando dei concetti “umani” in stringhe di numeri (chiamati vettori), trasformando di base le “dimensioni” di un concetto in stringhe numeriche.
Semplificando molto, con un (azzardato) paragone “filemakeristico” è come se trasformassimo una tabella con i campi:
nome
cognome
indirizzo
cap
città
…
in una serie di record con solo tre valori
id_esterno
nome
valore
quindi avremo dei record sul tipo:
1 nome giulio
1 cognome villani
1 indirizzo via roma 1
1 cap 20122
1 città Milano
2 nome mario
2 cognome rossi
2 indirizzo via milano 1
2 cap 00100
2 città Roma
…
In questo caso per aggiungere un “concetto” è sufficiente aggiungere un record e non cambiare la tabella.
Poi - non contenti - andiamo a schematizzare ulteriormente, magari sostituendo i nomi con dei codici:
1 23 45 giulio
1 23 44 villani
1 56 via roma 1
1 34 23 20122
1 34 Milano
…
Ovviamente nel caso dell'Intelligenza Artificiale tutti i concetti sono espressi in numeri, perché lavorare con i numeri è il modo più efficiente per qualunque tipo di sistema informatico. E altrettanto ovviamente i vettori in questione sono un numero molto elevato, in quanto devono descrivere tutti gli aspetti di un concetto in maniera granulare e “operabile”. E quindi occupano UN SACCO di spazio.
Quindi - in maniera molto rozza - possiamo distinguere diverse procedure, ossia
1 - una procedura che trasforma i dati in vettori
2 - una procedura che seleziona i vettori utilizzati per una specifica operazione
3 - una procedura che “macina” i vettori selezionati (in caso confrontandoli con il DB dei vettori presente nel “motore”) producendo un risultato
4 - una procedura che prende il “macinato” e lo applica dove l’utente ha scelto.
Ovviamente, parlo di “procedura” come se fosse una cosa unica, ma ognuna di esse può comprendere molti diversi processi.
Da ciò si deduce che i vettori relativi a un certo dato/campo/record possono essere creati o modificati direttamente in fase di salvataggio record, per essere immagazzinati da qualche parte e selezionati e inviati al “motore macinatore” alla bisogna.
Parliamo di LLM - Modelli linguistici di grandi dimensioni
Questi motori si chiamano LLM (large language model, o se vogliamo rimanere nella lingua di Dante l’orrenda traduzione italiana ”Modello linguistico di grandi dimensioni”) e si occupano sia di generare il vettore che di interpretato in un secondo momento.
Ci sono vari tipi di LLM con varie caratteristiche, ma per quello che concerne l’utente FileMaker sono di due tipi:
- LLM commerciali (Chatgpt…)
- LLM Open source
Gli LLM Open-source sono pret-a-porter, nel senso che possono essere installati sul proprio server e addestrati specificatamente, con ovvi vantaggi in termini di costi, sicurezza e flessibilità.
Ovviamente l’onere della (non semplice) installazione e aggiornamento è a carico dell’utente, mentre i prodotti commerciali sono già pronti e forniscono tutto il necessario per lavorare da subito.
Va anche considerato che i prodotti commerciali evolvono continuamente (anche in modo “troppo” veloce) quindi dobbiamo prevedere un aggiornamento continuo alle nuove versioni, mentre un prodotto OpenSource consente una gestione molto più stabile (ovviamente una volta messo a punto).
Gli strumenti a nostra disposizione grazie a FileMaker 2024
Andiamo quindi a vedere quali sono gli strumenti che FileMaker 2024 ci mette a disposizione:
Configure AI Account [script] -> va invocata in ogni script per scegliere il “motore” che genera o elabora i vettori e specifica un “Account Name”.
Un Account name è semplicemente il nome con cui FileMaker identifica una specifica chiamata ad un motore e può essere scelto in maniera libera. È importante perché altre funzioni AI faranno riferimento proprio all’Account Name.
Insert Embedding [script]--> è la procedura 1: trasforma i dati in vettori utilizzando un modello configurato mediante Configure AI Account e li piazza in un campo o variabile. I vettori sono gestibili in due modi: come testo o come file binario. Il secondo è molto più veloce all’interno delle procedure FileMaker, mentre il primo permette una lettura più facile (solo pr i più curiosi, non c’è molto da ricavare per un limitato essere umano) ma soprattutto un passaggio più semplice in caso di API specifiche. In generale conviene scegliere sempre il file binario in un campo contenitore, a meno di esigenze specifiche.
Le procedura di creazione è sempre eseguita lato LLM, quindi FileMaker non fa altro che sottoporre a un modello specifico le informazioni e immagazzinare i risultati.
Insert Embedding in foundset [script]--> è il fratello maggiore di Insert Embedding. Mentre Insert Embedding inserisce i dati in un singolo record, Insert Embedding in foundset opera su tutto il foundset e supporta solo campi, Per fare un esempio, le il comportamento delle due funzioni è analogo a imposta campo e sostituisci contenuto campo. Anche in questo caso, le procedura di creazione è sempre eseguita lato LLM, quindi sono disponibili dei parametri per gestire le chiamate alla API, per evitare troppe chiamate o una attesa eccessiva.
GetEmbedding [funzione]—> È il fratello minore dell’istruzione di script Insert Embedding, restituisce un file con i vettori per un dato testo in base a un motore specificato con Configure AI Account. Le differenze con il fratello maggiore sono che supporta solo file ed è una funzione del motore di calcolo (quindi normalmente viene usata all’interno di una istruzione di imposta campo puntata su un campo contenitore.
Perform Semantic Find [script]- -> finalmente le nostre procedure 2 e 3! dopo tanta fatica possiamo cercare all’interno di FileMaker. Abbiamo due scelte: Natural language o embedding Vector data. sembra complicato, ma in realtà… è complicato! Natural language significa che cerco mediante testo in un campo “per esseri umani”, la procedura macina vettori e restituisce i record che siano “compatibili”: ad esempio, cerco in un campo “parenti” e mi vengono restituiti tutti i record che hanno nel campo “zia, zio, cugino, etc”. embedding Vector data significa che inserisco dei dati già vettorializzati in un campo (normalmente con la funzione GetEmbedding 9 e uso quel campo per cercare, con modalità similari.
Contrariamente alla ricerca “normale” , la ricerca semantica avviene esclusivamente via script, normalmente con questi passaggi:
- configura AI
- scegli testo da cercare
- [se embedding Vector data : - imposta campo contenitore con il vettore generato dal testo]
- Esegui ricerca semantica
e funziona solo dopo che tutti i dati che necessitano di ricerca (quindi tutti i record della tabella per i campi necessari) sono stati “vettorializzati” utilizzando Insert Embedding o Insert Embedding in foundset.
Tutto qui?
Non esattamente!
Ci sono molte altre cose da esplorare: dalle funzioni che già dal nome incutono terrore, come la temibile CosineSimilarity, ai diversi tipi di LLM e alla gestione dei vettori…
...ma è decisamente troppo per qualcuno come me che ancora non ha capito l’intelligenza artificiale.
Ne parleremo a breve!
Il primo appuntamento è con Meetup in lingua italiana - Intelligenza artificiale e ricerca semantica.
Qui il link per iscriverti (il webinar è gratuito, ma a numero chiuso) -> https://zoom.us/webinar/register/WN_ZoaVoN7OQearfzrjQAu34g