Intermediate10 min read18 of 40

Self-RAG

The smart decision maker — decides if retrieval is needed, filters irrelevant docs, generates multiple answers, and picks the best one.

Read first:Simple RAG

Overview

PropertyDetail
PatternSelf-RAG — The Smart Decision Maker
Level3 (Better retrieval decisions)
Key InnovationDecides IF retrieval is needed, then filters + scores
LLM Calls5+ (assess, filter, generate multiple, score, select)
Notebook19_Self_RAG.ipynb

Architecture

flowchart TD
    A[User Query] --> B{"Do I need to retrieve docs?"}
    B -->|No| C[Answer from Model Knowledge]
    B -->|Yes| D[Retrieve from Qdrant]
    D --> E{"Filter: Is each doc relevant?"}
    E --> F["Doc 1: Relevant"]
    E --> G["Doc 2: Relevant"]
    E --> H["Doc 3: Irrelevant — Discard"]
    F --> I[Generate 3 Candidate Answers]
    G --> I
    I --> J["Score Each: Utility 1-5"]
    J --> K["Answer A: 3/5"]
    J --> L["Answer B: 4/5 — WINNER"]
    J --> M["Answer C: 3/5"]
    L --> N[Return Best Answer]

Test Results (Actual Notebook Output)

QueryRetrieval Needed?Docs RetrievedDocs RelevantResult
"Impact of climate change?"NoAnswered from model knowledge
"How did Harry beat Quirrell?"Yes30 (all irrelevant)Answered from knowledge
"International agreements?"Yes33 (all relevant)Generated 3 answers → picked best (utility 4/5)

Decision Logic

ConditionAction
Model already knows the answerSkip retrieval (save time + cost)
Retrieved docs are irrelevantDiscard them, answer from knowledge
Retrieved docs are relevantGenerate multiple answers, score, return best

Self-RAG vs Simple RAG

AspectSimple RAGSelf-RAG
RetrievalAlways retrievesDecides if needed
Relevance checkNoneFilters each doc
Answers generated1Multiple (picks best)
Off-topic queriesReturns noiseHandles gracefully
LLM calls15+
CostLowHigher

When to Use

ScenarioUse Self-RAG?
Mixed query types (some need docs, some don't)Yes
Questions that may be outside your corpusYes
Need highest single-answer qualityYes
Latency-critical applicationNo — too many LLM calls
Simple factual lookupNo — overkill

Tech Stack

ComponentTechnology
EmbeddingsAWS Bedrock — Amazon Titan Embed Text v2 (1024 dims)
LLMAWS Bedrock — Claude Sonnet (cross-region inference)
Vector DBQdrant Cloud (cosine similarity)
PDF ReaderPyMuPDF (fitz)
FrameworkLangChain

Source