Guides

Hvad er RAG? Retrieval-Augmented Generation forklaret simpelt

RAG (retrieval-augmented generation) er en måde at få en AI-model til at svare på spørgsmål ved hjælp af dine egne oplysninger. Når nogen stiller et spørgsmål, søger din app først i dine dokumenter efter de mest relevante passager og giver dem derefter til modellen sammen med spørgsmålet. Modellen skriver sit svar ud fra den tekst i stedet for kun at stole på det, den tilfældigvis lærte under træningen.

Hvorfor RAG betyder noget, når du bygger med AI

En stor sprogmodel ved meget om verden generelt, men intet om din virksomhed: dine priser, dine politikker, din produktmanual, sidste uges supportsager. Den har også en træningsgrænse, så den kender ikke noget nyt. Spørger du den alligevel, kan den give et sikkert, plausibelt og forkert svar.

Du har tre overordnede muligheder for at løse det:

TilgangHvad den gørGodt til
Indsæt alt i promptenSend alle dine dokumenter med hvert spørgsmålSmå mængder tekst — nogle få sider
RAGSøg i dine dokumenter, send kun de relevante deleStørre eller skiftende samlinger: hjælpecentre, manualer, noter
FinetuningTræn modellen videre på eksemplerTone, format og gentagne opgaver — ikke fakta, der ændrer sig

Moderne modeller accepterer lange prompts, så til en kort FAQ er den første mulighed ofte fin. RAG gør sig bedst, når du har mere tekst, end du vil sende hver gang — for hvert ord du sender, koster penge og tid (se hvordan LLM-API'er tager betaling).

Hvis du bygger en funktion med "chat med vores dokumenter", en supportassistent eller et internt videnværktøj, bygger du næsten helt sikkert en form for RAG.

En hverdagsanalogi

Forestil dig en eksamen med åben bog. En elev, der skal svare fra hukommelsen, kan huske forkert eller gætte. En elev, der må slå de rigtige sider op først, læse dem og derefter svare, er langt mere pålidelig — så længe eleven finder de rigtige sider.

  • Eleven er sprogmodellen.
  • Lærebogen er dine dokumenter.
  • At slå de rigtige sider op er hentning (retrieval).
  • At skrive svaret ud fra siderne er generering.

RAG er den åbne-bog-version. Og ligesom ved eksamen afhænger kvaliteten af svaret meget af, om de rigtige sider blev fundet.

Sådan virker RAG, trin for trin

En typisk RAG-opsætning har to faser.

Klargøring af dine dokumenter (gøres på forhånd):

  1. Saml kildematerialet — hjælpeartikler, PDF'er, politikker, produktdata.
  2. Opdel (chunk) det: del lange dokumenter i mindre stykker, ofte et par afsnit hver, så søgningen kan returnere netop den relevante del.
  3. Lav embeddings for hvert stykke: send det til en embedding-model, der omsætter teksten til en embedding — en lang række tal, der fanger betydningen. Tekster om lignende ting ender med lignende tal.
  4. Gem stykkerne og deres embeddings i en database, der kan søge efter lighed (ofte kaldet en vektordatabase eller vektorindeks).

Besvarelse af et spørgsmål (gøres hver gang):

  1. Lav embedding af spørgsmålet med den samme embedding-model.
  2. Hent de stykker, hvis embeddings ligger tættest på spørgsmålets — fx de fem bedste.
  3. Byg prompten: instruktioner, de hentede stykker og spørgsmålet.
  4. Generer: sprogmodellen skriver et svar ud fra stykkerne, helst med henvisning til hvilke den brugte.

Det er søgning efter betydning, der gør det muligt: et spørgsmål om "at få mine penge tilbage" kan finde et stykke med titlen "Refusionspolitik", selvom de ikke deler et eneste ord.

Et eksempel: et fitnesscenters hjælpeassistent

Lad os sige, at et fitnesscenter har 40 hjælpeartikler og vil have en chatassistent på sin hjemmeside. Et medlem spørger: "Kan jeg sætte mit medlemskab på pause, mens jeg rejser?"

Appen laver embedding af spørgsmålet og henter de tre nærmeste stykker. Et af dem lyder:

Frys af medlemskab: Medlemmer med månedlige abonnementer kan fryse
deres medlemskab i op til 2 måneder om året. Anmod om det i receptionen
eller i appen mindst 7 dage før frysningen starter.

Prompten, der sendes til modellen, ser så nogenlunde sådan ud:

Du er hjælpeassistenten for Northside Gym.
Svar kun ud fra kilderne nedenfor. Hvis svaret ikke findes i dem,
sig at du ikke ved det, og foreslå at kontakte receptionen.
Nævn hvilken kilde du brugte.

[Kilde 1: Frys af medlemskab] Medlemmer med månedlige abonnementer kan fryse...
[Kilde 2: Opsigelse af medlemskab] ...
[Kilde 3: Gæstebilletter] ...

Spørgsmål: Kan jeg sætte mit medlemskab på pause, mens jeg rejser?

Og modellen svarer: "Ja — med et månedligt abonnement kan du fryse dit medlemskab i op til to måneder om året. Anmod om det i receptionen eller i appen mindst 7 dage før (kilde: Frys af medlemskab)."

Fitnesscentret har aldrig trænet noget om. Når det ændrer fryse-reglerne, opdaterer det artiklen, appen laver nye embeddings af det stykke, og næste svar afspejler ændringen.

Vigtige begreber

BegrebBetydning
LLMLarge language model — AI'en, der skriver svaret. Se hvad er en LLM.
EmbeddingEn række tal, der repræsenterer betydningen af et stykke tekst.
Embedding-modelEn model, der producerer embeddings. Typisk adskilt fra og meget billigere end chatmodellen.
ChunkEt stykke af et dokument, dimensioneret så det kan hentes alene.
Vektordatabase / vektorsøgningLager, der finder elementer med lignende embeddings. Nogle almindelige databaser tilbyder det også — fx Postgres via udvidelsen pgvector.
Top-kHvor mange stykker der hentes pr. spørgsmål.
HybridsøgningAt kombinere søgning efter betydning med almindelig nøgleordssøgning, hvilket hjælper med præcise termer som produktkoder.
KontekstvindueDen maksimale mængde tekst en model kan tage imod i én forespørgsel.
Forankring / citaterAt knytte svaret til bestemte hentede kilder og vise dem.

Almindelige misforståelser

  • "RAG træner modellen på mine data." Det gør det ikke. Modellen ændres ikke; den læser blot ekstra tekst på spørgsmålstidspunktet.
  • "RAG betyder, at der ikke længere er hallucinationer." Det betyder færre. Hvis hentningen misser det rigtige stykke, eller svaret ikke findes i dine dokumenter, kan modellen stadig gætte. Instruér den til at sige "Jeg ved det ikke" og test med spørgsmål, hvor du kender svaret.
  • "Jeg har brug for en særlig vektordatabase." Ofte gør du ikke. Ved moderate datamængder kan en vektorudvidelse til den database, du allerede har, eller endda almindelig nøgleordssøgning, være nok.
  • "Større stykker er bedre." For store, og du sender masser af irrelevant tekst (mere omkostning, mere forvirring); for små, og et stykke mister den kontekst, der gjorde det meningsfuldt. Forvent at justere.
  • "Bare upload alt." Forældede, dublerede eller modsigende dokumenter giver modstridende svar. At rydde op i kildematerialet er ofte den største forbedring, du kan lave.
  • "Alle kan se alle dokumenter." Kun hvis du bygger det sådan. Hvis nogle dokumenter er private for bestemte brugere, skal selve søgningen filtrere efter, hvem der spørger — ellers kan assistenten citere én kundes data over for en anden.

Hvad det koster

En RAG-funktion har typisk tre løbende omkostninger: embedding af dine dokumenter (lille og for det meste engangs), embedding af hvert spørgsmål (meget lille) og kaldet til sprogmodellen (hovedomkostningen, som vokser med hvor mange stykker du sender). Plus lagring i din database. Din AI-udbyder fakturerer disse på din egen konto, så sæt en forbrugsgrænse der.

Hvad du beder din AI-builder om

  • "Før vi bygger RAG, så tjek: er vores indhold småt nok til bare at inkludere det i prompten?"
  • "Del hjælpeartiklerne op i stykker på et par afsnit, behold hvert stykkes titel og kildelink, og gem embeddings i vores database."
  • "Brug hybridsøgning — både efter betydning og nøgleord — så produktkoder stadig matcher."
  • "Fortæl modellen kun at svare ud fra de hentede kilder, sige til når den ikke ved noget, og vise kilderne under hvert svar."
  • "Søg kun i dokumenter, den indloggede bruger må se."
  • "Lav automatisk nye embeddings af et dokument, når det redigeres."
  • "Behold AI-udbyderens nøgle på serveren som en hemmelighed, aldrig i browseren."
  • "Log hvert spørgsmål, de hentede stykker og svaret, så jeg kan gennemgå dårlige svar."

RAG i Mythex

Mythex indeholder ikke et færdigt videnbase- eller RAG-produkt. Det, Mythex gør, er at skrive koden til en sådan i din app: du medbringer dine dokumenter og din egen AI-udbyder-nøgle, gemt som en projekthemmelighed, og agenten bygger hentnings- og chatdelene ved hjælp af projektets Postgres-database til lagring. Udbyderforbrug faktureres på din udbyderkonto, ikke i Mythex-credits. Dokumentationen foreslår at starte med én simpel AI-funktion og tilføje RAG, når den virker — se at bygge en AI-app og vores guides om at bygge en AI-chatbot-app og at tilføje AI-funktioner.

Spørgsmål

Hvad er RAG med enkle ord?

RAG (retrieval-augmented generation) er en måde at få en AI-model til at svare ud fra dine egne oplysninger. Før modellen svarer, søger din app i dine dokumenter efter de passager, der er mest relevante for spørgsmålet, og sender dem med i prompten, så svaret bygger på den tekst og ikke kun på det, modellen lærte under træningen.

Træner RAG AI'en på mine data?

Nej. RAG ændrer slet ikke modellen. Den slår relevant tekst op i det øjeblik, et spørgsmål stilles, og sender den til modellen sammen med spørgsmålet. Opdaterer du et dokument, kan næste svar bruge den nye version med det samme.

Er RAG det samme som finetuning?

Nej. Finetuning ændrer en models adfærd ved at træne den videre på eksempler, hvilket er langsommere og bedst til stil eller format. RAG giver modellen fakta at læse på spørgsmålstidspunktet, hvilket er bedre til viden, der ændrer sig, eller som skal citeres præcist.

Stopper RAG AI-hallucinationer?

Det reducerer dem, men fjerner dem ikke helt. Hvis søgningen finder de forkerte passager, eller svaret ikke findes i dine dokumenter, kan modellen stadig gætte. Gode RAG-apps fortæller modellen, at den skal sige det, når den ikke ved noget, og viser de kilder, de har brugt.

Mythex · Pricing · Byg hvad som helst med AI · Skabeloner til websites og apps · Mythex sammenlignet · Ordliste for app-bygning med AI · Gratis værktøjer til app-bygning med AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)