การค้นหาเชิงความหมายสำหรับสินค้า
ถึงเวลาลองใช้ฟังก์ชัน find_n_closest() แล้ว! ทดสอบการค้นหาสินค้าเชิงความหมายด้วย query ทดสอบ โดยคำนวณรายการสินค้าที่มีความหมายใกล้เคียงกันมากที่สุด 5 รายการแบบเรียงลำดับ จากข้อมูลเสริมที่ป้อนให้กับโมเดลไว้ก่อนหน้านี้
นี่คือฟังก์ชัน find_n_closest() ที่สร้างไว้ในแบบฝึกหัดก่อนหน้า:
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]
ฟังก์ชัน create_embeddings() ที่สร้างไว้ก่อนหน้านี้ก็พร้อมใช้งานเช่นกัน ฟังก์ชันนี้รับข้อความเป็น input และคืนค่าเป็นลิสต์ของลิสต์ที่มี embedding ของแต่ละข้อความ นอกจากนี้ยังได้โหลดดิกชันนารี products และ product_embeddings ที่สร้างไว้ก่อนหน้าไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้าง Embeddings ด้วย OpenAI API
คำแนะนำการฝึกหัด
- สร้าง query vector จาก
query_text - ค้นหาระยะทางที่ใกล้ที่สุด 5 รายการพร้อม index ที่สอดคล้องกัน โดยใช้ฟังก์ชัน
find_n_closest() - วนลูปใน
hitsและดึงข้อมูลสินค้าที่'index'แต่ละตัวในลิสต์hits
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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"])