Ricerca semantica di prodotti
È il momento di mettere all'opera la tua funzione find_n_closest()! Proverai la tua ricerca semantica di prodotti su una query di test, calcolando un elenco ordinato dei cinque prodotti più simili dal punto di vista semantico, basandoti sui dati arricchiti che hai fornito al modello.
Ecco un promemoria della funzione find_n_closest() che hai creato nell'esercizio precedente:
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]
È disponibile anche la funzione create_embeddings() che hai creato in precedenza. Ricorda che prende del testo e restituisce un elenco di liste contenenti gli embedding per ciascun testo. Anche il dizionario products e i product_embeddings che hai creato in precedenza sono stati caricati.
Questo esercizio fa parte del corso
Introduzione agli Embeddings con l'API di OpenAI
Istruzioni dell'esercizio
- Crea il vettore di query a partire da
query_text. - Trova le cinque distanze più vicine e i relativi indici usando la funzione
find_n_closest(). - Esegui un ciclo su
hitsed estrai il prodotto all''index'corrispondente nella listahits.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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"])