ai-405Đọc toàn bộ đề miễn phí

Độ tương đồng cosine giữa hai vector

Trong hệ truy hồi vector, mỗi tài liệu và mỗi câu hỏi được biểu diễn bằng một

AICơ bản10 phút

Tiến độ của tôi ở bài này

Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

numpyembeddingretrievalentry-ramp

Kiến thức tiên quyết: python-basics, numpy-vector-operations.

Nội dung đề bài

Mô tả bài toán

Trong hệ truy hồi vector, mỗi tài liệu và mỗi câu hỏi được biểu diễn bằng một embedding. Độ tương đồng cosine đo góc giữa hai embedding, nhờ đó ta so khớp câu hỏi với tài liệu mà không bị ảnh hưởng bởi độ dài (độ lớn) của từng vector.

Yêu cầu

Viết hàm cosine_similarity(a, b) nhận hai vector cùng số chiều và trả về cosin của góc giữa chúng dưới dạng số thực.

Quy ước nộp bài

Nộp hàm cosine_similarity trong solution.py. Hệ thống gọi hàm trực tiếp, so giá trị với sai số 1e-6; không đọc stdin và không in ra stdout.

Input

  • a: vector thứ nhất, một dãy số.
  • b: vector thứ hai, cùng độ dài với a.

Output

Một số thực bằng dot(a, b) / (||a|| * ||b||), trong đó ||.|| là chuẩn Euclid.

Ràng buộc

  • Hai vector phải cùng độ dài và khác rỗng; ném ValueError nếu độ dài khác nhau.
  • Nếu một vector có chuẩn bằng 0 thì cosin không xác định; ném ValueError.
  • Chỉ dùng NumPy cho phép tính vector, không viết vòng lặp Python cộng từng phần tử.

Ví dụ 1

Input

cosine_similarity(a=[1, 0], b=[0, 1])

Output

0.0

Ví dụ 2

Input

cosine_similarity(a=[1, 2, 3], b=[1, 2, 3])

Output

1.0

Giải thích

Với a = [1, 0] và b = [1, 1], tích vô hướng bằng 1, hai chuẩn bằng 1 và sqrt(2), nên kết quả là 0.7071067811865476.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.

Nhóm Zalo