22 · Deixar-lo consultar la biblioteca: RAG
Un model de llenguatge sap moltes coses, però no sap les teves: el catàleg de la teva empresa, els contractes, el que es va decidir dimarts. I el que sap, ho sap tal com era quan el van entrenar. Aquest capítol va de la manera més estesa de resoldre-ho: deixar que el model busqui als teus documents abans de respondre. És l'arquitectura d'aplicació d'IA més desplegada del món, i la que més gent munta malament.
1. Un examen amb llibre obert#
Hi ha dues maneres d'aprovar un examen d'història: saber-se-la de memòria o tenir el llibre obert i saber trobar-hi les coses. La segona té avantatges clars. Si el llibre s'actualitza, tu també. Pots dir a quina pàgina has trobat cada resposta. I no cal que te l'aprenguis tota.
El RAG (retrieval-augmented generation, generació amb recuperació) és l'examen amb llibre obert. Quan arriba una pregunta, un programa busca entre els teus documents els trossos que més s'hi assemblen, els enganxa al prompt i el model respon amb el que hi ha. El context és l'escriptori del capítol 21: el RAG decideix quins fulls hi posa.
Consultar la biblioteca abans de respondre
1/5La pregunta
«Quant costa el QX-417?» El model no ho pot saber: el catàleg és de l'empresa, i s'ha actualitzat després que l'entrenessin.
Durant uns anys, la recepta era aquesta: buscar una vegada i respondre. Ara la manera habitual és agèntica: el model decideix si cal buscar, què, mira si el que ha trobat serveix i, si no, torna a buscar amb una pregunta millor. Al camí matemàtic es veu on guanya: en les preguntes que necessiten dos documents, com «on té la seu l'empresa que fabrica el QX-417?», que una sola cerca rarament porta junts.
Però abans de córrer a fer-ho agèntic, una advertència del camí matemàtic: la majoria de sistemes RAG dolents ho són per coses bàsiques, per com es guarden els documents i com es busquen, no per falta de sofisticació. En una de les configuracions mesurades, 60 dels 124 errors venen de com s'han tallat els documents, abans que el model llegeixi res.
2. Tallar els llibres a trossos#
Un document sencer no cap a l'escriptori, o hi cap però l'omple de soroll. Per això, quan es guarden els documents, es tallen en trossos (chunks) i el que es busca són trossos. On es talla és la decisió més infravalorada de tot el sistema.
La manera més simple és tallar cada tants centenars de paraules. La que funciona millor per a documentació i codi és tallar seguint l'estructura: per capítols, seccions o funcions. Però totes dues tenen el mateix problema.
Un tros que no diu de qui parla
Mesurat al camí matemàtic sobre un catàleg d’empreses inventat, amb la cerca que combina paraules i significat i cinc trossos per pregunta.
Un tros tallat sol perd el document que el contenia. «El seu preu és de 34 euros» és una frase perfecta dins de la fitxa del QX-417 i una frase òrfena fora. Una pregunta pel codi no hi té cap paraula en comú, i si el tros arribés al model, no sabria de qui és el preu. El remei es diu contextual retrieval (recuperació amb context): quan es guarda cada tros, un model hi escriu al davant una frase que el situa. Al camí matemàtic, les preguntes per codi passen de trobar el tros bo cap vegada a trobar-lo el 83 % de les vegades.
L'altre problema és geomètric: el tall pot caure enmig de la resposta.
On cau el tall
La resposta queda partida entre dos trossos. Amb aquest solapament, una resposta de cinc paraules a qualsevol lloc del document queda partida el 33 % de les vegades.
Trossos de 12 paraules per poder-los veure; als sistemes de debò solen fer de 300 a 800 tokens, amb un solapament del 10 al 20 %.
També es poden indexar trossos petits i, quan se'n troba un, passar al model el tros gran que el conté; o tallar on el text canvia de tema. Totes són maneres de buscar un equilibri entre trossos prou petits per ser precisos i prou grans per tenir sentit.
I a cada tros s'hi guarden etiquetes, que tècnicament se'n diuen metadades (metadata): la data, la font, l'autor, la versió, qui el pot veure. Són les que permeten filtrar, mostrar cites útils i, sobretot, controlar qui veu què. ⚠️ El control d'accés s'ha d'aplicar al filtre de la cerca, abans que el document arribi al model: si un document intern arriba al context, confiar que el model no el citarà és confiar en un model que, com ha mesurat el capítol 21, no separa de manera fiable les ordres del que llegeix. El camí matemàtic ho diu sense embuts: sense metadades no tens un sistema, tens una demo.
3. Dues maneres de buscar#
Hi ha dues maneres de buscar un tros, i són tan diferents com l'índex alfabètic del final d'un llibre i un bibliotecari que entén què vols dir.
La primera busca per paraules: puntua cada tros segons quantes paraules de la pregunta conté, donant més pes a les paraules rares. La més coneguda es diu BM25, i és la del capítol 8. La segona busca per significat: converteix la pregunta i cada tros en un punt d'un mapa on la distància vol dir semblança (els embeddings del mateix capítol 8) i agafa els trossos més propers a la pregunta.
Buscar per paraules o per significat
«Quant costa el QX-417?» La fitxa diu «QX-417», una paraula que només surt a tres documents.
Per paraules, «QX-417» és rara i per tant valuosa: la troba sempre. Per significat, el codi no vol dir res; al mapa no hi ha cap lloc per a ell.
Preguntes d'aquest tipus que troben la resposta entre els cinc primers trossos, mesurat al camí matemàtic sobre un catàleg inventat.
Cadascuna falla on l'altra encerta. La de paraules troba els codis, els noms propis rars i les cites literals, i no sap que «drons» i «multicòpters» són la mateixa cosa. La de significat entén les paràfrasis i no veu res en un codi que no ha vist mai.
Buscar per significat entre milions de trossos té un problema pràctic: no es pot comparar la pregunta amb tots. Es fa servir una cerca aproximada.
Buscar només als prestatges més propers
Punts inventats per veure-ho; els cercles marquen els cinc veïns més propers de debò, en verd si es troben i en vermell si es perden. Al catàleg del camí matemàtic, mirant una part dels prestatges es fan 88 comparacions en comptes de 594 i es retroben el 74 % dels veïns. Perdre'n de llunyans gairebé no es nota a la resposta; perdre'n de propers, sí.
Hi ha diversos sistemes per fer-ho, amb noms com HNSW o IVF, i tots tenen el mateix botó: quina part de l'índex es mira a cada pregunta. Mirar-ne més és més lent i més precís; el punt bo es tria mirant les preguntes pròpies.
Com que les dues cerques fallen en coses diferents, el consell és fer-les servir totes dues i ajuntar-ne les llistes. La manera estàndard d'ajuntar-les mira només el lloc que ocupa cada tros a cada llista, perquè les puntuacions de les dues no es poden comparar. Se'n diu RRF (reciprocal rank fusion, fusió per posicions), i té un paràmetre, que s'anomena k, que decideix quant val ser el primer d'una llista comparat amb sortir a totes dues.
Ajuntar dues llistes pel lloc que hi ocupa cada tros
Al catàleg del camí matemàtic: la resposta entre els cinc primers
El 60 ve d'un article del 2009 pensat per a llistes de mil documents. Aquí, amb 594 trossos i cinc llocs al context, ajuntar amb k = 60 queda per sota de buscar només per paraules. El k, com tot, s'ha de mesurar.
Aquí hi ha un dels resultats del camí matemàtic que val la pena recordar. Ajuntar les dues cerques és la línia base que tothom recomana, i amb el valor de sempre del paràmetre, k = 60, al catàleg de proves queda per sota de buscar només per paraules: 50,7 % contra 54,6 %. Amb un valor que dona més pes als primers llocs, k = 2, la supera de molt (66,1 %). La frase que circula, «gairebé cap sistema que només busca per significat supera l'híbrid», aquí es compleix; contra la cerca per paraules no és tan clar. La conclusió no és que ajuntar no serveixi, sinó que els valors per defecte també s'han de mesurar.
L'últim pas és un segon filtre (reranker): un model que llegeix la pregunta i cada tros junts i en jutja la rellevància. És massa lent per passar-lo per tot l'arxiu, però no per als vint primers de la cerca. Al catàleg de proves, el tros que queda primer és el bo el 25 % de les vegades sense segon filtre i el 65 % amb. Costa uns centenars de mil·lisegons de més per pregunta, i només pot reordenar el que la cerca li ha donat.
4. Preguntar bé#
No només es treballen els documents; la pregunta també. Si en una conversa algú diu «i el segon, quant costa?», aquesta frase no es pot buscar: no diu de quin producte parla. Moltes millores consisteixen a preparar la pregunta abans de buscar.
Treballar la pregunta abans de buscar
1/5Reescriure la pregunta
«I el segon?» no es pot buscar: no diu de què parla. Abans de buscar, un model la reescriu amb el que s'ha dit abans de la conversa, i ara és una pregunta com qualsevol altra.
Reescriure-la amb el que s'ha dit abans és imprescindible en una conversa de diversos torns. Fer-ne diverses versions i ajuntar els resultats ajuda quan el document fa servir unes altres paraules. Buscar una resposta inventada (HyDE) funciona, sorprenentment, quan la pregunta i el document no comparteixen vocabulari, però només si la resposta inventada té la forma dels documents que es busquen: al camí matemàtic, escrita com un perfil d'empresa acosta el perfil bo, i escrita com una guia no hi ajuda o fins i tot empitjora. Partir una pregunta doble en dues de simples. I triar on buscar, o decidir que no cal buscar enlloc.
5. Preguntes que cap tros respon#
Totes les cerques que hem vist busquen trossos que s'assemblen a la pregunta. Hi ha preguntes on això no serveix de res: «quins són els temes principals d'aquests deu mil documents?», «quins sectors hi ha al catàleg?». La resposta no és en cap tros; és repartida per tots.
Una pregunta que cap tros respon sol
Esquema amb cinc comunitats. Al catàleg del camí matemàtic n'hi ha 34: els trossos més semblants porten el 0 % de la resposta, amb 5 o amb 20, i els resums el 100 %. Però preparar-ho ha costat 594 crides a un model per llegir els trossos i 34 per escriure els resums, i es paga encara que ningú no faci mai una pregunta global.
GraphRAG ho resol preparant la feina per endavant: un model llegeix tots els trossos, n'extreu les entitats i les relacions, les agrupa en comunitats i escriu un resum de cada comunitat. Per a les preguntes globals funciona, i és car: la preparació es paga sencera encara que ningú no faci mai aquesta mena de pregunta, i s'ha de refer quan els documents canvien. Hi ha versions més lleugeres que intenten abaratir-ho.
Hi ha tres patrons més que val la pena conèixer. El RAG agèntic, de la secció 1, on el model té la cerca com una eina i la fa servir en bucle; algunes variants decideixen quan cal buscar i jutgen si el que han trobat és rellevant. El RAG multimodal: per a PDFs plens de taules i gràfics, en comptes d'intentar treure'n el text, es guarden les imatges de les pàgines i es busca amb un model que hi sap veure (capítol 24). I la memòria: el mateix mecanisme aplicat a les converses passades de l'usuari, amb problemes propis com què recordar i quan oblidar (capítol 23).
6. Avaluar per parts#
Un sistema RAG té dues peces que poden fallar: el cercador, que ha de portar la resposta a l'escriptori, i el redactor, el model que ha de llegir-la i respondre. Si només mires un número, l'encert de la resposta final, no saps quina de les dues falla.
Dos números en comptes d'un
Al catàleg del camí matemàtic, amb cinc trossos al context i un redactor que diu «no ho sé» quan no troba res. Amb el segon filtre, el primer número puja i l'encert del sistema sencer el segueix. Amb un model de debò com a redactor, el segon número no seria del 100 %, i caldria mirar també si les cites apunten al que diuen.
Del cercador, el número més important és quantes vegades la resposta arriba entre els trossos que es passen al model (recall): si no hi és, res més importa. N'hi ha d'altres, com quants dels trossos són bons o a quina altura surt el primer bo. Per mesurar-ho cal una llista de preguntes amb els documents que les responen; es pot fer generar a un model a partir dels teus documents i revisar-ne una mostra.
Del redactor, amb el context donat, es mira si la resposta se segueix del que hi ha als trossos o s'ha inventat res (faithfulness, fidelitat), si respon el que es pregunta, i si les cites apunten al que diuen. I del sistema sencer, l'encert en preguntes reals, si diu «no ho sé» quan no hi ha informació, quant triga i quant costa. Hi ha eines que ho automatitzen, però el camí matemàtic recomana sobretot fer-te el teu propi joc de preguntes: les mesures automàtiques et donen direcció; mirar-te les respostes a mà et dona la veritat.
7. Els errors de sempre#
La majoria de sistemes RAG que van malament hi van pels mateixos motius, i quasi cap té a veure amb el model.
On es trenca la cadena
Només cerca per significat. Falla amb codis, noms propis i termes exactes: al camí matemàtic, el 28 % de les preguntes per codi contra el 100 % buscant per paraules.
N'hi ha un de traïdor perquè no es veu: barrejar dos models d'embeddings. Si guardes els documents amb un mapa i fas les preguntes amb un altre, les distàncies entre punts de mapes diferents no volen dir res, encara que cada mapa per separat sigui perfecte. Al camí matemàtic, amb el mateix mapa simplement girat, la cerca per significat s'enfonsa.
8. Biblioteca, llibre sencer o estudiar-s'ho#
El RAG no és l'única manera de donar coneixement a un model. Ara que els contextos són llargs, es pot posar el document sencer a l'escriptori. I es pot ajustar el model amb exemples (fine-tuning, capítol 20), que vol dir canviar-li els pesos perquè ho sàpiga de memòria.
Biblioteca, llibre sencer o estudiar-s'ho
Un fet nou hi és a la propera pregunta: només cal afegir el document. Un model ajustat l’hauria de tornar a estudiar.
La regla general: el que canvia, el que és molt gran i el que s'ha de citar, RAG. El que s'ha de llegir sencer, context llarg, amb la memòria cau del capítol 21 perquè surti barat. La manera de respondre, el format i l'estil, i fer un model més barat i ràpid, ajustar-lo. I per a un domini tancat i profund, mesurar: sovint guanya RAG amb un ajust lleuger.
Què t'has d'endur#
D'una demo a un sistema
- El RAG és un examen amb llibre obert: el model busca als teus documents abans de respondre, i pot citar d'on ha tret cada cosa.
- La majoria de problemes són abans del model: com es tallen els documents, quines etiquetes porten i com es busca. Un tros que no diu de què parla no es troba.
- Buscar per paraules i buscar per significat fallen en coses diferents; s'han de combinar, i fins i tot la manera estàndard de combinar-les s'ha de mesurar, perquè amb els valors de sempre pot quedar per sota d'una de les dues.
- Hi ha preguntes que cap tros respon sol; per a aquestes cal preparar resums de tot el conjunt, i això és car.
- Mesura per separat si la resposta arriba al context i si el model la fa servir bé: si el problema és la cerca, millorar el prompt no servirà de res.
- El que canvia i s'ha de citar, RAG; el que s'ha de llegir sencer, context llarg; la manera de respondre, ajustar el model.
Comprova que ho has entès#
0 de 3 resoltes
- El teu assistent de suport respon bé preguntes com «com puc tornar una comanda?», però falla sempre amb «què li passa a l'error E-4021?». Busca només per significat. Què li falta?
- Has tallat els manuals per seccions. La pregunta «quina garantia té la rentadora LV-80?» no troba res, tot i que la secció «Garantia» del manual de la LV-80 diu «té dos anys de garantia». Per què?
- El teu RAG encerta el 45 % de les preguntes. Mesures per separat i veus que la resposta arriba als trossos del context en el 47 % dels casos. Què hauries de millorar primer?