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

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 productsproduct_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

Xem khóa học

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 hits và trích xuất sản phẩm tại mỗi 'index' trong danh sách hits.

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"])
Chỉnh sửa và Chạy Mã