Guider

Vad är RAG? Retrieval-Augmented Generation förklarat enkelt

RAG (retrieval-augmented generation) är ett sätt att få en AI-modell att svara på frågor med hjälp av din egen information. När någon ställer en fråga söker din app först igenom dina dokument efter de mest relevanta styckena och lämnar sedan dessa till modellen tillsammans med frågan. Modellen skriver sitt svar utifrån den texten i stället för att enbart lita på det den råkade lära sig under träningen.

Varför RAG spelar roll när du bygger med AI

En stor språkmodell vet mycket om världen i allmänhet, men ingenting om din verksamhet: dina priser, dina policyer, din produktmanual, förra veckans supportärenden. Den har dessutom ett träningsstopp, så den vet inget om det som är nytt. Frågar du ändå kan den ge ett självsäkert, trovärdigt och felaktigt svar.

Det finns tre huvudsakliga sätt att lösa det:

MetodVad den görBra för
Klistra in allt i promptenSkicka alla dina dokument med varje frågaSmå mängder text – några sidor
RAGSök i dina dokument, skicka bara de relevanta delarnaStörre eller föränderliga samlingar: hjälpcenter, manualer, anteckningar
FinjusteringTräna modellen vidare på exempelTon, format och upprepade uppgifter – inte fakta som ändras

Moderna modeller accepterar långa prompter, så för en kort FAQ är det första alternativet ofta bra. RAG förtjänar sin plats när du har mer text än du vill skicka varje gång – eftersom varje ord du skickar kostar pengar och tid (se hur LLM-API:er tar betalt).

Om du bygger en funktion för ”chatta med vår dokumentation”, en supportassistent eller ett internt kunskapsverktyg bygger du nästan säkert någon form av RAG.

En vardaglig jämförelse

Föreställ dig en tentamen med öppen bok. En elev som måste svara från minnet kan minnas fel eller bluffa. En elev som får bläddra till rätt sidor först, läsa dem och sedan svara är mycket mer pålitlig – så länge hen hittar rätt sidor.

  • Eleven är språkmodellen.
  • Läroboken är dina dokument.
  • Att bläddra till rätt sidor är hämtningen (retrieval).
  • Att skriva svaret utifrån sidorna är generationen.

RAG är den öppna boken. Och precis som på tentamen beror svarets kvalitet starkt på om rätt sidor hittades.

Så fungerar RAG, steg för steg

En typisk RAG-uppsättning har två faser.

Förbereda dina dokument (görs i förväg):

  1. Samla källmaterialet – hjälpartiklar, PDF:er, policyer, produktdata.
  2. Chunka det: dela upp långa dokument i mindre bitar, ofta några stycken vardera, så att sökningen kan returnera just den relevanta delen.
  3. Bädda in varje chunk: skicka den till en embedding-modell, som omvandlar texten till en embedding – en lång lista med tal som fångar dess betydelse. Texter om liknande saker får liknande tal.
  4. Lagra chunkarna och deras embeddings i en databas som kan söka på likhet (ofta kallad vektordatabas eller vektorindex).

Besvara en fråga (görs varje gång):

  1. Bädda in frågan med samma embedding-modell.
  2. Hämta de chunkar vars embeddings ligger närmast frågans – säg de fem bästa.
  3. Bygg prompten: instruktioner, de hämtade chunkarna och frågan.
  4. Generera: språkmodellen skriver ett svar utifrån chunkarna, helst med angivelse av vilka den använde.

Det är sökning på betydelse som gör att detta fungerar: en fråga om ”att få tillbaka mina pengar” kan hitta en chunk med rubriken ”Återbetalningspolicy” trots att de inte delar ett enda ord.

Ett genomgånget exempel: ett gyms hjälpassistent

Säg att ett gym har 40 hjälpartiklar och vill ha en chattassistent på sin webbplats. En medlem frågar: ”Kan jag pausa mitt medlemskap när jag reser?”

Appen bäddar in frågan och hämtar de tre närmaste chunkarna. En av dem lyder:

Frysning av medlemskap: Medlemmar med månadsabonnemang kan frysa
sitt medlemskap i upp till 2 månader per år. Begär det i receptionen
eller i appen minst 7 dagar före frysningens start.

Prompten som skickas till modellen ser ut ungefär så här:

Du är hjälpassistenten för Northside Gym.
Svara endast utifrån källorna nedan. Om svaret inte finns där,
säg att du inte vet och föreslå att man kontaktar receptionen.
Nämn vilken källa du använde.

[Källa 1: Frysning av medlemskap] Medlemmar med månadsabonnemang kan frysa...
[Källa 2: Avsluta ditt medlemskap] ...
[Källa 3: Gästpass] ...

Fråga: Kan jag pausa mitt medlemskap när jag reser?

Och modellen svarar: ”Ja – med ett månadsabonnemang kan du frysa ditt medlemskap i upp till två månader per år. Begär det i receptionen eller i appen minst 7 dagar före (källa: Frysning av medlemskap).”

Gymmet tränade inte om något. När det ändrar frysningspolicyn uppdaterar det artikeln, appen bäddar om den chunken, och nästa svar speglar ändringen.

Viktiga begrepp

BegreppBetydelse
LLMLarge language model – AI:n som skriver svaret. Se vad är en LLM.
EmbeddingEn lista med tal som representerar betydelsen av ett textstycke.
Embedding-modellEn modell som producerar embeddings. Vanligtvis separat från, och betydligt billigare än, chattmodellen.
ChunkEtt stycke av ett dokument, dimensionerat så att det kan hämtas på egen hand.
Vektordatabas / vektorsökningLagring som hittar objekt med liknande embeddings. Vissa vanliga databaser erbjuder det också – Postgres till exempel, via tillägget pgvector.
Top-kHur många chunkar som hämtas per fråga.
HybridsökningAtt kombinera sökning på betydelse med vanlig nyckelordssökning, vilket hjälper vid exakta termer som produktkoder.
KontextfönsterDen största mängd text en modell kan ta emot i en förfrågan.
Förankring / källhänvisningarAtt koppla svaret till specifika hämtade källor och visa dem.

Vanliga missuppfattningar

  • ”RAG tränar modellen på mina data.” Det gör den inte. Ingenting i modellen förändras; den läser bara extra text vid frågetillfället.
  • ”RAG innebär inga fler hallucinationer.” Det innebär färre. Om hämtningen missar rätt chunk, eller svaret inte finns i dina dokument, kan modellen fortfarande gissa. Instruera den att säga ”jag vet inte” och testa med frågor vars svar du känner till.
  • ”Jag behöver en speciell vektordatabas.” Ofta behöver du inte det. För måttliga datamängder kan ett vektortillägg till databasen du redan har, eller till och med vanlig nyckelordssökning, räcka.
  • ”Större chunkar är bättre.” För stora och du skickar mycket irrelevant text (mer kostnad, mer förvirring); för små och en chunk tappar sammanhanget som gjorde den meningsfull. Räkna med att justera.
  • ”Ladda bara upp allt.” Föråldrade, dubblerade eller motsägelsefulla dokument ger motsägelsefulla svar. Att städa källmaterialet är ofta den största förbättringen du kan göra.
  • ”Vem som helst kan se vilket dokument som helst.” Bara om du bygger det så. Om vissa dokument är privata för vissa användare måste själva sökningen filtrera utifrån vem som frågar – annars kan assistenten citera en kunds data för en annan.

Vad det kostar

En RAG-funktion har vanligtvis tre löpande kostnader: att bädda in dina dokument (liten, och mestadels en engångskostnad), att bädda in varje fråga (försumbar) och språkmodellanropet (den huvudsakliga kostnaden, som växer med hur många chunkar du skickar). Dessutom lagring i din databas. Din AI-leverantör fakturerar dessa på ditt eget konto, så sätt en utgiftsgräns där.

Vad du kan be din AI-byggare om

  • ”Innan vi bygger RAG, kontrollera: är vårt innehåll litet nog att bara ta med i prompten?”
  • ”Dela upp hjälpartiklarna i chunkar på några stycken, behåll varje chunks rubrik och källlänk, och lagra embeddings i vår databas.”
  • ”Använd hybridsökning – på betydelse plus nyckelord – så att produktkoder fortfarande matchar.”
  • ”Säg åt modellen att svara endast utifrån de hämtade källorna, säga när den inte vet och visa källorna under varje svar.”
  • ”Sök bara i dokument som den inloggade användaren har rätt att se.”
  • ”Bädda om ett dokument automatiskt varje gång det redigeras.”
  • ”Håll AI-leverantörens nyckel på servern i en hemlighet, aldrig i webbläsaren.”
  • ”Logga varje fråga, de hämtade chunkarna och svaret så att jag kan granska dåliga svar.”

RAG i Mythex

Mythex har ingen färdig kunskapsbas- eller RAG-produkt. Det Mythex gör är att skriva koden för en sådan inne i din app: du tar med dina dokument och din egen AI-leverantörsnyckel, lagrad som en projekthemlighet, och agenten bygger hämtnings- och chattdelarna med projektets Postgres-databas för lagring. Leverantörens användning faktureras på ditt leverantörskonto, inte i Mythex-krediter. Dokumentationen föreslår att man börjar med en enkel AI-funktion och lägger till RAG när den fungerar – se bygga en AI-app, och våra guider om att bygga en AI-chattbotapp och att lägga till AI-funktioner.

Frågor

Vad är RAG med enkla ord?

RAG (retrieval-augmented generation) är ett sätt att få en AI-modell att svara utifrån din egen information. Innan modellen svarar söker din app igenom dina dokument efter de stycken som är mest relevanta för frågan och lägger dem i prompten, så att svaret bygger på den texten och inte bara på det modellen lärt sig under träningen.

Tränar RAG AI:n på mina data?

Nej. RAG ändrar inte modellen alls. Den slår upp relevant text i det ögonblick en fråga ställs och skickar den till modellen tillsammans med frågan. Uppdaterar du ett dokument kan nästa svar använda den nya versionen direkt.

Är RAG samma sak som finjustering?

Nej. Finjustering ändrar en modells beteende genom att träna den vidare på exempel, vilket är långsammare och bäst för stil eller format. RAG ger modellen fakta att läsa vid frågetillfället, vilket är bättre för kunskap som förändras eller som måste citeras korrekt.

Stoppar RAG AI-hallucinationer?

Det minskar dem men eliminerar dem inte. Om sökningen hittar fel stycken, eller om svaret inte finns i dina dokument, kan modellen fortfarande gissa. Bra RAG-appar säger åt modellen att säga när den inte vet och visar vilka källor de använde.

Mythex · Pricing · Bygg vad som helst med AI · Mallar för webbplatser och appar · Mythex jämfört · Ordlista för apputveckling med AI · Gratis verktyg för apputveckling med AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk 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 Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)