Inizia subitoInizia gratis

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

Visualizza corso

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 hits ed estrai il prodotto all''index' corrispondente nella lista hits.

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"])
Modifica ed esegui il codice