Training door Tarik Eraslan App Tarik

RAG uitgelegd: een AI agent laten werken met je eigen documenten

In het kort

RAG (retrieval-augmented generation) betekent dat je bij elke vraag eerst relevante stukken uit je eigen documenten opzoekt en die samen met de vraag aan het taalmodel geeft. Je knipt documenten in stukken, zet die om in embeddings en zoekt op betekenis. Anthropic schreef in september 2024 dat je bij minder dan 200.000 tokens, ongeveer 500 pagina's, alles direct in de prompt kunt zetten.

Wat is RAG?

RAG staat voor retrieval-augmented generation. Volgens de begrippenlijst van Anthropic combineer je daarbij het opzoeken van informatie met het genereren van tekst. Het taalmodel krijgt relevante stukken uit een kennisbank mee in zijn contextvenster, het werkgeheugen van het model. Die stukken worden opgehaald op het moment dat er een vraag binnenkomt.

Zo werkt het model met informatie die niet in zijn trainingsdata zit, zoals je eigen handleidingen of contracten. Anthropic noemt RAG vooral nuttig in deze situaties:

  • je hebt actuele informatie nodig;
  • je werkt met kennis uit een specifiek vakgebied;
  • je wilt bij een antwoord de bron kunnen aanwijzen.

De kwaliteit hangt wel af van je kennisbank en van wat er bij elke vraag wordt opgehaald.

Het model hoeft het zoeken niet zelf te doen. Je code kan zoeken voordat de vraag naar het model gaat. Je kunt het model ook een zoekfunctie als tool geven, zodat het zelf bepaalt wanneer het iets opzoekt. Hoe dat werkt, lees je in Tools definiëren voor een AI agent.

Wanneer heb je RAG niet nodig?

Begin met tellen. In het artikel over Contextual Retrieval (september 2024) schrijft Anthropic dat je bij een kennisbank van minder dan 200.000 tokens, ongeveer 500 pagina's, de hele kennisbank in de prompt kunt zetten. Dan heb je geen RAG nodig.

Een paar handleidingen en een prijslijst passen daar vaak al in. Dat is eenvoudiger te bouwen en je hebt geen kans dat het zoeken het juiste stuk mist. RAG wordt interessant zodra je kennisbank groter is dan wat je per vraag kunt meesturen.

Hoe werkt RAG stap voor stap?

Voorbereiden: chunking en embeddings

Anthropic beschrijft de klassieke voorbereiding in drie stappen:

  1. Chunking. Je knipt je documenten in kleinere stukken tekst, meestal niet meer dan een paar honderd tokens per stuk.
  2. Embeddings. Een embeddingmodel zet elk stuk om in een vector: een reeks getallen die de betekenis van de tekst vastlegt.
  3. Opslaan. Je bewaart die vectoren in een vectordatabase, waarin je kunt zoeken op betekenis.

Anthropic biedt zelf geen embeddingmodel aan. De documentatie noemt Voyage AI als aanbieder en raadt aan om meerdere aanbieders te vergelijken voor je eigen toepassing.

Bij elke vraag: zoeken en meesturen

Komt er een vraag binnen, dan zet je ook die om in een embedding. Je zoekt de stukken waarvan de vector het dichtst bij de vraag ligt. Die stukken stuur je samen met de vraag naar het taalmodel, dat er zijn antwoord op baseert.

Zoeken op exacte woorden met BM25

Zoeken op betekenis mist soms exacte termen, zoals een foutcode of een artikelnummer. Daarvoor bestaat BM25, een zoekmethode die op letterlijke woorden en zinsdelen matcht. Anthropic adviseert beide methodes te combineren.

Het zwakke punt: stukken zonder context

Een los stuk tekst mist vaak zijn context. Anthropic geeft dit voorbeeld: een stuk met de zin "De omzet van het bedrijf groeide met 3% ten opzichte van het vorige kwartaal." Welk bedrijf? Welk kwartaal? Dat staat ergens anders in het document. Zo'n stuk is lastig te vinden en lastig te gebruiken.

Anthropic stelt daarom Contextual Retrieval voor. Een taalmodel schrijft voor elk stuk een korte toelichting van meestal 50 tot 100 tokens die het stuk in het document plaatst. Die toelichting zet je voor het stuk, voordat je de embedding maakt en de BM25-index bouwt.

In de eigen tests van Anthropic leverde dat dit op:

AanpakMinder mislukte zoekacties
Contextual embeddings35%
Contextual embeddings plus contextual BM2549%
Beide, plus reranking67%

In dezelfde tests werkte het beter om de 20 best passende stukken mee te sturen dan 5 of 10.

Keuzes die je zelf test

Er is geen vaste instelling die overal werkt. Anthropic noemt deze punten om voor je eigen documenten uit te proberen:

  • hoe je documenten in stukken knipt;
  • welk embeddingmodel je gebruikt;
  • een eigen prompt voor de toelichting per stuk, afgestemd op je vakgebied;
  • hoeveel stukken je per vraag meestuurt.

Test met echte vragen waarvan je het antwoord al weet. Kijk eerst of het juiste stuk wordt gevonden, en pas daarna of het antwoord klopt. Zo zie je of een fout uit het zoeken komt of uit het model.

RAG leren bouwen

Retrieval is een van de uitbreidingen die van een taalmodel een agent maken, zie Hoe werkt een AI agent?. In de 1-op-1 training AI agent bouwen zet je in 3 uur met Tarik een agent op die met je eigen documenten werkt. Kies je voor het pakket met een week support, dan kun je daarna nog een week via WhatsApp vragen stellen terwijl je verder bouwt.

Veelgestelde vragen

Wat is het verschil tussen RAG en fine-tuning?

Bij fine-tuning train je een model verder met extra data. Bij RAG geef je informatie mee op het moment van de vraag. De Claude API biedt volgens de documentatie op dit moment geen fine-tuning aan.

Heeft Anthropic een eigen embeddingmodel?

Nee. De documentatie van Anthropic noemt Voyage AI als aanbieder en raadt aan meerdere aanbieders te vergelijken.

Hoeveel tekst kan ik zonder RAG meesturen?

Anthropic schreef in september 2024 dat een kennisbank onder 200.000 tokens, ongeveer 500 pagina's, in zijn geheel in de prompt past.

Plan je training via WhatsApp