# Generació amb recuperació augmentada

Generació amb recuperació augmentada (Retrieval-Augmented Generation, RAG) és una tècnica que atorga capacitats de recuperació d'informació de models d'intel·ligència artificial generativa. Modifica les interaccions amb un model de llenguatge extens (LLM) de manera que el model respon a les consultes dels usuaris amb referència a un conjunt de documents especificat, utilitzant aquesta informació per augmentar la informació extreta de les seves pròpies dades d'entrenament i validació de conjunt de dades estàtiques i vastes. Això permet als LLM utilitzar informació específica del domini i/o actualitzada. Els casos d'ús inclouen proporcionar accés de chatbot a dades internes de l'empresa o proporcionar informació de fet només d'una font autoritzada.

## Procés

El procés RAG consta de quatre etapes clau. En primer lloc, totes les dades s'han de preparar i indexar per al seu ús pel LLM. A continuació, cada consulta consta d'una fase de recuperació, augment i generació.

### Indexació

Normalment, les dades a fer referència es converteixen en incrustacions de mots de LLM, representacions numèriques en forma de vectors grans. RAG es pot utilitzar en dades no estructurades (normalment text), semiestructurades o estructurades (per exemple, grafs de coneixement). Aquestes incrustacions s'emmagatzemen després en una base de dades vectorials per permetre la recuperació de documents.

### Recuperació

Donada una consulta d'usuari, primer es crida a un recuperador de documents per seleccionar els documents més rellevants que s'utilitzaran per augmentar la consulta. Aquesta comparació es pot fer mitjançant una varietat de mètodes, que depenen en part del tipus d'indexació utilitzat.

### Augment

El model introdueix aquesta informació rellevant recuperada al LLM mitjançant l'enginyeria prompt de la consulta original de l'usuari. Implementacions més noves (a 2023) també pot incorporar mòduls d'augment específics amb habilitats com ara l'expansió de consultes a diversos dominis i l'ús de la memòria i la millora personal per aprendre de les recuperacions anteriors.

### Generació

Finalment, el LLM pot generar resultats basats tant en la consulta com en els documents recuperats. Alguns models incorporen passos addicionals per millorar la sortida, com ara el canvi de classificació de la informació recuperada, la selecció de context i l'ajustament.

## Millores

Les millores del procés bàsic anterior es poden aplicar en diferents etapes del flux RAG.

### Codificador

Aquests mètodes se centren al voltant de la codificació del text com a vectors densos o dispersos. Els vectors dispersos, utilitzats per codificar la identitat d'una paraula, solen tenir una longitud de diccionari i contenen gairebé tots els zeros. Els vectors densos, utilitzats per codificar el significat, són molt més petits i contenen molts menys zeros. Es poden fer diverses millores a la manera com es calculen les similituds als magatzems de vectors (bases de dades).
* El rendiment es pot millorar amb productes de punts més ràpids, els veïns més propers aproximats o les cerques de centroides.
* La precisió es pot millorar amb les interaccions tardanes.
* Vectors híbrids: les representacions vectorials denses es poden combinar amb vectors dispersos one-hot per tal d'utilitzar els productes puntuals dispersos més ràpids en lloc dels densos més lents. Altres mètodes poden combinar mètodes escassos (BM25, SPLADE) amb altres densos com DRAGON.

### Mètodes centrats en el retriever

Aquests mètodes se centren a millorar la qualitat de les visites de la base de dades vectorials:
* entrena prèviament el retriever mitjançant la tasca de cloze inversa.
* augment progressiu de dades. El mètode de Dragon mostra negatius difícils per entrenar un vector retriever dens.
* Sota supervisió, entreneu el retriever per a un generador determinat. Donada una indicació i la resposta desitjada, recupereu els vectors k superiors i introduïu aquests vectors al generador per aconseguir una puntuació de perplexitat per a la resposta correcta. A continuació, minimitzeu la divergència KL entre la probabilitat dels vectors recuperats observats i les probabilitats LM per ajustar el recuperador.
* utilitzeu la reclassificació per entrenar el retriever.

### Model lingüístic

En redissenyar el model d'idioma tenint en compte el retriever, una xarxa 25 vegades més petita pot tenir una perplexitat comparable a la dels seus homòlegs molt més grans. Com que s'entrena des de zero, aquest mètode (Retro) comporta l'elevat cost de les sessions d'entrenament que evitava l'esquema RAG original. La hipòtesi és que en donar coneixement del domini durant l'entrenament, Retro necessita menys enfocament en el domini i pot dedicar els seus recursos de menor pes només a la semàntica del llenguatge. El model de llenguatge redissenyat es mostra aquí.

### En trossos

La fragmentació implica diverses estratègies per dividir les dades en vectors perquè el recuperador hi pugui trobar detalls.
Tres tipus d'estratègies de fragmentació són:
* Longitud fixa amb solapament. Això és ràpid i fàcil. La superposició de fragments consecutius ajuda a mantenir el context semàntic entre els fragments.
* Els fragments basats en la sintaxi poden dividir el document en frases. Biblioteques com spaCy o NLTK també poden ajudar.
* Fraccionament basat en el format del fitxer. Alguns tipus de fitxers tenen fragments naturals integrats i el millor és respectar-los. Per exemple, els fitxers de codi es poden fragmentar i vectoritzar millor com a funcions o classes senceres. Els fitxers HTML haurien de deixar intactes els elements <taula> o <img> codificats en base64. Cal tenir en compte les mateixes consideracions per als fitxers pdf. Biblioteques com Unstructured o Langchain poden ajudar amb aquest mètode.

### Gràfics de coneixement

En lloc d'utilitzar documents com a font per vectoritzar i recuperar-los, es poden utilitzar Knowledge Graphs. Es pot començar amb un conjunt de documents, llibres o altres cossos de text i convertir-los en un gràfic de coneixement mitjançant un dels molts mètodes, inclosos els models lingüístics. Un cop creat el gràfic de coneixement, els subgrafs es poden vectoritzar, emmagatzemar en una base de dades vectorials i utilitzar-los per a la seva recuperació com en un RAG normal. L'avantatge aquí és que els gràfics tenen una estructura més reconeixible que les cadenes de text i aquesta estructura pot ajudar a recuperar fets més rellevants per a la generació. De vegades, aquest enfocament s'anomena GraphRAG.

### Cerca híbrida

De vegades, les cerques de bases de dades vectorials poden perdre dades clau necessàries per respondre la pregunta d'un usuari. Una manera de mitigar-ho és fer una cerca de text tradicional, afegir aquests resultats als fragments de text enllaçats amb els vectors recuperats de la cerca vectorial i introduir el text híbrid combinat al model d'idioma per generar-lo.

## Reptes

Si la font de dades externa és gran, la recuperació pot ser lenta. L'ús de RAG no elimina completament els reptes generals als quals s'enfronten els LLM, incloses les al·lucinacions artificials.

## Referències

* ↑ «What Is Retrieval Augmented Generation (RAG)?» (en anglès). [Consulta: 4 febrer 2025].
* ↑ «Evolving Interactions | Looking Glass 2024» (en anglès). Thoughtworks. [Consulta: 12 desembre 2024].
* ↑ Merritt, Rick. «What Is Retrieval-Augmented Generation aka RAG?» (en anglès americà), 31-01-2025. [Consulta: 4 febrer 2025].
* ↑ «What is Retrieval-Augmented Generation (RAG)?» (en castellà). [Consulta: 4 febrer 2025].
* ↑ «What is RAG? - Retrieval-Augmented Generation AI Explained - AWS» (en anglès americà). [Consulta: 4 febrer 2025].
* ↑ «What is retrieval-augmented generation (RAG)?» (en anglès americà), 09-02-2021. [Consulta: 4 febrer 2025].