Bird
Raised Fist0
Prompt Engineering / GenAIml~20 mins

Vector similarity metrics in Prompt Engineering / GenAI - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Vector Similarity Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Understanding Cosine Similarity

Which statement best describes what cosine similarity measures between two vectors?

AThe angle between the two vectors, indicating how similar their directions are regardless of length.
BThe difference in length between the two vectors, ignoring their direction.
CThe sum of the element-wise differences between the two vectors.
DThe Euclidean distance between the two vectors.
Attempts:
2 left
💡 Hint

Think about how cosine similarity relates to the angle formed by vectors.

Predict Output
intermediate
2:00remaining
Output of Euclidean Distance Calculation

What is the output of the following Python code that calculates Euclidean distance between two vectors?

Prompt Engineering / GenAI
import numpy as np
v1 = np.array([1, 2, 3])
v2 = np.array([4, 6, 3])
distance = np.linalg.norm(v1 - v2)
print(round(distance, 2))
A4.47
B5.0
C7.0
D3.0
Attempts:
2 left
💡 Hint

Calculate the square root of the sum of squared differences.

Metrics
advanced
2:00remaining
Choosing the Best Similarity Metric for Sparse Vectors

You have very sparse high-dimensional vectors representing text documents. Which similarity metric is generally best suited to compare these vectors?

AJaccard similarity, because it measures overlap of non-zero elements.
BEuclidean distance, because it measures absolute distance in space.
CManhattan distance, because it sums absolute differences.
DCosine similarity, because it focuses on the angle and ignores magnitude differences.
Attempts:
2 left
💡 Hint

Think about which metric handles sparse data and presence/absence well.

🔧 Debug
advanced
2:00remaining
Debugging Incorrect Cosine Similarity Calculation

What error does this code raise when calculating cosine similarity between two vectors?

Prompt Engineering / GenAI
import numpy as np
v1 = np.array([1, 0, 0])
v2 = np.array([0, 0, 0])
cos_sim = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
print(cos_sim)
ATypeError because np.dot cannot multiply arrays.
BZeroDivisionError because one vector has zero length.
CValueError because vectors have different shapes.
DNo error, output is nan.
Attempts:
2 left
💡 Hint

Check what happens when a vector has zero length in the denominator.

Model Choice
expert
2:00remaining
Selecting a Similarity Metric for Image Feature Vectors

You have feature vectors extracted from images using a deep neural network. These vectors are dense and normalized to unit length. Which similarity metric is most appropriate to compare these vectors for image retrieval?

AJaccard similarity, because it measures overlap of features.
BEuclidean distance, because it measures absolute difference in features.
CCosine similarity, because vectors are normalized and direction matters most.
DManhattan distance, because it sums absolute differences.
Attempts:
2 left
💡 Hint

Consider the effect of normalization on distance metrics.

Practice

(1/5)
1. Which vector similarity metric measures the angle between two vectors to determine how similar they are?
easy
A. Manhattan distance
B. Euclidean distance
C. Cosine similarity
D. Jaccard similarity

Solution

  1. Step 1: Understand cosine similarity

    Cosine similarity measures the cosine of the angle between two vectors, showing how aligned they are.
  2. Step 2: Compare with other metrics

    Euclidean and Manhattan distances measure gaps, not angles. Jaccard is for sets, not vectors.
  3. Final Answer:

    Cosine similarity -> Option C
  4. Quick Check:

    Angle-based similarity = Cosine similarity [OK]
Hint: Angle means cosine similarity, distance means Euclidean [OK]
Common Mistakes:
  • Confusing distance with angle measurement
  • Thinking Euclidean measures angle
  • Mixing set similarity with vector similarity
2. Which of the following is the correct Python expression to compute cosine similarity between two vectors a and b using numpy?
easy
A. np.linalg.norm(a - b)
B. np.dot(a, b) * (np.linalg.norm(a) + np.linalg.norm(b))
C. np.sum(np.abs(a - b))
D. np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

Solution

  1. Step 1: Recall cosine similarity formula

    Cosine similarity = dot product of vectors divided by product of their lengths (norms).
  2. Step 2: Match formula to code

    np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)) matches this formula exactly. np.linalg.norm(a - b) is Euclidean distance, C is Manhattan distance, D is incorrect formula.
  3. Final Answer:

    np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)) -> Option D
  4. Quick Check:

    Dot product over norms = cosine similarity [OK]
Hint: Cosine = dot product divided by norms product [OK]
Common Mistakes:
  • Using subtraction instead of dot product
  • Multiplying norms instead of dividing
  • Confusing Euclidean with cosine formula
3. Given vectors a = np.array([1, 2, 3]) and b = np.array([4, 5, 6]), what is the output of np.linalg.norm(a - b)?
medium
A. 3.742
B. 5.196
C. 15.0
D. 32.0

Solution

  1. Step 1: Calculate vector difference

    a - b = [1-4, 2-5, 3-6] = [-3, -3, -3]
  2. Step 2: Compute Euclidean norm

    Norm = sqrt((-3)^2 + (-3)^2 + (-3)^2) = sqrt(9+9+9) = sqrt(27) ≈ 5.196
  3. Final Answer:

    5.196 -> Option B
  4. Quick Check:

    Euclidean distance = 5.196 [OK]
Hint: Euclidean norm = sqrt(sum of squared differences) [OK]
Common Mistakes:
  • Forgetting to square differences
  • Calculating sum instead of sqrt of sum
  • Mixing up vector subtraction order
4. Identify the error in this Python code snippet for cosine similarity:
import numpy as np

def cosine_sim(a, b):
    return np.dot(a, b) / np.linalg.norm(a) + np.linalg.norm(b)

print(cosine_sim(np.array([1, 0]), np.array([0, 1])))
medium
A. The denominator should multiply norms, not add them
B. np.dot is used incorrectly; should be np.cross
C. Vectors must be normalized before dot product
D. Function is missing return statement

Solution

  1. Step 1: Analyze denominator in formula

    The code adds norms: np.linalg.norm(a) + np.linalg.norm(b), but cosine similarity divides by their product.
  2. Step 2: Understand correct formula

    Cosine similarity = dot(a,b) / (norm(a) * norm(b)), so addition is wrong here.
  3. Final Answer:

    The denominator should multiply norms, not add them -> Option A
  4. Quick Check:

    Denominator = product of norms [OK]
Hint: Denominator in cosine similarity multiplies norms [OK]
Common Mistakes:
  • Adding norms instead of multiplying
  • Using cross product instead of dot product
  • Forgetting to return value
5. You have two text documents represented as vectors: doc1 = [1, 0, 2, 1] and doc2 = [0, 1, 1, 1]. Which similarity metric is best to find how similar their topics are, and why?
hard
A. Cosine similarity, because it measures angle ignoring length differences
B. Euclidean distance, because it measures exact gap between vectors
C. Manhattan distance, because it sums absolute differences
D. Jaccard similarity, because it compares set overlap

Solution

  1. Step 1: Understand vector meaning in text

    Vectors represent word counts or weights; length can vary by document size.
  2. Step 2: Choose metric ignoring length but capturing direction

    Cosine similarity measures angle, so it focuses on topic similarity ignoring document length differences.
  3. Final Answer:

    Cosine similarity, because it measures angle ignoring length differences -> Option A
  4. Quick Check:

    Topic similarity = cosine similarity [OK]
Hint: For text, angle-based similarity works best [OK]
Common Mistakes:
  • Using Euclidean which is sensitive to length
  • Confusing set similarity with vector similarity
  • Ignoring document length effect