Tính Ma Trận Khoảng Cách Cặp Đôi Pairwise Thuần Vector Hóa
Trong hệ thống tìm kiếm vector (Vector Database) tại AI Empire Academy, ta có tập hợp N câu truy vấn và M đoạn văn bản, mỗi phần tử được nhúng thành một vector D chiều. Ta cần tính…
Tiến độ của tôi ở bài này
Điểm đượ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ủ đề
Kiến thức tiên quyết: matrix algebra, l2 norm, broadcasting.
Nội dung đề bài
Mục tiêu kiến thức
- Khai triển hằng đẳng thức vector |a - b|2 = |a|2 + |b|2 - 2(a · b) để chuyển bài toán khoảng cách cặp đôi thành phép nhân ma trận tối ưu BLAS.
- Tính toán Khoảng cách Cosine (Cosine Distance) giữa hai tập vector embedding trong các hệ thống RAG (Retrieval-Augmented Generation).
- Xử lý lỗi làm tròn số thực dẫn đến giá trị âm nhỏ dưới dấu căn bằng
np.maximum().
Mô tả bài toán
Trong hệ thống tìm kiếm vector (Vector Database) tại AI Empire Academy, ta có tập hợp N câu truy vấn và M đoạn văn bản, mỗi phần tử được nhúng thành một vector D chiều. Ta cần tính khoảng cách giữa mọi cặp (ui, vj) để tạo thành ma trận khoảng cách kích thước N × M.
Hãy viết hàm: pairwise_distances(A: np.ndarray, B: np.ndarray, metric: str = "euclidean") -> np.ndarray
Quy tắc:
- Kiểm tra tham số:
Acó shape(N, D),Bcó shape(M, D).- Nếu $A.ndim
e 2hoặcB.ndim e 2hoặcA.shape[1] e B.shape[1]$: ném ngoại lệ ValueError("Kich thuoc chieu dac trung khong khop").
- Nếu
metric.lower()không thuộc{"euclidean", "cosine"}: ném ngoại lệValueError("Metric khong hop le"). - Khoảng cách Euclidean:
- Dùng công thức khai triển ma trận:
A2 = ∑ A2 (shape (N, 1)) B2 = ∑ B2 (shape (1, M)) D2 = max(A2 + B2 - 2(A BT), 0.0)
- Trả về √(D2) shape
(N, M). - Khoảng cách Cosine:
- Chuẩn hóa L2 từng vector trong A và B (với hằng số chống chia 0 ε = 1e-12).
- Tính ma trận tương đồng cosine S = Anorm BnormT.
- Trả về khoảng cách cosine: 1.0 - S shape
(N, M). - Yêu cầu hiệu năng:
- Tuyệt đối không dùng bất kỳ vòng lặp
fornào.
Input
- Các tham số truyền vào hàm/lớp pairwise_distances hoặc dữ liệu đầu vào theo định dạng mô tả.
Output
- Kết quả trả về của hàm/lớp pairwise_distances hoặc dữ liệu in ra màn hình theo đúng đặc tả.
Ràng buộc
- 1 ≤ N, M ≤ 2000.
- 1 ≤ D ≤ 512.
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
Ví dụ 1
Input
pairwise_distances(A=[[0.0, 0.0], [1.0, 1.0]], B=[[0.0, 0.0], [1.0, 1.0]], metric='euclidean')Output
TrueGiải thích
Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
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.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
