Entrevista sobre com aplicar Intel·ligència Artificial Generativa
En aquest article, entrevistem a Carlos Narciso, Project Manager en diversos projectes d'Intel·ligència Artificial, i amb ell parlarem de què fa falta per aplicar Intel·ligència Artificial Generativa: l'arquitectura, les dades i conceptes tècnics com RAG, LLM, al·lucinacions, fine-tuning...
Entenent la Intel·ligència Artificial Generativa:
Aquest tipus de solucions tenen com a objectiu proporcionar informació als usuaris en un format conversacional. Per això, cal definir el cas d'ús que vulguem tractar. Un cop definit, haurem d'implementar un RAG que contingui informació precisa i verificable que puguin traslladar com a context conversacional a un model de llenguatge natural per generar una resposta adequada.
Una arquitectura RAG, que fa referència a Retrieval Augmented Generation, és una tècnica avançada d'intel·ligència artificial que combina el processament del llenguatge natural (NLP) amb sistemes de recuperació d'informació. Aquesta metodologia millora significativament la generació de text en permetre que els models de llenguatge es basin en una base de dades específica per construir les seves respostes. Aquesta "caixa" d'informació prevé l'ús de dades externes pel model, evitant així respostes incorrectes o al·lucinacions.
Els Models de Llenguatge de Gran Tamany (LLM per les seves sigles en anglès), com GPT, són xarxes neuronals d'àmplia capacitat entrenades amb grans quantitats de text mitjançant aprenentatge autocontrolat. Aquests models posseeixen un context conversacional extens, el que els permet dialogar sobre una àmplia varietat quasi il·limitada de temes. No obstant això, quan s'enfronten a consultes de dominis específics, com informació detallada sobre una empresa, el seu rendiment pot ser imprecís degut a la falta d'accés directe a dades específiques.
Relació entre RAG i LLM:
Aquí és on entra la relació entre RAG i LLM.
La integració de RAG amb LLM és crucial per superar aquesta limitació. Mentre que el LLM ofereix la capacitat de generar diàlegs coherents i fluïts sobre una àmplia gamma de temes, el RAG proporciona l'"experiència" necessària en temes específics. Al informar al model LLM que generi respostes basant-se en la informació específica proporcionada pel RAG, s'aconsegueix una sinergia que permet al model actuar com un expert en el tema.
En essència, el RAG dirigeix al LLM perquè utilitzi únicament la informació rellevant i actualitzada durant la generació de respostes, acotant el context conversacional al que és realment important.
La principal avantatge d'aquesta solució d'arquitectura és que acotem el context conversacional i l'adaptem per donar la informació que ens interessa en cada moment.
El principal desafiament per a arquitectures RAG + LLM és que cal entendre que la generació de la resposta dependrà de la informació continguda en el RAG. És a dir, la informació ha d'existir i ha d'estar actualitzada.
A més, és important disposar d'una correcta arquitectura de dades ja que ens permetrà que el context conversacional disposi de la informació necessària i que aquesta sigui el més precisa possible.
Dades fiables i actualitzades. Un bon govern dels dades que permeti donar context als models de llenguatge que els utilitzin.
Les empreses que tinguin una estratègia de dades més madura podran ser capaços de generar un context conversacional millor que les que no la tinguin. Tot i així, també podem posar en marxa solucions el context conversacional de les quals es basi en informació continguda en un portal web o inclús en documentació de tot tipus que estigui generada.
Els RAGs que ofereixen els serveis Cloud disposen de les eines per poder afrontar amb èxit la integració de diferents datasources i mantenir-los actualitzats.
Aquest tipus de solucions estan molt confiades i sempre intentaran donar una resposta, això pot ser un problema perquè poden arribar a transmetre informació directament incorrecta, a això és el que es diu al·lucinacions.
Nosaltres plantegem sempre una estratègia que es divideix en dos grans blocs:
- Acotar el context conversacional, és a dir els recursos que el RAG disposarà i que es passen al model de llenguatge per generar una resposta. Quan el RAG té molta informació, pot ser que el recurs que obtingui per fer-li arribar el contingut al LLM no sigui el que volem. Per això és important acotar bé la informació i anar afegint poc a poc nova informació fent que la solució cada vegada disposi de més context conversacional.
- Fine-Tuning: Inevitable en aquest tipus de solucions. Consisteix en afinar la solució perquè quan et preguntin per un tema concret vagi a buscar-lo en els recursos que li marques. Per això és necessari tenir en compte que aquest tipus de projectes s'han de dur a terme de la mà del client, acompanyant-lo en tot el procés per refinar la solució.
Hi ha diverses estratègies a l'hora d'afinar les respostes que ofereixen aquest tipus de solucions. Si et sembla bé, comentem 3:
- Prioritzar els resultats: la pregunta llançada per l'usuari arriba primer al RAG, on buscarà les fonts d'informació. És possible que aquesta resposta es trobi en diversos recursos del RAG i que alguns siguin més importants que d'altres amb tal que la resposta s'adapti a l'interès real de la pregunta. Per això és important fer una tasca de priorització d'aquests resultats que finalment es llancen al LLM per generar-la.
- Acotar correctament la informació continguda en el RAG, això implica excloure també certa informació que pugui acabar "confonent" al model de llenguatge triat. Incloure manualment informació al RAG que permeti donar resposta a preguntes que siguin transversals a l'organització i no només al context conversacional. És a dir, si fem un chatbot d'assignatures lliures per a una Universitat, no només volem incloure informació de les assignatures, sinó també informació transversal com el mètode d'estudi, contactar o altres particularitats de l'organització.
- Modificant la pregunta: A la pregunta que li fem a l'IA se li diu PROMPT. En funció d'aquest Prompt, el resultat pot ser diferent. Aquest tipus de solucions funcionen fent arribar al LLM un PROMPT que sol ser alguna cosa així:
prompt_template = """
La següent és una conversa amistosa entre un humà i una IA.
La IA és comunicativa i proporciona molts detalls específics del seu context.
Si la IA no sap la resposta a una pregunta, respon sincerament que no ho sap.
{context}
Instrucció: Basant-se en els documents anteriors, proporcioneu una resposta detallada a {question} Respongui "informació no trobada" si no està present en el document. Solució:
"""
Encara que hi ha més, considero que aquestes quatre accions de refinament són imprescindibles abans de desplegar aquest tipus de solucions.
Un cop posat a disposició dels usuaris, serà important obrir un període de monitorització activa i seguir aplicant el fine-tuning.
Tot i que hi ha més opcions, us mostraré quina seria l'arquitectura amb AWS i quina seria amb Azure.
Amb AWS:
Amb AZURE:
És important entendre que, tot i que no es tracten d'arquitectures excessivament complexes, cal conèixer en profunditat els serveis que s'estan utilitzant ja que tot el procés de fine-tuning posterior pot arribar a ser extremadament complex.
Bé, encara que podríem passar tot el dia parlant d'això, jo crec que ja hem fet una bona revisió d'aquest tipus de solucions, així que si us sembla bé, ho deixem aquí. Moltes gràcies per la xerrada!
Si vols veure aquesta entrevista a Carlos Narciso, pots accedir al vídeo aquí.