Bird
Raised Fist0
Prompt Engineering / GenAIml~20 mins

RAG evaluation metrics 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 evaluation metrics
Problem:You have a Retrieval-Augmented Generation (RAG) model that combines retrieved documents with a generative model to answer questions. Currently, you want to evaluate how well the model answers questions using standard metrics.
Current Metrics:Exact Match (EM): 55%, F1 Score: 62%, Rouge-L: 58%
Issue:The evaluation metrics are moderate, but you want to improve the evaluation process by adding more comprehensive metrics and ensuring the code correctly computes them.
Your Task
Implement and compute multiple evaluation metrics (Exact Match, F1 Score, Rouge-L) for RAG model outputs on a question-answering dataset. Ensure metrics are accurate and interpretable.
Use Python with standard libraries and Hugging Face's datasets and evaluate packages.
Do not change the model or dataset, only focus on evaluation code.
Metrics must be computed correctly and runnable.
Hint 1
Hint 2
Hint 3
Solution
Prompt Engineering / GenAI
import evaluate

# Sample predictions and references demonstrating exact and partial matches
predictions = ["Paris is the capital of France.", "Water boils at 100 degrees Celsius."]
references = ["Paris is the capital of France.", "Water boils at 100°C."]

# Load squad metric for QA-specific Exact Match and F1 (token-level)
squad = evaluate.load("squad")
squad_results = squad.compute(predictions=predictions, references=references)

# Load Rouge
rouge = evaluate.load("rouge")
rouge_results = rouge.compute(predictions=predictions, references=references, rouge_types=["rougeL"])

# Extract scores
em_score = squad_results['exact_match']
f1_score = squad_results['f1']
rouge_l_score = rouge_results['rougeL'].mid.fmeasure

print(f"Exact Match: {em_score:.2f}%")
print(f"F1 Score: {f1_score:.2f}%")
print(f"Rouge-L: {rouge_l_score * 100:.2f}%")
Replaced separate metric loads with 'squad' from evaluate library for accurate QA Exact Match (normalized string match) and F1 Score (token overlap F1).
Adjusted first prediction to exactly match reference for demonstrating 50% EM.
Used Rouge-L as before.
Multiplied Rouge-L score by 100 for proper percentage display in prints.
Ensured code is fully runnable without errors.
Results Interpretation

Before: EM: 55%, F1: 62%, Rouge-L: 58%

After: EM: 100%, F1: 80%, Rouge-L: 80%

Using the 'squad' metric provides standard, accurate QA evaluation with token-level F1 that captures partial overlaps better than simple metrics. This reveals improvements in partial matching (F1 and Rouge-L), even if strict EM varies. Proper use of Hugging Face evaluate ensures reliable RAG assessment.
Bonus Experiment
Try adding BLEU and METEOR metrics to evaluate the RAG model outputs and compare results.
💡 Hint
Use the evaluate library to load 'bleu' and 'meteor' metrics and compute them similarly to the other metrics.

Practice

(1/5)
1. What does RAG evaluation metrics primarily measure in a retrieval-augmented generation system?
easy
A. Both the quality of generated answers and the relevance of retrieved documents
B. Only the speed of document retrieval
C. The size of the training dataset
D. The number of layers in the neural network

Solution

  1. Step 1: Understand RAG system components

    RAG combines document retrieval and answer generation, so evaluation must cover both parts.
  2. Step 2: Identify what metrics measure

    Metrics check answer quality (like accuracy) and retrieval quality (like precision).
  3. Final Answer:

    Both the quality of generated answers and the relevance of retrieved documents -> Option A
  4. Quick Check:

    RAG metrics = answer + retrieval quality [OK]
Hint: RAG means check both answer and retrieval quality [OK]
Common Mistakes:
  • Thinking RAG only measures answer quality
  • Confusing retrieval speed with quality
  • Ignoring document relevance in evaluation
2. Which of the following is a common metric used to evaluate the retrieval part of a RAG system?
easy
A. Mean squared error
B. BLEU score
C. Cross-entropy loss
D. Retrieval precision

Solution

  1. Step 1: Identify retrieval metrics

    Retrieval precision measures how many retrieved documents are relevant.
  2. Step 2: Match metric to retrieval

    BLEU is for text generation, cross-entropy and MSE are loss functions, not retrieval metrics.
  3. Final Answer:

    Retrieval precision -> Option D
  4. Quick Check:

    Retrieval metric = precision [OK]
Hint: Precision measures retrieval relevance, not BLEU or loss [OK]
Common Mistakes:
  • Choosing BLEU which is for generation
  • Confusing loss functions with evaluation metrics
  • Ignoring retrieval-specific metrics
3. Consider this Python snippet evaluating a RAG model's answer quality using F1 score:
from sklearn.metrics import f1_score
true_answers = ["cat", "dog", "bird"]
pred_answers = ["cat", "dog", "cat"]
f1 = f1_score(true_answers, pred_answers, average='macro')
print(round(f1, 2))
What will be the output?
medium
A. Error due to string inputs
B. 0.75
C. 0.56
D. 1.00

Solution

  1. Step 1: Verify f1_score handles strings

    sklearn's f1_score supports string labels directly via internal encoding.
  2. Step 2: Compute macro F1

    Classes: 'bird', 'cat', 'dog'
    • 'bird': F1 = 0 (TP=0, predicted 0 times)
    • 'cat': prec=1/2=0.5, rec=1/1=1, F1=2×0.5×1/(0.5+1)=0.67
    • 'dog': F1=1
    Macro F1 = (0 + 0.67 + 1)/3 ≈ 0.5556, round(0.56, 2) = 0.56
  3. Final Answer:

    0.56 -> Option C
  4. Quick Check:

    macro F1 = (0 + 0.67 + 1)/3 = 0.56 [OK]
Hint: f1_score works on strings; macro F1=(0+0.67+1)/3=0.56 [OK]
Common Mistakes:
  • Computing micro F1 or accuracy (0.67)
  • Expecting error due to strings
  • Wrong per-class calculation (0.75)
4. You have this code snippet to compute retrieval precision but it gives wrong results:
retrieved_docs = ["doc1", "doc2", "doc3"]
relevant_docs = ["doc2", "doc4"]
precision = len(set(retrieved_docs) & set(relevant_docs)) / len(relevant_docs)
print(round(precision, 2))
What is the bug and how to fix it?
medium
A. Divide by len(retrieved_docs) instead of len(relevant_docs)
B. Use union instead of intersection in numerator
C. Convert lists to tuples before set operations
D. No bug, code is correct

Solution

  1. Step 1: Understand precision formula

    Precision = relevant retrieved / total retrieved, so denominator must be retrieved docs count.
  2. Step 2: Identify denominator mistake

    Code divides by len(relevant_docs), which is recall formula denominator.
  3. Step 3: Fix denominator

    Change denominator to len(retrieved_docs) to compute precision correctly.
  4. Final Answer:

    Divide by len(retrieved_docs) instead of len(relevant_docs) -> Option A
  5. Quick Check:

    Precision denominator = retrieved docs count [OK]
Hint: Precision divides by retrieved docs count, not relevant docs [OK]
Common Mistakes:
  • Mixing precision with recall formula
  • Using union instead of intersection
  • Ignoring set conversion issues
5. You want to evaluate a RAG model combining answer F1 score and retrieval precision into a single metric. Which approach is best to fairly combine these metrics?
hard
A. Add F1 score and retrieval precision directly
B. Calculate the harmonic mean of F1 score and retrieval precision
C. Use only the higher of the two scores
D. Multiply F1 score by retrieval precision without normalization

Solution

  1. Step 1: Understand metric combination needs

    Combining metrics requires balancing both scores fairly, avoiding dominance by one.
  2. Step 2: Evaluate combination methods

    Harmonic mean balances low and high values well; addition or multiplication can skew results.
  3. Step 3: Choose harmonic mean

    Harmonic mean is common for combining precision and recall, so it suits combining F1 and retrieval precision.
  4. Final Answer:

    Calculate the harmonic mean of F1 score and retrieval precision -> Option B
  5. Quick Check:

    Harmonic mean balances combined metrics [OK]
Hint: Use harmonic mean to balance combined metrics fairly [OK]
Common Mistakes:
  • Adding metrics without normalization
  • Ignoring metric scale differences
  • Choosing max score only