Bắt đầu ngayBắt đầu miễn phí

Hệ thống gợi ý sản phẩm

Trong bài tập này, bạn sẽ xây dựng một hệ thống gợi ý cho một nhà bán lẻ trực tuyến cung cấp nhiều loại sản phẩm. Hệ thống này sẽ đề xuất ba sản phẩm tương tự cho người dùng đã xem trang sản phẩm nhưng chưa mua, dựa trên sản phẩm cuối cùng họ đã truy cập.

Bạn đã được cung cấp một danh sách các dictionary mô tả những sản phẩm có trên trang,

products = [
    {
        "title": "Smartphone X1",
        "short_description": "The latest flagship smartphone with AI-powered features and 5G connectivity.",
        "price": 799.99,
        "category": "Electronics",
        "features": [
            "6.5-inch AMOLED display",
            ...
            "Fast wireless charging"
        ]
    },
    ...
]

và một dictionary cho sản phẩm cuối cùng người dùng đã xem, lưu trong last_product.

Các hàm tùy chỉnh sau, đã được định nghĩa trước trong khóa học, cũng sẵn sàng để bạn sử dụng:

  • create_embeddings(texts) → trả về danh sách embedding cho từng văn bản trong texts.
  • create_product_text(product) → kết hợp các đặc tính của product thành một chuỗi duy nhất để tạo embedding.
  • find_n_closest(query_vector, embeddings, n=3) → trả về n khoảng cách nhỏ nhất và chỉ số của chúng giữa query_vectorembeddings, dựa trên cosine distance.

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

Xem khóa học

Hướng dẫn bài tập

  • Kết hợp các đặc tính dạng văn bản trong last_product, và cho mỗi sản phẩm trong products, bằng cách dùng create_product_text().
  • Tạo embedding cho last_product_textproduct_texts bằng create_embeddings(), đảm bảo last_product_embeddings là một danh sách đơn.
  • Tìm ba cosine distance nhỏ nhất và chỉ số của chúng bằng find_n_closest().

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.

# Combine the features for last_product and each product in products
last_product_text = ____
product_texts = ____

# Embed last_product_text and product_texts
last_product_embeddings = ____
product_embeddings = ____

# Find the three smallest cosine distances and their indexes
hits = ____(____, product_embeddings)

for hit in hits:
  product = products[hit['index']]
  print(product['title'])
Chỉnh sửa và Chạy Mã