Pencarian semantik untuk produk
Saatnya menggunakan fungsi find_n_closest() Anda! Anda akan menguji pencarian produk semantik pada kueri uji, dengan menghitung daftar berurut dari lima produk yang paling mirip secara semantik, berdasarkan data yang telah Anda perkaya untuk model.
Berikut pengingat fungsi find_n_closest() yang Anda buat pada latihan sebelumnya:
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]
Fungsi create_embeddings() yang Anda buat sebelumnya juga tersedia. Ingat bahwa fungsi tersebut menerima teks dan mengembalikan daftar berisi daftar embedding untuk setiap teks. Kamus products dan product_embeddings yang Anda buat sebelumnya juga telah dimuat.
Latihan ini merupakan bagian dari kursus
Pengantar Embeddings dengan OpenAI API
Instruksi latihan
- Buat vektor kueri dari
query_text. - Temukan lima jarak terdekat beserta indeks yang sesuai menggunakan fungsi
find_n_closest(). - Lakukan loop pada
hitsdan ekstrak produk pada setiap'index'dalam daftarhits.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# 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"])