Bird
Raised Fist0
Prompt Engineering / GenAIml~10 mins

Vector similarity metrics in Prompt Engineering / GenAI - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to calculate the cosine similarity between two vectors.

Prompt Engineering / GenAI
from numpy import dot
from numpy.linalg import norm

def cosine_similarity(vec1, vec2):
    return dot(vec1, vec2) / (norm(vec1) [1] norm(vec2))
Drag options to blanks, or click blank then click option'
A*
B+
C-
D/
Attempts:
3 left
💡 Hint
Common Mistakes
Using addition instead of multiplication between the norms.
Dividing one norm by the other instead of multiplying.
2fill in blank
medium

Complete the code to compute the Euclidean distance between two vectors.

Prompt Engineering / GenAI
import numpy as np

def euclidean_distance(vec1, vec2):
    return np.sqrt(np.sum((vec1 - vec2) [1] 2))
Drag options to blanks, or click blank then click option'
A+
B**
C*
D//
Attempts:
3 left
💡 Hint
Common Mistakes
Using multiplication '*' instead of exponent '**'.
Using integer division '//' which causes errors.
3fill in blank
hard

Fix the error in the code to calculate the Manhattan distance between two vectors.

Prompt Engineering / GenAI
import numpy as np

def manhattan_distance(vec1, vec2):
    return np.sum(np.abs(vec1 [1] vec2))
Drag options to blanks, or click blank then click option'
A/
B+
C*
D-
Attempts:
3 left
💡 Hint
Common Mistakes
Using addition instead of subtraction inside the absolute value.
Using multiplication or division which are incorrect here.
4fill in blank
hard

Fill both blanks to create a dictionary of word vectors filtered by length greater than 3.

Prompt Engineering / GenAI
words = ['cat', 'house', 'tree', 'sun']
vectors = {'cat': [1,2], 'house': [3,4], 'tree': [5,6], 'sun': [7,8]}
filtered_vectors = {word: vectors[word] for word in words if [1] [2] 3}
Drag options to blanks, or click blank then click option'
Alen(word)
Bword
C>
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using the word itself instead of its length.
Using less than '<' instead of greater than '>'.
5fill in blank
hard

Fill all three blanks to create a dictionary of words and their vector lengths filtered by length greater than 3.

Prompt Engineering / GenAI
words = ['dog', 'elephant', 'bird', 'ant']
vectors = {'dog': [1,1,1], 'elephant': [2,2,2], 'bird': [3,3,3], 'ant': [4,4,4]}
result = [1]: [2] for word in words if len(word) [3] 3
Drag options to blanks, or click blank then click option'
Aword
Blen(vectors[word])
C>
Dword.upper()
Attempts:
3 left
💡 Hint
Common Mistakes
Using the word as key without uppercase.
Using the word length instead of vector length as value.
Using '<' instead of '>' in the condition.

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