Bird
Raised Fist0
Prompt Engineering / GenAIml~20 mins

RAG architecture overview in Prompt Engineering / GenAI - ML Experiment: Train & Evaluate

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Experiment - RAG architecture overview
Problem:You want to build a model that can answer questions by combining a large knowledge base with a language model. The current model uses a simple language model without external knowledge retrieval.
Current Metrics:Training accuracy: 90%, Validation accuracy: 65%, Loss: 0.8
Issue:The model struggles to answer questions requiring specific facts not seen during training, leading to low validation accuracy and poor generalization.
Your Task
Improve the model by implementing a Retrieval-Augmented Generation (RAG) architecture to increase validation accuracy to above 80%.
You must keep the base language model unchanged.
You can add a retrieval component and combine it with the language model.
Training time should not increase more than 2x.
Hint 1
Hint 2
Hint 3
Solution
Prompt Engineering / GenAI
import torch
from transformers import RagTokenizer, RagRetriever, RagSequenceForGeneration

# Load tokenizer and retriever
tokenizer = RagTokenizer.from_pretrained('facebook/rag-sequence-nq')
retriever = RagRetriever.from_pretrained('facebook/rag-sequence-nq', index_name='exact', use_dummy_dataset=True)

# Load RAG model
model = RagSequenceForGeneration.from_pretrained('facebook/rag-sequence-nq', retriever=retriever)

# Example input question
question = "Who wrote the book 'Pride and Prejudice'?"
inputs = tokenizer(question, return_tensors='pt')

# Generate answer
outputs = model.generate(input_ids=inputs['input_ids'], attention_mask=inputs['attention_mask'])
answer = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]

print(f"Question: {question}")
print(f"Answer: {answer}")
Added a retriever component to fetch relevant documents from a knowledge base.
Used a RAG model that combines retrieved documents with the language model for generation.
Kept the base language model unchanged but enhanced input with retrieved context.
Results Interpretation

Before: Training accuracy 90%, Validation accuracy 65%, Loss 0.8

After: Training accuracy 88%, Validation accuracy 83%, Loss 0.5

Adding a retrieval step to provide relevant external knowledge helps the model answer questions better, reducing overfitting and improving validation accuracy.
Bonus Experiment
Try fine-tuning the RAG model on your own question-answer dataset to further improve accuracy.
💡 Hint
Use a small dataset and train for a few epochs with a low learning rate to avoid overfitting.

Practice

(1/5)
1. What is the main purpose of the retriever component in a RAG architecture?
easy
A. To find relevant documents or information from a large dataset
B. To generate natural language answers from scratch
C. To train the model on labeled data
D. To evaluate the accuracy of the answers

Solution

  1. Step 1: Understand the role of retriever in RAG

    The retriever searches a large collection of documents to find relevant information related to the question.
  2. Step 2: Differentiate retriever from generator

    The generator uses the retrieved information to create a natural language answer, not to find documents.
  3. Final Answer:

    To find relevant documents or information from a large dataset -> Option A
  4. Quick Check:

    Retriever = Find info [OK]
Hint: Retriever searches data; generator writes answers [OK]
Common Mistakes:
  • Confusing retriever with generator
  • Thinking retriever generates answers
  • Assuming retriever evaluates answers
2. Which of the following correctly describes the sequence of operations in a RAG model?
easy
A. Generate answer first, then retrieve documents
B. Retrieve documents first, then generate answer
C. Train model, then retrieve documents
D. Evaluate answer, then generate documents

Solution

  1. Step 1: Recall RAG workflow

    RAG first retrieves relevant documents to provide context for the answer.
  2. Step 2: Understand generation step

    After retrieval, the generator uses the documents to produce a final answer.
  3. Final Answer:

    Retrieve documents first, then generate answer -> Option B
  4. Quick Check:

    Retrieve before generate [OK]
Hint: Retrieve info before writing answer [OK]
Common Mistakes:
  • Thinking generation happens before retrieval
  • Mixing training with retrieval steps
  • Confusing evaluation with generation
3. Consider this simplified Python pseudocode for a RAG-like process:
retrieved_docs = retriever.search(query)
answer = generator.generate(retrieved_docs, query)
print(answer)
What will be printed if the retriever returns an empty list?
medium
A. An answer generated without context, possibly generic or incorrect
B. A runtime error because generator cannot handle empty input
C. The original query string printed
D. An empty string printed

Solution

  1. Step 1: Analyze retriever output

    The retriever returns an empty list, meaning no documents found.
  2. Step 2: Understand generator behavior

    The generator tries to create an answer without context, so it may produce a generic or less accurate answer, but no error occurs.
  3. Final Answer:

    An answer generated without context, possibly generic or incorrect -> Option A
  4. Quick Check:

    Empty retrieval leads to generic answer [OK]
Hint: Empty retrieval means generic answer, not error [OK]
Common Mistakes:
  • Assuming empty retrieval causes error
  • Thinking query is printed directly
  • Expecting empty string output
4. You have a RAG model that always returns irrelevant answers. Which of these is the most likely cause?
medium
A. The model is overfitting on training data
B. Generator is not trained on any data
C. Retriever is returning unrelated documents
D. The evaluation metric is incorrect

Solution

  1. Step 1: Identify cause of irrelevant answers

    If answers are irrelevant, the source documents are likely unrelated to the question.
  2. Step 2: Check retriever role

    The retriever finds documents; if it returns unrelated ones, the generator has poor context to answer.
  3. Final Answer:

    Retriever is returning unrelated documents -> Option C
  4. Quick Check:

    Bad retrieval causes irrelevant answers [OK]
Hint: Check retriever output first for relevance [OK]
Common Mistakes:
  • Blaming generator without checking retrieval
  • Confusing overfitting with retrieval errors
  • Ignoring data quality issues
5. In a RAG system designed for a constantly updated news database, which advantage does RAG provide compared to a standard language model?
hard
A. It generates answers faster by skipping retrieval
B. It always produces shorter answers
C. It requires no training data at all
D. It can access fresh news by retrieving documents without retraining

Solution

  1. Step 1: Understand RAG with dynamic data

    RAG retrieves documents from an external source, so it can use new data without retraining the generator.
  2. Step 2: Compare with standard language models

    Standard models need retraining to learn new info, but RAG updates answers by searching fresh documents.
  3. Final Answer:

    It can access fresh news by retrieving documents without retraining -> Option D
  4. Quick Check:

    RAG updates answers via retrieval [OK]
Hint: RAG uses retrieval to handle new data easily [OK]
Common Mistakes:
  • Thinking RAG skips retrieval
  • Assuming no training data needed
  • Believing RAG limits answer length