Kurz: Building and Evaluating Advanced RAG Applications
RAG pre pokročilých alebo reklama na truera?
Pokračujem v prieskume kurzov na deeplearning.ai a pretože RAG považujem za správny smer, tak sa rád niečo priučím. Po formálnej stránke je kurz rovnaký ako ten o ktorom som už písal. Amatérske video, jupyter notebook, ale to podstatné sú znalosti.
V úvode sa síce zdá, že to bude tak trochu reklama na TruEra, ale naštastie to tak úplne nie je. Kurz sa skladá z dvoch hodín videí, takže je relatívne krátky. Odporúčam ísť pomalšie. Niektoré nápady sa zdajú jednoduché, ale je vhodné si ich zažiť. Kurz predstavuje dve techniky pre fázu R (z RAG): Sentence-Window a Auto-Merging. Ale za rovnako dôležité považujem praktickú ukážku toho ako robiť vyhodnotenie kvality (cez knižnicu od TruEra).
Auto-Merging rieši problém s konzistenciou získaných častí textov. A to tým, že chunky sú organizované hierarchicky a keď nám vyhovuje viacero menších častí (obvykle nie všetky), tak do promptu pridáme celý “veľký” chunk. Vďaka tomu, máme nielen relevantné chunky, ale aj tie “medzi” a naviac v správnom poradí. Toto všetko je implementované v LlamaIndex a tak naša práca je len o nastavovaní parametrov, hĺbke hierarchie, počte potomkov, …
Sentence-Window rieši situáciu kedy má chunk dĺžku jednej vety a tú obohatíme o pár viet pred/po. Vďaka čomu získame rozumne veľký kontext. Do istej miery ide o doplňujúcu stratégiu k Auto-Merging, kde väčší kontext získavame len pri “dlhšej” zhode.
To, kde vidím hlavný prínos toho kurzu je ale inde. Vyhodnotenie. Knižnica TruLens umožňuje jednoduché a prehľadné vyhodnocovanie (vrátane ceny za test, dĺžku promptu, …). Metriky, ktoré sa riešia sú:
Answer Relevance: Je výsledná odpoveď užitočná?
Context Relevance: Ako dobré sú získané chunky z Retrieval
Groundness: Na koľko sú odpovede z Generate založené na získaných dokumentoch (tj. obrana pred halucinovaním).
Toto všetko sa vyhodnocuje cez feedback functions, čo je abstrakcia pre vyhodnocovanie nad vstupom, výstupom a priebežnými výsledkami. Vďaka tým priebežným výsledkom dokážeme, v ideálnom prípade, rozlišovať kedy nastala chyba v systéme. Táto funkcia sa dá implementovať pravidlami, LLM alebo dokonca aj anotátorom. Jej výsledkom je vždy skóre <0,1>.
Kurz je jednoznačne pre mierne pokročilých a odporúčam ho primárne kvôli tomu dôrazu na vyhodnocovanie. Ten zbytok mohol byť aj kratší :)