In de voorgaande hoofdstukken hebben we ons gericht op het evalueren van de prestaties van LLM's en LLMBA's (Large Language Model-based Applications), waarbij we het belang van de resultaten die door deze systemen worden gegenereerd benadrukten. We hebben ons specifiek gericht op de evaluatie van tekstuele antwoorden, bijvoorbeeld de samenvatting van de 10-K documenten. In dit hoofdstuk verschuiven we de focus van de gegenereerde resultaten naar de invoergegevens zelf, meer specifiek de niet-gestructureerde tekstgegevens die aan de LLM's worden verstrekt. Dit is van groot belang omdat LLM's vaak werken met gegevens die ze nog nooit eerder hebben gezien, en de manier waarop deze gegevens worden voorbereid, kan de uiteindelijke prestaties van het model sterk beïnvloeden.
De eerste stap in het effectief gebruiken van niet-gestructureerde gegevens is de voorbereiding van de documenten. Dit houdt in dat we documenten moeten parsen en opdelen (chunking) in een gestandaardiseerd formaat dat geschikt is voor verwerking door LLM's. Deze documenten, zoals het voorbeeld van de 10-K, kunnen lang en complex zijn. Zonder de juiste voorverwerking kan een LLM moeite hebben om relevante informatie uit deze documenten te extraheren. Daarom is het essentieel om tools te gebruiken die helpen bij het omzetten van verschillende gegevensformaten naar formaten die LLM's effectief kunnen verwerken.
Bijvoorbeeld, PyPDF2 en Docling zijn open source tools die helpen bij het parseren van documenten naar een formaat dat gemakkelijker door LLM's kan worden gelezen. Deze tools kunnen teksten omzetten van PDF-bestanden of andere formaten naar platte tekst, waardoor ze geschikt zijn voor verdere verwerking. Het gebruik van deze tools bespaart veel tijd, omdat ze de technische complexiteit van het parseren wegnemen, zodat ontwikkelaars zich kunnen concentreren op de kernlogica van hun applicaties. Na het parsen van de gegevens komt het proces van chunking, waarbij grote documenten worden opgedeeld in kleinere, beheersbare stukken. Dit zorgt ervoor dat LLM's gemakkelijker kunnen werken met de gegevens, en helpt om de prestatie van het model te verbeteren.
Het chunken van gegevens is een belangrijke stap, maar het is niet altijd eenvoudig. Er zijn verschillende strategieën voor het chunken van tekst, zoals het op basis van paragrafen of zinnen, maar deze methoden zijn vaak niet optimaal. Een meer geavanceerde techniek is "Chunking with Contextual Linking", waarbij niet alleen de tekst wordt opgedeeld, maar ook de context tussen de stukken wordt behouden. Deze methode zorgt ervoor dat het model niet alleen losse stukjes tekst krijgt, maar ook het verband tussen die stukjes begrijpt. Dit verbetert de algehele nauwkeurigheid van het model, vooral wanneer het wordt geconfronteerd met complexe of gedetailleerde gegevens.
Naast de voorverwerking van de gegevens speelt "Retrieval Augmented Generation" (RAG) een belangrijke rol in het verbeteren van de prestaties van LLM's. RAG is een populaire benadering voor het verkrijgen van relevante informatie uit een grote hoeveelheid gegevens om de antwoorden van een LLM te verbeteren. In dit proces worden eerst vector embeddings van de stukjes gegevens gemaakt. Vervolgens wordt er een semantische zoekopdracht uitgevoerd over deze stukjes om de meest relevante te vinden. Deze relevante stukken worden daarna aan het LLM gevoed, dat vervolgens een antwoord genereert op basis van de opgehaalde informatie. Deze aanpak maakt het mogelijk om antwoorden te genereren die zijn verrijkt met externe, niet-gestructureerde gegevens die het LLM zelf niet direct zou hebben gekend.
Er is echter veel debat over de noodzaak van RAG in de toekomst, vooral gezien de opkomst van LLM's met lange contextvensters, zoals de recentelijk ontwikkelde lange-context LLM's (LCM's). Deze modellen hebben de capaciteit om grotere hoeveelheden tekst te verwerken, wat mogelijk de behoefte aan complexe zoek- en opzoeksystemen vermindert. Toch blijven er uitdagingen bestaan, zoals de gevoeligheid van LLM's voor invoerformaat en structuur. Het correct voorbereiden van gegevens blijft dus cruciaal voor het verkrijgen van betrouwbare en accurate resultaten.
Naast de voorverwerking en RAG zijn er andere technieken die de effectiviteit van LLM's kunnen verbeteren. Bijvoorbeeld, het gebruik van "prompt caching" en het verifiëren van de gegenereerde antwoorden via citaten met behulp van technieken zoals "Corpus-in-Context" (CIC) prompting. Deze methoden helpen bij het verhogen van de betrouwbaarheid van de resultaten door de context en de bron van de informatie duidelijk te documenteren, wat cruciaal is voor toepassingen in de echte wereld, waar transparantie en nauwkeurigheid van groot belang zijn.
Hoewel er nog veel uitdagingen zijn op het gebied van het werken met niet-gestructureerde gegevens, biedt de combinatie van goede voorverwerking, chunking, RAG en de juiste tools een solide basis voor het optimaliseren van LLM-prestaties. In toekomstige ontwikkelingen zal het mogelijk zijn om hele documenten van honderden pagina's aan LLM's door te geven en te vertrouwen op hun vermogen om de relevantste secties zelf te identificeren. Tot die tijd blijft een zorgvuldige voorbereiding van de gegevens en het gebruik van geavanceerde retrieval-technieken essentieel voor het succes van LLMBAs in de praktijk.
Hoe Werkt de Niet-Deterministische Aard van LLM's bij Tekstgeneratie?
De kracht van grote taalmodellen (LLM's) ligt in hun vermogen om tekst te genereren die natuurlijk en contextueel relevant is. Het model doet dit door het volgende token te voorspellen op basis van de eerder gegenereerde tekst, waarbij elke voorspelling wordt gemaakt vanuit een kansverdeling. Dit proces zorgt ervoor dat LLM's niet altijd de meest waarschijnlijke uitkomst kiezen, maar eerder monsters nemen uit verschillende mogelijke opties. In de context van tekstgeneratie heeft deze werkwijze verregaande gevolgen voor de voorspelbaarheid en het gedrag van het model.
Een belangrijk concept bij de werking van LLM's is de 'logit' – de rauwe score die voor elk token wordt berekend om te bepalen welke het waarschijnlijkst is. Dit wordt vervolgens omgezet in een kansverdeling via de softmax-functie. Dit betekent dat zelfs als een bepaald token de hoogste kans heeft, het model in staat is om andere tokens te selecteren, afhankelijk van de gebruikte samplingstrategie (bijvoorbeeld greedy, top-k, etc.). Het is deze keuzevrijheid die LLM's in staat stelt om variatie in hun output te tonen, wat zowel voordelen als uitdagingen met zich meebrengt.
Bij het genereren van tekst kan de temperatuurparameter een aanzienlijke invloed hebben op het resultaat. De temperatuur beïnvloedt de spreiding van de kansverdeling: bij een lage temperatuur (0.0) is het model geneigd om altijd de meest waarschijnlijke optie te kiezen, wat resulteert in consistente maar vaak saaie uitkomsten. Bij een temperatuur van 1.0 wordt de keuze wat variabeler, met meer creativiteit, maar ook een zekere mate van onvoorspelbaarheid. Bij hogere temperaturen (bijvoorbeeld 2.0) neemt de randomisatie aanzienlijk toe, wat kan leiden tot verwarrende of inconsistente reacties.
Dit niet-deterministische gedrag van LLM's maakt traditionele softwaretestmethoden vaak ontoereikend. Het testen van software draait vaak om het valideren van specifieke functies en de verwachte uitvoer in gecontroleerde omstandigheden. LLM's zijn echter veel flexibeler in hun output, waarbij ze naast de verwachte logica ook nieuwe, 'emergente' eigenschappen vertonen, zoals creativiteit en taalbegrip, die moeilijk te kwantificeren zijn. Dit verschuift de focus van traditionele testmethoden naar het ontwikkelen van nieuwe evaluatiekaders die zowel deterministische als niet-deterministische aspecten van de modellen kunnen omvatten.
Bijvoorbeeld, in een experiment waarbij een LLM wordt gebruikt om een korte executive summary van een 10-K rapport van Apple te genereren, wordt duidelijk hoe de temperatuurparameter het resultaat beïnvloedt. Bij een temperatuur van 0.0 is de output eenvoudig en voorspelbaar, maar mogelijk te rigide en repetitief. Bij een temperatuur van 1.0 ontstaan er meer variaties en toont de tekst een betere balans tussen coherentie en creativiteit. Bij een temperatuur van 2.0 kan de output echter verwarrend of zelfs incoherent zijn, wat de complexiteit van het evalueren van LLM-uitvoer benadrukt.
Een ander belangrijke overweging bij het gebruik van LLM's voor taken zoals tekstgeneratie is de beperkte hoeveelheid tokens die een model kan verwerken. In dit geval is de limiet voor het model gpt-3.5-turbo bijvoorbeeld 4.096 tokens, wat betekent dat bij het aanleveren van een tekst van 10.000 tekens er ruimte moet worden gelaten voor zowel de invoer als de verwachte uitvoer. Dit vereist een zorgvuldige selectie van het invoermateriaal en een bewustzijn van de beperkingen van het model.
Het gebruik van een LLM om een executive summary te genereren uit een document van duizenden woorden biedt inzichten in de effectiviteit en variabiliteit van de technologie. Terwijl het resultaat bij een lage temperatuur relatief voorspelbaar en feitelijk is, wordt het bij hogere temperaturen steeds moeilijker om consistentie en bruikbaarheid te behouden. Het is dus belangrijk voor gebruikers van LLM's om zich bewust te zijn van de invloed van deze parameters op de uiteindelijke output, vooral wanneer nauwkeurigheid en samenhang cruciaal zijn.
Wat verder belangrijk is om te begrijpen is dat de evaluatie van LLM's niet op dezelfde manier kan plaatsvinden als traditionele softwaretests. Waar bij softwaretests meestal met een vooraf gedefinieerde set van verwachte resultaten wordt gewerkt, moeten LLM's op nieuwe manieren worden beoordeeld. Dit vereist niet alleen kwantitatieve maatstaven, maar ook kwalitatieve beoordelingen, zoals hoe behulpzaam of natuurlijk de gegenereerde tekst is. Dit maakt de evaluatie van LLM's complexer, maar biedt ook nieuwe mogelijkheden om de diepte en reikwijdte van taalmodellen te begrijpen en te verbeteren.
Hoe een Kennisbasis Opbouwen en Toepassen in LLMBAs: Van Gegevensverwerking tot Quizgeneratie
Het proces van het opbouwen van een robuuste kennisbasis voor LLM (Large Language Model)-toepassingen is van cruciaal belang om de efficiëntie en bruikbaarheid van het systeem te verbeteren. In dit hoofdstuk wordt besproken hoe gegevens kunnen worden verwerkt en toegevoegd aan een kennisbasis, en hoe deze kennis vervolgens kan worden benut voor specifieke toepassingen, zoals het genereren van quizzen. Het gebruik van technieken zoals prompt-caching, RAG-systemen (retrieval-augmented generation), en lange contextmodellen biedt veel voordelen voor de efficiëntie van LLM’s bij het verwerken van grote hoeveelheden informatie.
Een van de belangrijkste methoden voor het verbeteren van LLM-toepassingen is het zorgvuldig annoteren van documenten met document-ID’s. Dit biedt de mogelijkheid om snel toegang te krijgen tot specifieke gegevens in een enorme corpus, wat van essentieel belang is voor het genereren van nuttige en betrouwbare output. Het proces begint met het toevoegen van nieuwe content aan de input, bijvoorbeeld door middel van een lijst van URL’s, waarbij elk document wordt omgezet naar een goed gestructureerd tekstformaat. Dit wordt vervolgens gecombineerd met een uniek document-ID, wat het makkelijker maakt om bij later gebruik naar het document te verwijzen.
Het toevoegen van kennis aan een systeem kan eenvoudig worden uitgevoerd door de methode add() te gebruiken, die nieuwe URL’s toevoegt aan de geheugenstructuur. Elke keer dat een nieuwe URL wordt toegevoegd, wordt de bijbehorende tekst uit die URL geëxtraheerd en toegevoegd aan de geheugenstructuur in een format dat geschikt is voor verder gebruik, inclusief het document-ID en de inhoud. Deze benadering maakt het mogelijk om op efficiënte wijze gegevens te verzamelen, wat essentieel is voor toepassingen zoals het genereren van gepersonaliseerde antwoorden en het uitbreiden van de kennisbasis van een systeem.
Een ander belangrijk aspect van het beheer van kennis in LLM’s is het caching van prompts. In plaats van steeds opnieuw dezelfde inputtokens naar een model te sturen, kunnen deze tokens worden gecached na hun eerste gebruik, wat aanzienlijk bijdraagt aan het verminderen van kosten en tijd. Dit cachingmechanisme zorgt ervoor dat veelgebruikte gegevens sneller toegankelijk zijn zonder onnodige herhalingen van dezelfde bewerkingen. Bij het gebruik van een systeem zoals een Client-class, kan deze benadering worden toegepast om toegang te krijgen tot de opgeslagen kennisbasis en extra gegevens die door de gebruiker zijn toegevoegd.
Een interessante uitbreiding van deze technologie is de implementatie van een quizgenerator die gebruik maakt van de kennisbasis. Deze generator creëert een quiz op basis van de inhoud die is opgeslagen in het geheugen van het model, inclusief documenten en gegevens die door de gebruiker zijn ingevoerd. De gegenereerde quiz bevat meerdere keuzemogelijkheden en verwijzingen naar de documenten in de kennisbasis, met behulp van de document-ID’s als citaten. Dit vergemakkelijkt de controleerbaarheid en verifieerbaarheid van de antwoorden. Het genereren van een quiz kan op verzoek van de gebruiker worden uitgevoerd en biedt een interessante manier om interactief met de kennis te werken.
Het genereren van een quiz gebeurt op basis van een eenvoudig sjabloon voor de prompt, waarin het systeem instructies krijgt over het aantal vragen, de moeilijkheidsgraad en de gewenste structuur van het antwoord. Hierbij kan ook worden aangegeven of citaten moeten worden toegevoegd, zodat de gegenereerde quiz eenvoudig kan worden gecontroleerd op juistheid. Na het genereren van de quiz kan de gebruiker de antwoorden controleren, die worden gepresenteerd aan het einde van de quiz met de bijbehorende referenties.
Hoewel de bovenstaande technieken nuttig zijn, zijn er ook enkele beperkingen die niet over het hoofd gezien mogen worden. Ten eerste, de systematische manier waarop geheugen wordt beheerd, kan problematisch worden wanneer de kennisbasis aanzienlijk groeit. Het opslaan van een enorme hoeveelheid gegevens in het geheugen kan leiden tot prestatieproblemen. Een oplossing zou kunnen zijn om de content op te splitsen of in real-time te streamen. Dit zou de efficiëntie verbeteren zonder dat alle gegevens tegelijkertijd in het geheugen hoeven te worden geladen.
Daarnaast is de kwaliteit van de citaten die door het systeem worden gegenereerd een ander aandachtspunt. Momenteel worden citaten gegenereerd die verwijzen naar het volledige document, maar ze specificeert niet naar welke passage of pagina de informatie precies verwijst. Dit vermindert de mogelijkheid om specifieke beweringen te verifiëren of om precies na te gaan waaruit de informatie afkomstig is. Ook hier zou chunking, het verdelen van documenten in kleinere eenheden, kunnen helpen om de citaten specifieker te maken.
Een ander aandachtspunt is de mogelijkheid van 'hallucinaties' door het model. Dit houdt in dat het model informatie kan genereren die niet feitelijk correct is, maar gepresenteerd wordt als waarheidsgetrouw. Hoewel het systeem citaten biedt, garandeert het niet dat de verstrekte informatie altijd correct is. Dit probleem is moeilijk volledig te elimineren, zelfs met het gebruik van citaten, en blijft een belangrijk punt van zorg bij de inzet van LLM’s in kritieke toepassingen.
Deze beperkingen mogen echter niet afdoen aan de effectiviteit van de gepresenteerde benaderingen. Ondanks deze uitdagingen is het mogelijk om met een relatief eenvoudige opzet solide en beheersbare resultaten te behalen, die zelfs voor complexere taken voldoende blijken. Het gebruik van een kennisbasis, gecombineerd met technieken zoals prompt-caching en RAG, biedt een krachtig hulpmiddel voor het genereren van responsen die zowel bruikbaar als verifieerbaar zijn.
Hoe Evalueren We de Prestaties van Generatieve Modellen?
Bij het evalueren van de prestaties van taalmodellen (LLM’s), ligt de nadruk meestal op twee soorten metrieken: intrinsieke en extrinsieke. Intrinsieke metrieken meten hoe goed een model de taak van training uitvoert, zoals het voorspellen van het volgende token in een tekstreeks. Een veelgebruikte intrinsieke metriek is de "perplexiteit", die de mate van onzekerheid van een model over een tekst meet. Hoe lager de perplexiteit, hoe beter het model de tekst kan voorspellen.
Extrinsieke metrieken, daarentegen, meten de effectiviteit van een model in daadwerkelijke toepassingen, zoals vraag-antwoord systemen of het genereren van code. Deze metrieken zijn niet direct gekoppeld aan de trainingsdoelen van een model, maar bieden waardevolle inzichten in hoe goed het model zich aanpast aan reële, zakelijke toepassingen. Aangezien we ons richten op het evalueren van toepassingen die zijn gebaseerd op LLM's, ligt de focus op extrinsieke metrieken, die een beter beeld geven van de prestaties in praktische scenario’s.
De keuze van de juiste metriek hangt af van het type taak dat wordt geëvalueerd. Er zijn grofweg twee soorten taken: analytische taken en generatieve taken. Analytische taken omvatten bijvoorbeeld sentimentanalyse, classificatie of het vaststellen van de waarheid van een uitspraak. Deze taken vereisen dat het model logische probabiliteiten of discrete voorspellingen genereert, waardoor traditionele machine learning metrieken zoals nauwkeurigheid, precisie, recall en de F1-score van toepassing zijn.
Generatieve taken, daarentegen, betreffen het creëren van nieuwe data, zoals tekstgeneratie, afbeeldingensynthese of samenvatting van documenten. Dit type taak vereist andere evaluatiemethoden. Voor generatieve taken worden vaak gespecialiseerde metrieken toegepast die de kwaliteit van de gegenereerde inhoud kunnen beoordelen. Deze metrieken omvatten onder andere:
-
BLEU (Bilingual Evaluation Understudy) – wordt vaak gebruikt voor het evalueren van vertalingen en samenvattingen door de n-gram overlap tussen de gegenereerde tekst en de referentietekst te meten. Het nadeel van BLEU is dat het korte outputteksten bevoordeelt en gevoelig is voor de kwaliteit van de referentietekst.
-
ROUGE (Recall-Oriented Understudy for Gisting Evaluation) – meet de overlap van n-grammen, woorden of zinnen tussen de gegenereerde tekst en de referentietekst, met de nadruk op recall. Het is vooral nuttig voor samenvattingen, maar het heeft de neiging te worden beïnvloed door de lengte van de output en is minder gevoelig voor semantische overeenkomsten.
-
METEOR (Metric for Evaluation of Translation with Explicit ORdering) – houdt rekening met synoniemen, stemming en semantische equivalentie, maar is computationeel duurder dan de eerder genoemde metrieken.
-
CIDEr (Consensus-based Image Description Evaluation) – wordt gebruikt voor het evalueren van beeldbeschrijvingen en is gebaseerd op n-gram overlap, gewogen door TF-IDF (Term Frequency-Inverse Document Frequency).
-
TER (Translation Edit Rate) – meet het aantal benodigde bewerkingen om een vertaling om te zetten naar een referentietekst. Het penaliseert parafraseringen die niet exact overeenkomen met de referentie.
-
BERTScore – maakt gebruik van de semantische embeddings van BERT om de overeenkomst tussen de tokenrepresentaties van de gegenereerde en referentietekst te berekenen.
-
SPICE (Semantic Propositional Image Caption Evaluation) – richt zich op de semantische nauwkeurigheid van beeldomschrijvingen door te kijken naar de proposities in de bijbehorende scene-omschrijvingen.
Bij het evalueren van generatieve taken is het belangrijk om meerdere van deze metrieken in overweging te nemen. Een enkele metriek kan namelijk onvoldoende inzicht geven in de werkelijke prestaties van een model. Zo kan bijvoorbeeld een lage BLEU-score niet per se betekenen dat de gegenereerde tekst slecht is, aangezien deze metriek weinig rekening houdt met semantische gelijkenissen.
Een veelvoorkomend gebruik van BLEU en ROUGE is het vergelijken van de kwaliteit van gegenereerde samenvattingen met referentiesamenvattingen. De referentie kan een door mensen gemaakte samenvatting zijn, bijvoorbeeld door een expert-analist, of een machinegegenereerde samenvatting. Stel dat we bijvoorbeeld de kwaliteit van een door een model gegenereerde executive summary van een 10-K filing willen evalueren. We zouden de gegenereerde samenvatting kunnen vergelijken met een referentiesamenvatting, bijvoorbeeld die van een analist of een andere LLM.
Voor het berekenen van de prestaties van een samenvattingsmodel kunnen we een evaluatiefunctie ontwikkelen die de BLEU- en ROUGE-scores van de gegenereerde samenvatting ten opzichte van de referentie berekent. Deze functie neemt zowel de gegenereerde als de referentie-samenvatting als invoer en retourneert een reeks scores voor BLEU en ROUGE. Deze kwantitatieve benadering maakt het mogelijk om modellen objectief te vergelijken en te bepalen welk model het beste presteert op de taak.
Bijvoorbeeld, de evaluate_summaries functie vergelijkt twee zinnen en retourneert een score voor de vergelijkbare metrieken. Door deze evaluatie toe te passen op verschillende testmodellen kunnen we een duidelijker beeld krijgen van hun prestaties. Het is van cruciaal belang dat deze evaluatie wordt uitgevoerd met een aantal metrieken, aangezien één enkele metriek vaak niet voldoende is om de prestaties van generatieve modellen te beoordelen.
Bovendien kan de manier waarop het model wordt aangestuurd (via specifieke prompts of taakomschrijvingen) invloed hebben op de resultaten. Een goed geformuleerde prompt kan bijvoorbeeld een aanzienlijke verbetering van de prestaties van een model teweegbrengen, wat duidelijk maakt hoe belangrijk het is om de juiste benadering te kiezen bij het inzetten van taalmodellen voor zakelijke toepassingen.
Come Ottimizzare la Crescita Organica del Fatturato: L'Importanza del Valore del Cliente e delle Strategie Canale-Basate
Qual è l'importanza di conoscere il lessico quotidiano per la vita sociale e culturale?
Come la Politica dei Progressisti Sta Cambiando con Strumenti come Navigator e le Dinamiche del Sistema Politico degli Stati Uniti

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский