22 · RAG i recuperació
Idea central: un LLM sap molt però no sap el teu. RAG connecta el model amb coneixement extern, actualitzable i citable. És l'arquitectura d'aplicació d'IA més desplegada del món — i la que més gent implementa malament.
1. El pipeline bàsic (i per què ja no n'hi ha prou)# sense fórmules
Consulta → [ Retriever ] → k documents → [ Prompt ] → LLM → Resposta + cites
Aquest patró "recupera un cop i genera" era l'estàndard de 2023. El 2026 el patró per defecte és agèntic: el model decideix si cal buscar, què buscar, reformula si els resultats són dolents i itera fins a tenir prou evidència.
Però abans de córrer cap a l'agèntic: la majoria de sistemes RAG dolents ho són per problemes bàsics d'ingesta i recuperació, no per falta de sofisticació.
El pipeline: recuperar un cop, o buscar fins a trobar-ho
Un RAG sencer sobre 250 documents inventats. Quantes preguntes respon recuperant un cop, quantes més si torna a buscar, i quan s’equivoca, de qui és la culpa?
Indexant el corpus inventat (entrenant l’encoder dens): 0 %. Es fa una sola vegada per pàgina, i triga al voltant d’un segon.
- un salt, un cop
- —
- un salt, en bucle
- —
- dos salts, un cop
- —
- dos salts, en bucle
- —
- crides per pregunta
- —
- errors abans del lector
- —
2. Ingesta: chunking i metadades# sense fórmules
Chunking és la decisió més infravalorada del sistema.
| Estratègia | Descripció | Quan |
|---|---|---|
| Longitud fixa + solapament | 300-800 tokens, 10-20% overlap | baseline raonable |
| Per estructura | seguint capçaleres, seccions, funcions | documentació i codi: la millor |
| Semàntic | talla on canvia el tema (detecció per embeddings) | text continu sense estructura |
| Contextual retrieval | afegir a cada chunk un resum del document que el conté, generat per un LLM | redueix molt les fallades de recuperació; cost únic a la ingesta |
| Jeràrquic / parent-child | indexa chunks petits, recupera el pare gran | equilibri precisió/context |
Metadades: data, font, autor, permisos, versió, secció. Són el que et permet filtrar (pre-filtering > post-filtering), implementar control d'accés i mostrar cites útils. Sense metadades no tens un sistema, tens una demo.
Tallar els documents: la geometria, el context i el filtre
On talles un document decideix què es pot trobar. Quan queda partida una resposta, què perd un fragment que no diu de què parla, i què passa si el filtre de permisos arriba tard?
- forma tancada
- ○mesurat, 20.000 tokens
- ■mesurat, 60 tokens
Indexant el corpus inventat (entrenant l’encoder dens): 0 %. Es fa una sola vegada per pàgina, i triga al voltant d’un segon.
- partida, fórmula
- 12,5 %
- partida, 20.000 tokens
- 12,5 %
- partida, 60 tokens
- 9,1 %
- recall identificadors, contextual
- —
- consultes sense cap fragment
- —
- fragments interns al context
- —
Els fragments comencen cada c − o = 40 tokens, i una resposta que comença a la posició t cap sencera al fragment que comença just abans si t mod (c − o) ≤ c − a. Com que la posició és uniforme, P(partida) = max(0, (a − o − 1)/(c − o)). Amb un solapament de 5 o més no es partiria mai, a canvi d’indexar cada token 1,14 vegades. En un document de 60 tokens l’últim fragment és més curt i les vores canvien els comptes: la fórmula és el límit dels documents llargs.
3. Recuperació: usa sempre híbrid# sense fórmules
Dens (embeddings)
Codifiques consulta i documents en vectors i busques veïns pròxims. Captura significat, sinònims, paràfrasis. Falla amb identificadors exactes, noms propis rars i termes fora de distribució.
Índexs ANN: HNSW (graf navegable, ràpid i precís, molta memòria), IVF-PQ (quantització, escalable a milers de milions), ScaNN, DiskANN. Paràmetres clau: ef_search/nprobe controlen el compromís recall/latència.
Veïns aproximats: IVF i nprobe
A mil milions de vectors no es pot comparar la consulta amb tots. Quants veïns de debò es perden mirant només algunes llistes, i quantes similituds s’estalvien?
Indexant el corpus inventat (entrenant l’encoder dens): 0 %. Es fa una sola vegada per pàgina, i triga al voltant d’un segon.
- veïns retrobats (de 10)
- —
- similituds per consulta
- —
- de la cerca exacta
- —
- evidència a 5
- —
Espars (BM25)
Coincidència lèxica exacta. Imbatible per a codis, SKUs, noms, cites literals i consultes amb termes rars.
Híbrid + RRF
Combina els dos rànquings amb Reciprocal Rank Fusion:
Aquesta és, empíricament, la línia base que has de batre. Gairebé cap sistema només-dens la supera. Però el k s'ha de mesurar: al corpus d'aquest tema, amb k = 60 l'híbrid queda per sota de BM25 sol, i amb k = 2 el supera (ho veuràs al widget de sota i a l'exercici de la secció 9).
Reranking
Un cross-encoder llegeix (consulta, document) junts i els puntua. Recupera 50-100 candidats amb el mètode híbrid i reordena'n els 5-10 millors. Guany típic molt gran en precisió; cost: latència addicional (100-300 ms) i una crida més.
Dens, espars i RRF, i el reranker
BM25 troba codis, el dens troba paràfrasis. Quant guanya l’híbrid, quin paper hi fa el k de l’RRF, i què afegeix un reranker que llegeix pregunta i fragment junts?
Indexant el corpus inventat (entrenant l’encoder dens): 0 %. Es fa una sola vegada per pàgina, i triga al voltant d’un segon.
- BM25, recall@5
- —
- dens, recall@5
- —
- híbrid, recall@5
- —
- amb reranker, recall@5
- —
- el primer és el bo
- —
- puntuacions per consulta
- —
4. Millores del costat de la consulta# sense fórmules
- Reescriptura de consulta: convertir la pregunta conversacional en una consulta de cerca autònoma (imprescindible en xat multitorn: "i el segon?" no és cercable).
- Expansió i multi-query: generar diverses variants i unir resultats.
- HyDE: generar una resposta hipotètica i buscar-ne l'embedding (funciona sorprenentment bé quan la pregunta i el document no comparteixen vocabulari).
- Descomposició: trencar preguntes multi-part en subconsultes.
- Enrutament: decidir quina font (o quin índex) consultar, o si no cal consultar-ne cap.
La consulta també es treballa
«I el segon?» no es pot cercar, i una pregunta que no comparteix cap paraula amb el document tampoc no el troba. Quant recall recupera cada tècnica del text, i on?
Indexant el corpus inventat (entrenant l’encoder dens): 0 %. Es fa una sola vegada per pàgina, i triga al voltant d’un segon.
- reescriptura
- —
- HyDE
- —
- multi-query
- —
- descomposició
- —
- enrutament
- —
5. Patrons avançats# sense fórmules
GraphRAG: construeix un graf d'entitats i relacions a partir del corpus, amb resums jeràrquics de comunitats. Brilla en preguntes globals ("quins són els temes principals de tot aquest corpus?") que la recuperació per similitud no pot respondre. Cost d'indexació alt. Existeixen variants "lleugeres" (LightRAG, i enfocaments híbrids que alineen camins del graf amb recuperació densa).
RAG agèntic: el model té una eina de cerca i la crida en bucle: buscar → avaluar → refinar → buscar més → respondre. Patrons com Self-RAG (el model decideix quan recuperar i critica la rellevància) i FLARE (recupera quan la confiança baixa durant la generació).
RAG multimodal: indexar imatges de pàgines directament amb models de visió (ColPali i similars) evita tot el pipeline fràgil d'OCR i extracció de taules. Per a PDFs complexos, sovint és millor.
Memòria: RAG sobre l'historial de converses de l'usuari — amb els seus propis problemes (què recordar, quan oblidar, com resoldre contradiccions). Vegeu 23.
Preguntes globals: el que el top-k no pot veure
«Quins sectors hi ha?» no té cap document que la respongui. Quina part de la resposta arriba amb els k fragments més semblants, quina amb els resums de comunitat, i quant costa fer-los?
Indexant el corpus inventat (entrenant l’encoder dens): 0 %. Es fa una sola vegada per pàgina, i triga al voltant d’un segon.
- top-5: recall de la resposta
- —
- resums: recall de la resposta
- —
- comunitats
- —
- crides d’indexació
- —
- tokens a la consulta
- —
6. Avaluació de RAG (no t'ho saltis)# sense fórmules
Avalua els dos components per separat i el sistema sencer:
Retriever: Recall@k (el més important: si el document no hi és, res més importa), Precision@k, MRR, nDCG. Necessites un conjunt de (pregunta → documents rellevants) etiquetat; pots generar-lo sintèticament a partir dels teus documents i revisar-ne una mostra.
Generador, donat el context:
- Faithfulness / groundedness: la resposta se segueix del context? (mesurable amb un jutge LLM o amb NLI)
- Answer relevance: respon la pregunta?
- Correcció de cites: les cites apunten al que diuen?
Extrem a extrem: exactitud sobre preguntes reals, taxa d'abstenció correcta (quan no hi ha informació, diu que no ho sap?), latència i cost.
Eines: RAGAS, TruLens, o (recomanat) el teu propi arnès d'avaluació sobre les teves preguntes reals. Les mètriques automàtiques et donen direcció; la revisió manual et dona la veritat.
Avaluar el RAG: el recuperador, el generador i tots dos
Un RAG que encerta el 60 % pot tenir un recuperador dolent o un generador dolent. Què diu cada mètrica, i com se separen les dues coses?
Indexant el corpus inventat (entrenant l’encoder dens): 0 %. Es fa una sola vegada per pàgina, i triga al voltant d’un segon.
- recall@5
- —
- MRR
- —
- nDCG@5
- —
- fidelitat
- —
- cites correctes
- —
- encert de punta a punta
- —
El rànquing és d3, d1, d7, d2, d5, i els rellevants, d1 (grau 2: porta la resposta), d2, d5 i d9 (grau 1: parlen del mateix). Recall@5: dels quatre rellevants, quants n’han sortit entre els 5 primers. Precisió@5: dels 5 primers, quants són rellevants. MRR: 1 / la posició del primer rellevant, d1 a la segona, 1/2. nDCG: cada rellevant suma (2^grau − 1)/log₂(posició + 1), i es divideix per l’ordre ideal: DCG = 2,7103, IDCG = 4,5616. El grau 2 val tres vegades el grau 1, i per això l’nDCG castiga que d1 no sigui el primer.
7. Errors comuns# sense fórmules
| Error | Conseqüència |
|---|---|
| Només cerca densa | falles amb codis, noms i termes exactes |
| Chunks massa petits | perds context; massa grans → soroll i dilució |
| Sense reranker | els 5 primers no són els millors 5 |
| Sense metadades ni filtres | no pots filtrar per permisos, data ni font |
| Sense avaluar el retriever | optimitzes el prompt quan el problema és la cerca |
| Índex obsolet | respostes desactualitzades amb aparença de certesa |
| No gestionar "no ho sé" | al·lucinacions amb cites inventades |
| Barrejar models d'embedding | espais incompatibles al mateix índex |
Els errors de sempre, un per un
Un sistema que funciona i un interruptor per a cada error de la taula del text. Quina mètrica trenca cada un, i quant?
Indexant el corpus inventat (entrenant l’encoder dens): 0 %. Es fa una sola vegada per pàgina, i triga al voltant d’un segon.
Versió vigent i permisos d’un empleat.
Construït abans d’actualitzar els preus.
Entrenat amb una altra llavor; les consultes, amb el d’abans.
- encert, sistema bo
- —
- encert, ara
- …
- errors activats
- 0
- mètriques trencades
- 0
8. RAG vs context llarg vs fine-tuning# sense fórmules
| Necessites... | Usa |
|---|---|
| Fets que canvien | RAG |
| Corpus gegant | RAG |
| Atribució i cites | RAG |
| Raonar sobre un document sencer | context llarg (amb prompt caching) |
| Format, estil, comportament | fine-tuning |
| Reduir cost i latència | fine-tuning (destil·lació) |
| Coneixement profund d'un domini tancat | mesura tots dos; sovint RAG + fine-tuning lleuger |
RAG, context llarg o fine-tuning
Tres maneres de donar coneixement a un model. Quant costa cada consulta, quant triga un fet nou a ser-hi, i un model, què en treu dels pesos i què del context?
RAG
0,0107 dòlars
per consulta · 2.000 tokens recuperats
Context llarg
0,0497 dòlars
per consulta · 150.000 tokens, amb cache
Fine-tuning
0,0337 dòlars
per consulta · un fet nou: 30 dies
- RAG, per consulta
- 0,0107 dòlars
- context, sense cache
- 0,45 dòlars
- context, amb cache
- 0,0497 dòlars
- fine-tuning
- 0,0337 dòlars
- el corpus hi cap?
- sí
RAG paga (k·fragment + pregunta) = 2.050 tokens d’entrada; el context llarg, els 150.000 del corpus a cada consulta, o al 10 % si es llegeixen del cache. El fine-tuning gairebé no paga entrada, però l’entrenament de 2.000 dòlars s’ha de repartir entre les consultes d’un cicle de 30 dies: 0,0333 dòlars per consulta. El corpus cap a la finestra de 200.000 tokens. La corba del cost contra el nombre de consultes, i on es creuen el context llarg i el RAG, és al widget «context contra RAG» del fitxer 14; el punt d’equilibri d’un model propi ajustat, a «cal fer fine-tuning?» del 20.
| opció | per consulta | al mes | un fet nou, en | pot citar? |
|---|---|---|---|---|
| RAG | 0,0107 dòlars | 639 dòlars | 1 h | sí: el fragment d’on surt |
| context llarg, sense cache | 0,45 dòlars | 27.279 dòlars | la propera consulta | en part: el document hi és sencer |
| context llarg, amb cache | 0,0497 dòlars | 2.979 dòlars | la propera consulta | en part: el document hi és sencer |
| fine-tuning | 0,0337 dòlars | 2.023 dòlars | 30 dies | no: el fet és als pesos |
El model base del 18 (29.472 paràmetres) ha vist 120 fets inventats al preentrenament, «poble és lila.». Es mesura amb la probabilitat exacta dels vuit colors després de «poble és »: sense context, amb el fet bo davant, i amb un fet que el contradiu. I amb 120 paraules del corpus que no tenen cap fet, amb el fet al context. El model del 21, meta-entrenat per llegir una taula del context: 100 taules noves amb 4 exemples, i una consulta que hi és i una que no.
És la condició que la taula del text dona per feta: RAG i context llarg només funcionen amb un model que faci servir el context, i això també s’aprèn. Un fet que el model sap als pesos no es pot corregir posant-li el bo al davant si no l’ha après a llegir; i un fet que no sap, el fine-tuning no l’hi posa (el fitxer 18), mentre que el context sí, si el model llegeix.
Descarregant els pesos dels dos models…
9. Comprova que ho has entès#
0 de 6 resoltes
- Per què BM25 continua sent necessari el 2026?
- Què és RRF i per què funciona tan bé? Fes-ne el compte: un document és el primer del rànquing dens i el tercer del de BM25. Quina puntuació RRF té, amb k = 60?Marge acceptat: ± 5,00·10⁻⁴
- Explica el contextual retrieval i quin problema resol.
- Quines dues mètriques mesuraries per separat en un sistema RAG, i per què?
- Quan val la pena GraphRAG, i quan no?
- L'híbrid amb RRF és la línia base que s'ha de batre, però amb el k per defecte pot quedar per sota d'un dels dos recuperadors sols. Fes que el superi.
Objectiu:Al widget «Dens, espars i RRF», amb les preguntes d'un i de dos salts i el recall@5, tria el k de l'RRF i els candidats del reranker perquè l'híbrid superi BM25 i el dens sols.
Vés al widget ↑rrf = per defecte · candidats = per defecte
10. Recursos#
Lewis et al. (2020), Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (el paper original).
Anthropic (2024), Introducing Contextual Retrieval.
Microsoft Research, GraphRAG (paper i codi).
Asai et al. (2023), Self-RAG.
Documentació de RAGAS i de LlamaIndex/LangChain per a patrons d'implementació.