Back to "RAG förklarade ":", ursprung och grundlagen"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

AI AI-Article LLM Machine Learning RAG Semantic Search

RAG förklarade ":", ursprung och grundlagen

Saturday, 22 November 2025

Har du någonsin sökt efter "implementeringsführern" och fått ingentingM SK2 trots att det finns en artikel om "utpublicering till produktionMska5 RAG mska6RettvinningMske7Augmented GenerationMska8 löser detta genom att förstå meningen,~ inte bara nyckelord~.~ Den här serien visar dig hur RAG kom till sigMske11 hur den fungerar under kapselnM Ska12 och hur man bygger produktionssystem?Mska13~ Från semanticisk sök till AI?-~ kraftfulla Q?M Ska15? A med citat?—? allt med hjälp av fungerande C!

Inleiding

Navigation Det här är en del av RAG: s 1

RAG (Retrieval-Augmented GenerationM SK2 utvecklades för att göra AI smartare — som ger LLMs tillgång till information de inte var utbildade på . Men här är vad, ' det intressanta, ' den teknologin öppnar upp möjligheter långt bortom AI chatboter M SK9 Den ger makt till semantisk sökningar på webbsidorna Mska10 innehållsbeveelning, Mska11 hjälp när man skriver, M Ska12 och kunskapsmanagement, Mkka13

Den dubbla naturen: RAG kan hjälpa kunder | ( | bättre sökningar | , | korrekta svar med citationer | МSK2 | eller utnyttja dem |( | manipulativa förslag ♫ , | begravande negativa recensioner ♪ , | uppsellerande uppsellning av innehåll ♪

Här är sanningen om RAG Det låter skrämmande, men precis som allt annat i mjukvaran, så handlar det bara om att förstå hur den fungerar.

RAG i tre steg:

  1. Omvandla text till siffror (inbäddar)
  2. Hitta liknande tal (vectorssuche)
  3. Använd vad du funnit (display results or feed to LLM

Det "'" är det "." resten är implementeringsdetails

Den här serien visar er hur man bygger RAG-system med fungerande C# kode . Inget handdragning M SK2 Inga antaganden . Bara bitar och hur de passar ihop

Vad du kommer lära dig i den här serien

  • Del 1 (den här artikelnM SK2: Hur RAG skapades och varför det spelar roll
  • Del 2: Komplett teknisk arkitektur och LLM-interner
  • Del 3: Att bygga riktiga system med kodexempler

Senare kommer jag också visa er hur man bygger kompletta RAG-system inklusive

Vad är RAG?

Uppfinning-Augmented Generation: hitta den relevanta informationen, och använda den

flowchart LR
    A[User Question] --> B[Retrieve Relevant Info]
    B --> C[Retrieved Documents/Context]
    C --> D[Generate Response]
    A --> D
    D --> E[Grounded, Accurate Answer]

    style B stroke:#f9f,stroke-width:2px
    style D stroke:#bbf,stroke-width:2px

Utan RAG: Användaren frågar → LLM gissar från minnet → kan hallucinera

Med RAG: Användaren frågar → Hitta relevanta dokument → LLM svara med hjälp av dessa dokument | → grundade i verkligheten

// Without RAG: Hope the LLM knows
var answer = await llm.GenerateAsync("How do I deploy Docker?");
// Risk: Might make up outdated or wrong steps

// With RAG: Give it the docs
var relevantDocs = await vectorSearch.FindSimilar("How do I deploy Docker?");
var context = string.Join("\n", relevantDocs.Select(d => d.Text));
var answer = await llm.GenerateAsync($"Context: {context}\n\nQuestion: How do I deploy Docker?");
// Result: Answer based on YOUR actual Docker deployment docs

Nyckelinsikten: Separerade kunskapsskivor (sökningar ) från resonemang | ( | LLM | МSK3 | Datera upp dina dokument |, | sökandet stannar aktuellt

Var kom RAG ifrån?

RAG bygger på årtionden av sökande och NLP-forskning

Traditionella sökningar (pre-2010sM SK2

Keyword-baserade sökningar:

  • TF-IDF: Lauftidsfrekvens × omvänd dokumentfrequens - vanliga ord betyder mindre
  • BM25: Probabilistisk ranking - är fortfarande grundlinjen för sökord
  • Fuzzy matchning:
    • Soundex: Telefonisk algoritm ("Smith
    • Avstånd:: Redigera avstånd ( hur många inkorporationer
    • N-Gramer: tecken / ordsekvenser för partiellt matchning

Problemet: De här matchade tecken, inte mening. sök "containerorchesterning" och du kommer att vinnaM SK3 hittar du inte ♫ "Dockerswarm ♫ МSK5 ♫ om de exakta orden inte dyker upp

Svar på tidiga frågor (2010s)

Watson (IBM

  • Kombinerad sökning med regeln-baserade resonemang
  • Won Jeopardy ! men krävde massiv hand- skapad kunskapsingenjörskonst
  • Fortfarande litade vi mycket på Keyword matching

Läsande förståelsemodeller:

  • Could extract answers from provided passages
  • Men du var tvungen att ge dem rätt väg först.
  • Ingen semantisk sökning för att hitta passagen

Den djupinlärningsrevolutionen (2017+)

Transformator (2017): "Attityd är allt du behöver"

  • Neuronätverk som kunde förstå sammanhanget
  • Fundament för allt som följde

BERT (2018):

  • Kontextuellt förståelse av språk
  • "Banken, " betyder olika saker i ", flodbank, ", jämfört med ", sparande bank, "
  • Could generate embeddings that captured meaning

GPT-2/3 M SK1

  • Stora språkmodeller som kunde generera konsekvent text
  • Men begränsat till deras utbildningsdata
  • Hallucinationsproblem uppstod

Dense vektorrepresentationer:

  • Text → meningsfulla siffror i hög dimension
  • liknande betydelser → nära vektorer
  • Detta gjorde det möjligt att göra semantiska sökningar

BART (Facebook AI

  • Bidirektional och Auto-Regressiv förvandlare av Mike Lewis et al.
  • Kombinerad BERT-liknande enkoder med GPT-liknasande dekoder
  • Denoising av en självbyggare tränad av korrumperande text som sedan rekonstrueras
  • Utmärkt för textskapande och förståelseuppgifter
  • blev grunden för RAG

M2

  • Först många-till-manliga flerspråkiga översättningsmodeller
  • Direkt översättning mellan 100 språk utan engelska pivot
  • 2,200 språkriktning (10x mer än tidigare modeller
  • De visade förvandlararna kunde hantera massiva översättningar av språk

Verklig-world example: Min neural machine translation tool använder BART som en fallback-översättningsmodell när primära tjänster inte är tillgängliga.

Den moderna RAGs födelse ( Maj 2020)

Det avgörande papperet "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks" av Patrick Lewis et al

Vad de kombinerade

  • Dense Passage Retrieval (DPR
  • BART-generatör - den seq2seq-modellen från 2019
  • Slutar -till - slutar différerabla arkitekturer - hämtar och genererar tillsammans

Resultaten: RAG-system presterade bättre än mycket större modeller på kunskap.

Varför exploderade RAG?

ChatGPT, GPT -4, och Claude gjorde RAG nödvändigt

  1. Hallucinationsproblem - LLMs hittar på fakta utan tvekan . RAG baserar på svar i riktiga dokument
  2. Knyvets-utbrott - LLMs som tränats med data från 2021 vet inte om | | ' | händelser | МSK4 | RAG använder nuvarande dokument
  3. Privatdata - LLMs kan ' inte få tillgång till ditt företag
  4. kostnaderna - Fint-LLMs tunning är dyrt ($10KM SK3K~+). RAG är billigt | | 5 | lagring | 6 | inbäddar | 7
  5. Förklaring - RAG kan citera källor , så att den är kontrollbar och tillförlitlig

Idag (2024-2025): RAG är de facto standarden för produktions-AI-system som behöver exakthet och kontrollerability

Hur RAG fungerar: Den stora bilden

Innan vi dyker djupt in i de tekniska detaljerna ( som vi ' kommer att omfatta i del | 2), | låter ' | förstå den höga ♫ - ♫ nivån av arbetsflödet

De tre faserna

RAG-system fungerar i tre olika stadier:

Fasen 1: Indisering (En | - | Timing Settings

flowchart LR
    A[Your Documents] --> B[Split into Chunks]
    B --> C[Generate Embeddings]
    C --> D[Store in Vector DB]

    style C stroke:#f9f,stroke-width:2px
    style D stroke:#bbf,stroke-width:2px

Vad händer?

  1. Ta din kunskapsbas (docs, bloggar
  2. Splittra in i skötbara chunks (paragrafer , sektioner)
  3. Omvandla varje stycke till en vektor som inbäddar (sorter av siffror)
  4. Speichera vektorer i en databas optimerad för likhetsökning

Key concept: Samma betydelser skapar liknande vektorer , så "Dockercontainern " och "containeriseringsplattformen M SK4 hamnar nära varandra i vektorn

Fas 2: Tillförsel (Varenda fråga)

flowchart LR
    A[User Question] --> B[Generate Query Embedding]
    B --> C[Search Vector DB]
    C --> D[Top K Most Similar Chunks]

    style B stroke:#f9f,stroke-width:2px
    style C stroke:#bbf,stroke-width:2px

Vad händer?

  1. Användaren ställer en fråga
  2. Konvertera frågan till en vektor ( Samma modell som används för indexeringM SK1
  3. Hitta de mest liknande vektorerna i databasen
  4. Ge uppe K de mest relevanta skivorna ( vanligtvis 3-10)

Varför det fungerar: " Hur ska jag utsätta behållare? ?" | | ( | fråga | ) | är semantiskt lika med fragment om Dockers utplacering

Fas 3: Generering | ( | Varje fråga |)

flowchart TB
    A[User Question] --> B[Build Prompt]
    C[Retrieved Context] --> B
    B --> D[LLM]
    D --> E[Generated Answer with Citations]

    style B stroke:#f9f,stroke-width:2px
    style D stroke:#bbf,stroke-width:2px

Vad händer?

  1. Ta user's fråga
  2. Ta de hämtade kontextklossarna
  3. Konstruera en prompt : "Given this context
  4. skicka till LLM för att generera
  5. LLM ger ett svar baserat på den förmedlade kontexten

Magien: LLM kan hallucinera fakta som inte finns i sammanhanget. Det kan bara syntetisera och förklara vad

Ett enkelt exempel

Låt oss spåra en fråga genom systemet

Användaren frågar: " Hur använder jag Docker Compose?"

steg 1 - Lösning

Query embedding: [0.234, -0.891, 0.567, ...]

Search vector DB for similar embeddings...

Retrieved chunks:
1. "Docker Compose is a tool for defining multi-container applications..." (similarity: 0.92)
2. "To use Docker Compose, create a docker-compose.yml file..." (similarity: 0.87)
3. "The docker-compose up command starts all services..." (similarity: 0.83)

steg 2 - Generering

Prompt to LLM:
"Context:
[1] Docker Compose is a tool for defining multi-container applications...
[2] To use Docker Compose, create a docker-compose.yml file...
[3] The docker-compose up command starts all services...

Question: How do I use Docker Compose?

Answer (use the context above):"

LLM Response:
"To use Docker Compose [1], start by creating a docker-compose.yml file [2] that
defines your services. Then run 'docker-compose up' to start all services [3]..."

Resultat: Ett korrekt svar med implika citationer från din dokumentation.

RAG vs. Andra angreppssätt

För att förstå när man ska använda RAG ( och när man inte ska använda ) måste man jämföra det med alternativ

RAG vs. Bra-Tuning

Aspect RAG Fin - Anpassning
Nutida kunskaper Omedelbart bara uppdatera kunskapsbasen МSK2 kräver omutbildning
kostnaderna lågt ( lagring ♫ + inbäddar ♫ ) högt ♫ МSK5 GPU utbildningstid ♫
Precision Begrundat i källor Kan hallucinera
Customisering Begränsat med att få fram data djup modellanpassning
Förklaring Högt ( kan citera källor) lågt ♫ ( ♫ svarta lådan ♫
Den bästa för kunskapen-intensiva uppgifter

När ska man använda Fine-Tuning:

  • Du behöver modellen för att lära dig en specifik styl eller format
  • Du har en stor, ren datauppsättning
  • Man behöver modellen för att internalisera mönster, inte fakta
  • exempel: Att få GPT att skriva som Shakespeare

När använda RAG:

  • Du behöver faktiska precision med citat
  • Din kunskapsbas förändras ofta
  • Du har privata data
  • kostnad och enkelhet
  • exempel: Kundensupport chatbot (my companyM SK2docs ändras varje vecka

Kan du kombinera båda? Ja! BraM SK1 tur för stilen , RAG för fakta

RAG vs. Langa Kontext Windows

Moderna LLMs skryter om enorma kontextfenster (GPT-4: 128K tokensM SK3 ClaudeMST4 | | MST5 | K token | SST6 | Varför inte bara kappa alla dina dokument i kontexten

Problemet med lång kontext:

  1. kostnaderna: Pricing skalar med tokens | | - | $10-100 | per fråga ökar snabbt
  2. Tillfällighet: Processering 100K-token tar tid
  3. Förlust i mitten: LLMs kämpar för att använda information mitt i långa sammanhang
  4. Dilution: relevant information göms i oväsen
  5. Praktiska gränser: Du kan ' inte få plats med hela ditt företag

När lång kontext är logiskt:

  • Ett enda stort dokument (e.gM SK2 för att analysera ett kontrakt
  • Allt är relevant (utan behöva filtrera
  • "Kosten är inte orolig"
  • låg efterfrågans volym

När RAG är logiskt:

  • Den stora kunskapsbasen (miljoner dokument
  • Det behövs att hitta relevanta undergrupper
  • Hög efterfrågans volym (kostnader
  • Real-time-updater till kunskap

Vad man gör bäst: Använd RAG för att välja den mest relevanta innehållet

RAG vs. Prompting med exempel

Väldigt få "-", Shot prompting , "(", som ger exempel i Prompt , och МSK2 , är en enkel basnivå.

exempel prompt:

Examples:
Q: What is Docker?
A: Docker is a containerization platform...

Q: How does Kubernetes work?
A: Kubernetes orchestrates containers...

Q: What is my new question?
A: [LLM generates answer]

Begränsningar:

  • Begränsat till vad som passar i ett kontextfenster
  • Handutskrifter av exempel
  • Skalar inte till stora kunskapsbaser
  • Inget semantiskt sök - så kan du manualt välja exempel

RAG förbättring:

  • Automatiskt hittar de bästa exemplen (med hjälp av likhetssökningar)
  • Skalar till oändliga exempel ( endast uppe K skickat till LLM)
  • Adapterar till query (different queries retrieve different examples)

Man kan föreställa sig RAG som "automatiserad få -flygproppar på skalan ."

Hybridsökning: RAG + Traditionellsökning

Du kan kombinera RAG med traditionell full search -text genom Reciprocal Rank Fusion (RRF).

Varför hybrida?

  • Semantiska sökningar: Bra för konceptuella matchar (" felbekämpning
  • Keywords-sökning: Bra för exakta villkor ("Docker Compose
  • Hybrid: Den bästa av båda världarna
public async Task<List<SearchResult>> HybridSearchAsync(string query)
{
    // Run both searches in parallel
    var semanticTask = SemanticSearchAsync(query, limit: 20);
    var keywordTask = KeywordSearchAsync(query, limit: 20);

    await Task.WhenAll(semanticTask, keywordTask);

    var semanticResults = await semanticTask;
    var keywordResults = await keywordTask;

    // Combine using Reciprocal Rank Fusion
    return ApplyRRF(semanticResults, keywordResults);
}

private List<SearchResult> ApplyRRF(
    List<SearchResult> list1,
    List<SearchResult> list2,
    int k = 60)
{
    var scores = new Dictionary<string, double>();

    // Score from first list
    for (int i = 0; i < list1.Count; i++)
    {
        var id = list1[i].Id;
        scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
    }

    // Score from second list
    for (int i = 0; i < list2.Count; i++)
    {
        var id = list2[i].Id;
        scores[id] = scores.GetValueOrDefault(id, 0) + 1.0 / (k + i + 1);
    }

    // Merge and sort by combined score
    var allResults = list1.Concat(list2)
        .GroupBy(r => r.Id)
        .Select(g => g.First())
        .OrderByDescending(r => scores[r.Id])
        .ToList();

    return allResults;
}

Varför RAG spelar roll

Nu när ni förstår vad RAG är, varifrån kommer det, och hur det jämförs med alternativa, så är det viktigt

1. Demokratisering av AI

  • Du behöver inte en beskattning
  • Du behöver inte ett team av ML-ingenjörer
  • Alla utvecklare kan bygga RAG-system med existerande verktyg

2. Praktisk noggrannhet

  • Hallucinationer är det #1 problemet med LLMs i produktion
  • RAG löser det genom att basera på svar i riktiga dokument
  • Citationer gör det kontrollbart och tillförlitligt

3. alltid uppåt

  • Traditionell AI: Train once , kunskap är frusen
  • RAG: Datera upp dina dokument, kunskapsaktualiseringar omedelbart
  • Kritiskt för snabba domains

4. Privatliv och kontroll

  • Din data stannar i din infrastruktur
  • Kan köra fullständigt lokalt (lokala embeddings + lokal LLM ♫ ♫ + ♫ Lokala vektor DB ♫
  • Ingen data skickad till OpenAI eller andra cloud-provider

5. kostnad - Effektiv

  • Storage är billigt (pennies per GB)
  • Embedding är billigt (fraktioner av en cent per 1000 dokument
  • Mycket billigare än fin-passning eller långa kontextfenster

6. varierande tillämpningar

  • Semantiska sökningar ( inget LLM behövs!)
  • Q&A system med citat
  • innehållsrecommendation
  • Redare
  • kunskapsmanagement
  • Dokumentationsassistenter
  • Forskningsassistenter

slutsats : Från historien till implementation

Vi har spårat RAGs utveckling

  • Pre-2010s: Keyword search
  • 2010s: Förståelsen för läsning ( krävde rätt passage
  • 2017-2020: Omvandlare och inbäddar (medvetande → vektorer)
  • 2020: Modern RAG (avlägsna ♫ ♫ + ♫ generera ♫
  • 2023-Present: produktionsstandard

Nyckelinsikter från del 1:

  • RAG separerar kunskapslager (vector DB) från resonemang (LLM)
  • Det löser hallucinationsproblemet genom att basera reaktioner på riktiga dokument
  • Det är billigare och mer flexibelt än det fina
  • Det fungerar bättre än en lång kontext för stora kunskapsbaser
  • Det är i grund och botten

Den treste mentala modellen

  1. Omvandla text till siffror (inbäddar)
  2. Hitta liknande tal (vectorssuche)
  3. Använd vad du har funnit (display eller mata till LLM

Allt annat är optimering.

Continue to Part 2: Architecture and Internals

Ni förstår nu vad RAG är, varför det spelar roll var den kom från ".". Men hur funkar den egentligen under kapseln?

I Del 2: RAG arkitektur och inre, dyker vi djupt in i tekniska detaljer

Komplett RAG-torn

  • Fasen 1: Indexering ( textextraktion | , | blockeringsstrategier |, | embedding generation |
  • Fas 2: Tillförsel ( sökintegreringar , likhetsmätriker
  • Fasen 3: Generering ( snabbt konstruerad konstruktion, LLM-parameternM SK3 efterprocessingMSC4 bearbetande

LLM insidan:

  • Vad är tokens och varför de är viktiga för RAG
  • KV cache: Hur LLMs minns kontexten
  • Kontextfenster och tokenshanteringsstrategier
  • Optimering av RAG för tokeneffektivitet och kostnad

Teknikliga djupdykar:

  • Vektordatabaser och liknande sökalgoritmer
  • Embedding av modeller och normalisering
  • Maskerande strategier som bevarar kontext
  • Praktiska exempel på koder i C#

Continue to Part 2: Architecture and Internals →

Efter del 2, kommer du | ' | vara redo för del ♪ 3, | där vi bygger riktiga system | , | lösa vanliga problem |, | och utforska avancerade tekniker som HyDE | МSK5 | multi | - | sök RAG | , | samt kontextuell kompression |.

resurser

Grunddokument:

Weiterlesen:

Nästa i denna serie:

Fortsätt till del 2 →

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.