Sắp xếp theo độ tương đồng
Giờ bạn đã nhúng xong tất cả đặc trưng, bước tiếp theo là tính độ tương đồng. Trong bài tập này, bạn sẽ định nghĩa hàm find_n_closest(), hàm này tính khoảng cách cosine giữa một vector truy vấn và danh sách các embedding, rồi trả về n khoảng cách nhỏ nhất kèm theo chỉ số của chúng.
Ở bài tập kế tiếp, bạn sẽ dùng hàm này để xây dựng ứng dụng tìm kiếm ngữ nghĩa cho sản phẩm.
distance đã được nhập từ scipy.spatial.
Bài tập này là một phần của khóa học
Nhập môn Embeddings với OpenAI API
Hướng dẫn bài tập
- Tính khoảng cách cosine giữa
query_vectorvàembedding. - Thêm vào danh sách
distancesmột dictionary chứadistvàindexcủa nó. - Sắp xếp danh sách
distancestheo khóa'distance'của mỗi dictionary. - Trả về
nphần tử đầu tiên trongdistances_sorted.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
def find_n_closest(query_vector, embeddings, n=3):
distances = []
for index, embedding in enumerate(embeddings):
# Calculate the cosine distance between the query vector and embedding
dist = ____
# Append the distance and index to distances
distances.append({"distance": ____, "index": ____})
# Sort distances by the distance key
distances_sorted = ____
# Return the first n elements in distances_sorted
return ____