ระบบแนะนำสินค้า
ในแบบฝึกหัดนี้ จะสร้างระบบแนะนำสินค้าสำหรับร้านค้าออนไลน์ที่จำหน่ายสินค้าหลากหลายประเภท ระบบนี้จะแนะนำสินค้าที่คล้ายกัน 3 รายการให้แก่ผู้ใช้ที่เข้าชมหน้าสินค้าแต่ไม่ได้ซื้อ โดยอิงจากสินค้าชิ้นสุดท้ายที่เข้าชม
มีรายการ dictionary ของสินค้าที่มีจำหน่ายบนเว็บไซต์ให้แล้ว
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"
]
},
...
]
และมี dictionary ของสินค้าชิ้นสุดท้ายที่ผู้ใช้เข้าชม เก็บไว้ในตัวแปร last_product
ฟังก์ชันที่กำหนดเองต่อไปนี้ซึ่งสร้างไว้ก่อนหน้าในคอร์สสามารถนำมาใช้งานได้เลย:
create_embeddings(texts)→ คืนค่ารายการ embedding สำหรับแต่ละข้อความในtextscreate_product_text(product)→ รวมคุณสมบัติของproductให้เป็น string เดียวสำหรับการสร้าง embeddingfind_n_closest(query_vector, embeddings, n=3)→ คืนค่าระยะทางที่ใกล้ที่สุดnรายการพร้อม index ระหว่างquery_vectorกับembeddingsโดยอิงจาก cosine distance
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้าง Embeddings ด้วย OpenAI API
คำแนะนำการฝึกหัด
- รวม text features ของ
last_productและของแต่ละสินค้าในproductsโดยใช้create_product_text() - สร้าง embedding จาก
last_product_textและproduct_textsด้วยcreate_embeddings()โดยให้last_product_embeddingsเป็นรายการตัวเลขชุดเดียว - ค้นหา cosine distance ที่เล็กที่สุด 3 อันดับแรกพร้อม index โดยใช้
find_n_closest()
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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'])