Kunstmatige intelligentie

Een diepe duik in Retrieval-Augmented Generation in LLM

mm
Retrieval Augmented Generation Illustration using Midjourney

Stel jezelf voor als een analist, en je hebt toegang tot een Large Language Model. Je bent enthousiast over de mogelijkheden die het biedt voor je workflow. Maar dan vraag je het over de laatste aandelenkoersen of het huidige inflatieniveau, en het antwoord is:

“Sorry, maar ik kan geen real-time of post-cutoff gegevens verstrekken. Mijn laatste trainingsgegevens dateren alleen tot januari 2022.”

Large Language Models, voor alle hun linguïstische kracht, ontbreken de mogelijkheid om de ‘nu‘ te begrijpen. En in de snel veranderende wereld is ‘nu‘ alles.

Onderzoek heeft aangetoond dat grote voorgetrainde taalmodellen (LLM’s) ook repositories van feitelijke kennis zijn.

Zij zijn getraind op zoveel gegevens dat zij veel feiten en cijfers hebben opgenomen. Wanneer zij worden gefinetuned, kunnen zij opmerkelijke resultaten behalen op een verscheidenheid aan NLP-taken.

Maar hier is het probleem: hun vermogen om toegang te krijgen tot en te manipuleren van deze opgeslagen kennis is, soms niet perfect. Vooral wanneer de taak in kwestie kennis-intensief is, kunnen deze modellen achterblijven bij meer gespecialiseerde architectuur. Het is alsof je een bibliotheek hebt met alle boeken ter wereld, maar geen catalogus om te vinden wat je nodig hebt.

OpenAI’s ChatGPT krijgt een browservernieuwing

OpenAI’s recente aankondiging over de browservernieuwing van ChatGPT is een significante stap in de richting van Retrieval-Augmented Generation (RAG). Met ChatGPT die nu in staat is om het internet af te speuren naar actuele en autoritaire informatie, weerspiegelt het de RAG-benadering van het dynamisch ophalen van gegevens uit externe bronnen om verrijkte antwoorden te bieden.

https://twitter.com/OpenAI/status/1707077710047216095

Huidige beschikbaar voor Plus- en Enterprise-gebruikers, plant OpenAI om deze functie binnenkort voor alle gebruikers uit te rollen. Gebruikers kunnen deze functie activeren door ‘Browse with Bing’ te selecteren onder de GPT-4-optie.

Chatgpt New Browsing Feature

Chatgpt New ‘Bing’ Browsing Feature

 Prompt engineering is effectief maar onvoldoende

Prompts dienen als de poort naar de kennis van LLM’s. Zij leiden het model, door een richting te geven voor het antwoord. Echter, het creëren van een effectieve prompt is niet de volledige oplossing om te krijgen wat je wilt van een LLM. Laten we echter enkele goede praktijken doornemen die je moet overwegen wanneer je een prompt schrijft:

  1. Duidelijkheid: Een goed gedefinieerde prompt elimineert ambiguïteit. Het moet rechttoe rechtaan zijn, zodat het model de bedoeling van de gebruiker begrijpt. Deze duidelijkheid vertaalt zich vaak in meer coherente en relevante antwoorden.
  2. Context: Vooral voor uitgebreide invoer, kan de plaatsing van de instructie de uitvoer beïnvloeden. Bijvoorbeeld, door de instructie naar het einde van een lange prompt te verplaatsen, kan dit vaak betere resultaten opleveren.
  3. Precisie in instructie: De kracht van de vraag, vaak overgebracht via het “wie, wat, waar, wanneer, waarom, hoe”-kader, kan het model leiden naar een meer gefocust antwoord. Bovendien kan het specificeren van de gewenste uitvoerformaat of -grootte het antwoord van het model verder verfijnen.
  4. Omgaan met onzekerheid: Het is essentieel om het model te leiden over hoe het moet reageren wanneer het onzeker is. Bijvoorbeeld, door het model te instrueren om te antwoorden met “Ik weet het niet” wanneer het onzeker is, kan dit voorkomen dat het onnauwkeurige of “gehallucineerde” antwoorden genereert.
  5. Stap-voor-stap denken: Voor complexe instructies, kan het model leiden om systematisch te denken of de taak te breken in subtaken, wat kan leiden tot meer uitgebreide en nauwkeurige antwoorden.

In relatie tot het belang van prompts in het leiden van ChatGPT, kan een uitgebreid artikel worden gevonden in een artikel op Unite.ai.

Uitdagingen in Generative AI-modellen

Prompt engineering houdt in het fijnafstemmen van de richtlijnen die aan het model worden gegeven om de prestaties te verbeteren. Het is een zeer kostenefficiënte manier om de nauwkeurigheid van Generative AI-toepassingen te verbeteren, waarvoor alleen kleine codeaanpassingen nodig zijn. Terwijl prompt engineering de uitvoer aanzienlijk kan verbeteren, is het cruciaal om de inherente beperkingen van grote taalmodellen (LLM’s) te begrijpen. Twee primaire uitdagingen zijn hallucinaties en kennisbeperkingen.

  • Hallucinaties: Dit verwijst naar gevallen waarin het model met vertrouwen een onjuist of gefabriceerd antwoord teruggeeft. Hoewel geavanceerde LLM ingebouwde mechanismen heeft om dergelijke uitvoer te herkennen en te vermijden.
Hallucinations in LLMs

Hallucinations in LLM

  • Kennisbeperkingen: Elk LLM-model heeft een trainingsdatum, waarna het niet op de hoogte is van gebeurtenissen of ontwikkelingen. Deze beperking betekent dat de kennis van het model bevroren is op het moment van de laatste trainingsdatum. Bijvoorbeeld, een model getraind tot 2022 zou geen kennis hebben van gebeurtenissen in 2023.
Knowledge cut-off in LLMS

Knowledge cut-off in LLM

Retrieval-augmented generation (RAG) biedt een oplossing voor deze uitdagingen. Het stelt modellen in staat om toegang te krijgen tot externe informatie, waardoor problemen van hallucinaties worden geminimaliseerd door toegang te bieden tot propriëtaire of domeinspecifieke gegevens. Voor kennisbeperkingen kan RAG toegang krijgen tot actuele informatie voorbij de trainingsdatum van het model, waardoor de uitvoer up-to-date is.

Het stelt het LLM ook in staat om gegevens op te halen uit verschillende externe bronnen in real-time. Dit kan een kennisbasis, database of zelfs het uitgebreide internet zijn.

Inleiding tot Retrieval-Augmented Generation

Retrieval-augmented generation (RAG) is een framework, in plaats van een specifieke technologie, die Large Language Models in staat stelt om toegang te krijgen tot gegevens waarop ze niet zijn getraind. Er zijn meerdere manieren om RAG te implementeren, en de beste pasvorm hangt af van de specifieke taak en de aard van de gegevens.

Het RAG-framework werkt op een gestructureerde manier:

Prompt invoer

Het proces begint met de invoer van de gebruiker of prompt. Dit kan een vraag of een verklaring zijn die specifieke informatie zoekt.

Opvragen uit externe bronnen

In plaats van rechtstreeks een antwoord te genereren op basis van de training, zoekt het model, met behulp van een retriever-component, door externe gegevensbronnen. Deze bronnen kunnen variëren van kennisbases, databases en documentopslag tot internettoegankelijke gegevens.

Begrijpen van opvragen

In essentie spiegelt opvragen een zoekoperatie. Het gaat over het extraheren van de meest pertinente informatie als antwoord op de invoer van de gebruiker. Dit proces kan worden onderverdeeld in twee fasen:

  1. Indexeren: Dit is waarschijnlijk het meest uitdagende deel van de hele RAG-reis. Het indexeren van de kennisbasis kan breed worden onderverdeeld in twee fasen: laden en splitsen. In tools zoals LangChain worden deze processen “loaders” en “splitsers” genoemd. Loaders halen inhoud op uit verschillende bronnen, of het nu webpagina’s of PDF’s zijn. Zodra deze zijn opgehaald, splitsen splitsers deze inhoud in hapklare brokken, waardoor ze worden geoptimaliseerd voor embedding en zoekopdrachten.
  2. Opvragen: Dit is het extraheren van de meest relevante kennisfragmenten op basis van een zoekterm.

Terwijl er veel manieren zijn om opvragen aan te pakken, van eenvoudige tekstovereenkomst tot het gebruik van zoekmachines zoals Google, moderne Retrieval-Augmented Generation (RAG)-systemen vertrouwen op semantische zoekopdrachten. Aan het hart van semantische zoekopdrachten ligt het concept van embeddings.

Embeddings zijn centraal in hoe Large Language Models (LLM) taal begrijpen. Wanneer mensen proberen uit te leggen hoe ze betekenis ontlenen aan woorden, cirkelt de verklaring vaak terug naar inherente begrip. Diep in onze cognitieve structuren erkennen we dat “kind” en “kid” synoniem zijn, of dat “rood” en “groen” beide kleuren aanduiden.

Prompt verrijken

De opgehaalde informatie wordt vervolgens gecombineerd met de oorspronkelijke prompt, waardoor een verrijkte of uitgebreide prompt ontstaat. Deze verrijkte prompt biedt het model extra context, wat vooral waardevol is als de gegevens domeinspecifiek zijn of niet deel uitmaken van de oorspronkelijke trainingscorpus van het model.

Genereren van de voltooiing

Met de verrijkte prompt in hand, genereert het model vervolgens een voltooiing of antwoord. Dit antwoord is niet alleen gebaseerd op de training van het model, maar wordt ook geïnformeerd door de in real-time opgehaalde gegevens.

Retrieval-Augmented Generation

Retrieval-Augmented Generation

Architectuur van de eerste RAG LLM

Het onderzoeksrapport van Meta, gepubliceerd in 2020 “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks” biedt een diepgaande kijk in deze techniek. Het Retrieval-Augmented Generation-model verrijkt het traditionele generatieproces met een externe opvraag- of zoekmechanisme. Dit stelt het model in staat om relevante informatie op te halen uit uitgebreide corpora van gegevens, waardoor het in staat is om contextueel nauwkeurige antwoorden te genereren.

Hier is hoe het werkt:

  1. Parametrisch geheugen: Dit is uw traditionele taalmodel, zoals een seq2seq-model. Het is getraind op uitgebreide hoeveelheden gegevens en weet veel.
  2. Non-parametrisch geheugen: Denk hierbij aan een zoekmachine. Het is een dichte vectorindex van, zeg, Wikipedia, die kan worden opgehaald met behulp van een neurale retriever.

Wanneer deze twee worden gecombineerd, creëren ze een nauwkeurig model. Het RAG-model haalt eerst relevante informatie op uit zijn non-parametrische geheugen en gebruikt vervolgens zijn parametrische kennis om een coherent antwoord te geven.

RAG ORIGNAL MODEL BY META

Original RAG Model By Meta

1. Tweestapsproces:

Het RAG LLM werkt in een tweestapsproces:

  • Opvragen: Het model zoekt eerst naar relevante documenten of passages uit een grote dataset. Dit gebeurt met behulp van een dichte opvraagmechanisme, dat embeddings gebruikt om zowel de query als de documenten te representeren. De embeddings worden vervolgens gebruikt om overeenkomstscores te berekenen, en de top-gerankte documenten worden opgehaald.
  • Genereren: Met de top-k relevante documenten in handen, worden deze gekanaald naar een sequentie-naar-sequentiegenerator, samen met de initiële query. Deze generator creëert vervolgens het definitieve uitvoer, waarbij context wordt ontleend aan zowel de query als de opgehaalde documenten.

2. Dichte opvragen:

Traditionele opvraagsystemen vertrouwen vaak op spaarzame representaties zoals TF-IDF. Echter, RAG LLM gebruikt dichte representaties, waarbij zowel de query als de documenten worden ingebed in continue vectorruimtes. Dit stelt in staat om meer nuancesimilare overeenkomsten te maken, waardoor semantische relaties worden vastgelegd die verder gaan dan alleen maar trefwoordovereenkomst.

3. Sequentie-naar-sequentiegeneratie:

De opgehaalde documenten fungeren als een uitgebreide context voor het generatiemodel. Dit model, vaak gebaseerd op architectuur zoals Transformers, genereert vervolgens de definitieve uitvoer, waarbij wordt gegarandeerd dat deze coherent en contextueel relevant is.

Document zoeken

Documentindexering en -opvragen

Om efficiënte informatie-opvragen te garanderen, vooral uit grote documenten, wordt de data vaak opgeslagen in een vector-database. Elk stuk data of document wordt geïndexeerd op basis van een embedding-vector, die de semantische essentie van de inhoud vastlegt. Efficiënte indexering garandeert snelle opvragen van relevante informatie op basis van de invoer-prompt.

Vector-databases

Vector Database

Source: Redis

Vector-databases, soms aangeduid als vector-opslag, zijn gespecialiseerde databases die zijn ontworpen voor het opslaan en ophalen van vector-gegevens. In de domeinen van AI en computerwetenschappen zijn vectoren in wezen lijsten met getallen die punten in een multidimensionale ruimte vertegenwoordigen. In tegenstelling tot traditionele databases, die meer zijn afgestemd op tabelgegevens, blinken vector-databases uit in het beheren van gegevens die van nature een vectorformat hebben, zoals embeddings van AI-modellen.

Sommige opvallende vector-databases zijn Annoy, Faiss van Meta, Milvus en Pinecone. Deze databases zijn cruciaal in AI-toepassingen, waarbij ze helpen bij taken die variëren van aanbevelingssystemen tot afbeeldingszoekopdrachten. Platforms zoals AWS bieden ook diensten aan die zijn afgestemd op vector-databasebehoeften, zoals Amazon OpenSearch Service en Amazon RDS voor PostgreSQL. Deze diensten zijn geoptimaliseerd voor specifieke use-cases, waardoor efficiënte indexering en query’s worden gegarandeerd.

Chunking voor relevantie

Gezien veel documenten uitgebreid kunnen zijn, wordt vaak een techniek genaamd “chunking” gebruikt. Dit houdt in dat grote documenten worden opgesplitst in kleinere, semantisch coherente brokken. Deze brokken worden vervolgens geïndexeerd en opgehaald zoals nodig, waardoor wordt gegarandeerd dat de meest relevante delen van een document worden gebruikt voor prompt-verrijking.

Contextwindowoverwegingen

Elk LLM werkt binnen een contextwindow, die in wezen het maximum is van de hoeveelheid informatie die het tegelijk kan overwegen. Als externe gegevensbronnen informatie bieden die deze window overschrijdt, moet deze worden opgesplitst in kleinere brokken die binnen de contextwindow van het model passen.

Voordelen van het gebruik van Retrieval-Augmented Generation

  1. Verhoogde nauwkeurigheid: Door externe gegevensbronnen te benutten, kan het RAG LLM antwoorden genereren die niet alleen zijn gebaseerd op de trainingsgegevens, maar ook zijn geïnformeerd door de meest relevante en actuele informatie die beschikbaar is in de opvraagcorpus.
  2. Overwinnen van kennislacunes: RAG lost de inherente kennisbeperkingen van LLM’s effectief op, of het nu gaat om de trainingscut-off van het model of het ontbreken van domeinspecifieke gegevens in de trainingscorpus.
  3. Veelzijdigheid: RAG kan worden geïntegreerd met verschillende externe gegevensbronnen, van propriëtaire databases binnen een organisatie tot openbaar toegankelijke internetgegevens. Dit maakt het aanpasbaar aan een breed scala aan toepassingen en industrieën.
  4. Reductie van hallucinaties: Een van de uitdagingen met LLM’s is de mogelijkheid tot “hallucinaties” of het genereren van feitelijk onjuiste of gefabriceerde informatie. Door real-time datacontext te bieden, kan RAG de kans op dergelijke uitvoer aanzienlijk verkleinen.
  5. Schaalbaarheid: Een van de primaire voordelen van RAG LLM is de mogelijkheid om te schalen. Door de opvraag- en generatieprocessen te scheiden, kan het model efficiënt omgaan met uitgebreide datasets, waardoor het geschikt is voor real-world toepassingen waar gegevens overvloedig zijn.

Uitdagingen en overwegingen

  • Rekenkundige overhead: Het tweestapsproces kan rekenkundig intensief zijn, vooral bij het omgaan met grote datasets.
  • Gegevensafhankelijkheid: De kwaliteit van de opgehaalde documenten heeft een directe invloed op de generatiekwaliteit. Daarom is het cruciaal om een uitgebreide en goed onderhouden opvraagcorpus te hebben.

Conclusie

Door de opvraag- en generatieprocessen te integreren, biedt Retrieval-Augmented Generation een robuuste oplossing voor kennis-intensieve taken, waarbij uitvoer wordt gegarandeerd die zowel geïnformeerd als contextueel relevant is.

Het echte potentieel van RAG ligt in de potentie voor real-world toepassingen. Voor sectoren zoals de gezondheidszorg, waar tijdige en nauwkeurige informatie cruciaal kan zijn, biedt RAG de mogelijkheid om inzichten te extraheren en te genereren uit uitgebreide medische literatuur. In de financiële sector, waar markten per minuut evolueren, kan RAG real-time data-gedreven inzichten bieden, waardoor betere beslissingen kunnen worden genomen. Bovendien kunnen onderzoekers in de academische wereld RAG gebruiken om uitgebreide repositories van informatie te scannen, waardoor literatuuronderzoek en data-analyse efficiënter worden.

Ik heb de afgelopen vijf jaar doorgebracht met het onderdompelen van mezelf in de fascinerende wereld van Machine Learning en Deep Learning. Mijn passie en expertise hebben me geleid om bij te dragen aan meer dan 50 diverse software-engineeringprojecten, met een bijzondere focus op AI/ML. Mijn voortdurende nieuwsgierigheid heeft me ook aangetrokken tot Natural Language Processing, een vakgebied dat ik graag verder wil verkennen.