Waarom beantwoordt mijn chatbot niet correct? Ontdek hoe Chatwize werkt en wat je kunt doen als AI-antwoorden afwijken van je verwachtingen.
Toen Google-wetenschappers voor het eerst het concept van de “transformer” introduceerden (https://arxiv.org/pdf/1706.03762.pdf), kreeg het idee veel aandacht binnen
de Natural Language Processing (NLP)-gemeenschap. Het opende een nieuwe richting voor onderzoekers om neurale netwerkmodellen te ontwikkelen
die toepassingen hebben voor het begrijpen van natuurlijke taal.Niet lang daarna populariseerde OpenAI de Generative Pre-trained Transformers (GPT) en pionierde het met Grote Taalmodellen (LLMs) via ChatGPT. De conversatie-
prestaties van deze modellen gaven mensen het idee dat AI snel menselijke intelligentie benaderde en dus kon worden getraind om een verscheidenheid
aan menselijke taken uit te voeren.Hoe “menselijk” deze LLM’s ook mogen lijken, ze zijn nog verre van het echt zien, interpreteren en begrijpen van de wereld zoals mensen dat doen.
Deze modellen moeten worden beschouwd als “probabilistische conversatiesimulatoren” in plaats van echte analytische systemen. Het onderliggende concept achter deze
modellen is patroonherkenning en semantische correlatie, niet echte logica en redenering.Chatwize wordt aangedreven door de LLM’s van OpenAI. Het maakt gebruik van Retrieval Augmented Generation (RAG)-technologie om zijn antwoorden af te stemmen op de gegevens die jij uploadt
als referentiecontext.
Grote Taalmodellen (LLMs) worden getraind op enorme hoeveelheden tekstgegevens. Op basis van deze gegevens identificeert het model patronen en probeert het
deze te repliceren tijdens de eigen tekstgeneratie. Bij het produceren van een output begint een LLM met een door de gebruiker geschreven prompt en wijst het algoritmisch
waarschijnlijkheden toe aan “tokens” of woorden die waarschijnlijk het prompt opvolgen op basis van patronen die het heeft waargenomen in de oorspronkelijke
trainingsgegevens. Daarom noemt OpenAI sommige van zijn API-eindpunten “Chat Completions” - het model probeert de invoer van de gebruiker aan te vullen.
Maar patronen impliceren niet noodzakelijk waarheid, consistentie of logische naleving, net zoals correlatie geen causaliteit impliceert.
Dit is de reden waarom LLM’s vaak “hallucineren” bij het genereren van een antwoord. Retrieval Augmented Generation (RAG) probeert
dit probleem op te lossen door de eerder genoemde waarschijnlijkheden te “sturen” tijdens tekstgeneratie via extra context die in de prompt wordt geïnjecteerd.Om dit verder te illustreren, nemen we het volgende voorbeeld:Wanneer je een vraag stelt aan ChatGPT, ziet een typische vraag er als volgt uit:
Copy
Wat is Chatwize?
Dit is een vraag die volledig afhankelijk is van de semantische patronen binnen de oorspronkelijke trainingsgegevens van het model om een antwoord te genereren. Er is geen garantie dat het antwoord accuraat of betrouwbaar zal zijn.Maar wat als de prompt verandert naar:
Copy
Beantwoord de onderstaande vraag met behulp van de volgende verstrekte context:Chatwize is een krachtig no-code/low-code framework waarmee je multi-agent chatbots kunt bouwen met functie-aanroeptaken met behulp van je eigen gegevens. Het is ontworpen om gebruiksvriendelijk en veelzijdig te zijn, met aanpassingsopties en integratie met populaire platforms.Wat is Chatwize?
Nu heeft het model veel meer om mee te werken. De semantische patronen die in de prompt zelf zijn geïdentificeerd, kunnen het model nauwkeurig begeleiden bij het beantwoorden
van de vraag van de gebruiker. Deze “extra context” stuurt het model aan om nieuwe tokens te genereren op een semantisch vergelijkbare manier.RAG is het proces van het “verrijken” van de invoervraag met extra context, zodat het model vragen beantwoordt op basis van de verstrekte informatie.
Het wijzigt of verfijnt het fundamentele LLM zelf niet, maar injecteert eerder de oorspronkelijke prompt van de gebruiker met elders opgeslagen gegevens.Je zou nu kunnen vragen: waarom zou ik niet gewoon mijn volledige bibliotheek van 15 miljoen woorden aan blogartikelen direct in de LLM gooien als referentiecontext
telkens wanneer ik een vraag stel?Wel, als de LLM groot genoeg is om zoveel tokens (woorden) tegelijk als invoer te verwerken, dan is het zeker haalbaar, mits je de kosten kunt betalen.Echter, wij gebruiken OpenAI’s grote taalmodellen (LLMs), die allemaal tokenlimieten hebben. De tokenlimiet bepaalt hoeveel “effectieve inhoud”
als context kan worden gebruikt. Voor de chat van Chatwize kunnen we ongeveer 10.000 woorden kwijt met het gpt-3.5-16k model.De chatbot werkt bovenop veel documenten die samen meestal veel meer dan 10.000 woorden bevatten. Dit betekent dat we niet alles
in de tokenlimiet kunnen passen.Om dit probleem te omzeilen, splitsen we lange documenten in segmenten, berekenen we embeddings voor elk segment en slaan we ze afzonderlijk op in een
vector database. Embeddings kunnen worden beschouwd als wiskundige representaties van de betekenis achter een tekstfragment. Het is als een
“universele menselijke taal” van machines, gerepresenteerd in wiskundige vectoren. Natuurlijke taaluitingen
met een semantische gelijkenis zullen “fysiek” dichter bij elkaar liggen in de embed-vectorruimte. Hier is een goed artikel dat
“tekstembeddings” in meer detail uitlegt: https://stackoverflow.blog/2023/11/09/an-intuitive-introduction-to-text-embeddings/Elke keer dat je een AI-query invoert, doorzoeken we de database algoritmisch naar relevante segmenten op basis van embedding-afstand.
Dit gebeurt volledig onafhankelijk van de LLM-query zelf. De LLM neemt niet actief deel aan deze “segmentselectie”-stap bij het beslissen
welke informatie in de context moet worden opgenomen.Vervolgens worden de meest relevante segmenten als context toegevoegd en in de oorspronkelijke vraag van de gebruiker geïnjecteerd. Dit is de basis van Retrieval Augmented
Generation (RAG). Onthoud ons eerdere voorbeeld? Wanneer de gebruiker vraagt:
Copy
Wat is Chatwize?
is het meest relevante segment dat waarschijnlijk uit onze vector database wordt gehaald:
Copy
Chatwize is een krachtig no-code/low-code framework waarmee je multi-agent chatbots kunt bouwen met functie-aanroeptakenmet behulp van je eigen gegevens. Het is ontworpen om gebruiksvriendelijk en veelzijdig te zijn, met aanpassingsopties enintegratie met populaire platforms.
en de chatbot zal nu het juiste antwoord geven.Hier is een goede visuele uitleg van AWS over de RAG-stappen: