
18번 코사인 행렬 의 실전 응용. 행렬을 계산해서 각 쿼리마다 상위 k개의 이웃 인덱스 를 돌려주는 패턴은 벡터 검색 의 가장 기본 루프입니다:
(N_query, N_db).k 인덱스 선택.argsort 는 오름차순이므로 -sim 쓰거나 [:, -k:] 를 뒤집는다.
함수 top_k_cosine(X_query, X_db, k) 를 완성하세요.
X_query shape (N_query, D), X_db shape (N_db, D).(N_query, k) 정수 인덱스 배열. 각 행은 유사도 내림차순.| # | 이름 | 검증 |
|---|---|---|
| 1 | shape (Nq, k) | 정확 |
| 2 | query ⊂ db 이면 top-1 == 자기자신 | 완벽 일치 행은 1위 |
| 3 | k = 1 의 각 결과가 argmax 와 일치 | 수동 계산으로 확인 |
| 4 | 인덱스 유효성 | 0 ≤ idx < N_db |
| 5 | 내림차순 순서 | cos[top_k[:, 0]] ≥ cos[top_k[:, 1]] ≥ ... |
코드를 작성하고 Run 을 눌러보세요.