RAG2026-5일9차시 · 임베딩 이해16 / 19← 이전목차다음 →MetaContents

9차시. 임베딩 이해

퀴즈 1 — 임계값으로 관련 여부 판단하기

코사인이 임계값 이상이면 관련 있다고 판단하세요.

빈칸 코드에서 시작합니다.

Python
def related(score, threshold):
    pass
결과 보기 (예시 풀이)
Python
# 퀴즈 1. 코사인 유사도가 임계값 이상이면 "관련 있음"
# find_threshold.py로 구한 기준값을 실제 판단에 쓰는 함수입니다.
import math

def related(score, threshold):
    # 코사인 유사도는 클수록 가깝습니다. 그래서 "이상(>=)"으로 비교합니다.
    return score >= threshold

def cosine(v1, v2):
    # 코사인 유사도 = 내적 ÷ (길이 × 길이). numpy 없이 같은 계산을 합니다.
    dot = sum(a * b for a, b in zip(v1, v2))
    len1 = math.sqrt(sum(a * a for a in v1))
    len2 = math.sqrt(sum(b * b for b in v2))
    return dot / (len1 * len2)

# 수업 자료 2-2)의 앞 세 숫자만 빌린 가짜 벡터입니다. (실제는 1536개)
refund = [0.21, -0.88, 0.05]   # "환불 규정"
returns = [0.19, -0.85, 0.08]  # "반품 절차"
lunch = [-0.72, 0.31, 0.66]    # "점심 메뉴"

THRESHOLD = 0.47  # 수업 자료 6절의 권장 임계값 예시

# 확인 1: 뜻이 비슷한 쌍 → 점수가 높고 True
s = cosine(refund, returns)
print(f"환불 규정 ↔ 반품 절차: {s:.3f}", related(s, THRESHOLD))

# 확인 2: 무관한 쌍 → 점수가 낮고 False
s = cosine(refund, lunch)
print(f"환불 규정 ↔ 점심 메뉴: {s:.3f}", related(s, THRESHOLD))

# 확인 3: 임계값과 똑같은 점수는 관련 있음으로 봅니다
print(related(0.47, THRESHOLD))

실행 결과

출력
환불 규정 ↔ 반품 절차: 0.999 True
환불 규정 ↔ 점심 메뉴: -0.421 False
True

채점 기준: 작을수록 가까운 거리 점수에는 이 함수를 쓰면 안 된다.

관련 교안: 9차시 「6. 실습 ③ — 내 기준선 찾기」

← 이전 절9차시 · 실습 1 — 임베딩 이해 실습 따라 하기다음 절 →9차시 · 퀴즈 2 — 모델이 바뀌면 인덱스 다시 만들기