Tìm kiếm ngữ nghĩa cho sản phẩm
Đến lúc dùng hàm find_n_closest() của bạn rồi! Bạn sẽ thử tìm kiếm ngữ nghĩa cho sản phẩm với một truy vấn thử, tính ra danh sách đã sắp xếp gồm năm sản phẩm có mức độ tương đồng ngữ nghĩa cao nhất, dựa trên dữ liệu đã làm giàu mà bạn cung cấp cho mô hình.
Dưới đây là lời nhắc về hàm find_n_closest() bạn đã tạo ở bài trước:
def find_n_closest(query_vector, embeddings, n=3):
distances = []
for index, embedding in enumerate(embeddings):
distance = spatial.distance.cosine(query_vector, embedding)
distances.append({"distance": distance, "index": index})
distances_sorted = sorted(distances, key=lambda x: x["distance"])
return distances_sorted[0:n]
Hàm create_embeddings() bạn đã tạo trước đó cũng sẵn có. Hãy nhớ rằng hàm này nhận một số văn bản và trả về một danh sách các danh sách chứa embedding cho từng văn bản. Từ điển products và product_embeddings bạn đã tạo trước đó cũng đã được nạp sẵn.
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ạo vector truy vấn từ
query_text. - Tìm năm khoảng cách gần nhất và các chỉ số (index) tương ứng bằng hàm
find_n_closest(). - Lặp qua
hitsvà trích xuất sản phẩm tại mỗi'index'trong danh sáchhits.
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.
# Create the query vector from query_text
query_text = "computer"
query_vector = ____[0]
# Find the five closest distances
hits = ____
print(f'Search results for "{query_text}"')
for hit in hits:
# Extract the product at each index in hits
product = products[____]
print(product["title"])