CommencerCommencer gratuitement

Recherche sémantique de produits

Il est temps de mettre votre fonction find_n_closest() à profit ! Vous allez tester votre recherche sémantique de produits avec une requête d’essai, en calculant une liste triée des cinq produits les plus similaires sur le plan sémantique, à partir des données enrichies que vous avez fournies au modèle.

Voici un rappel de la fonction find_n_closest() que vous avez créée dans l’exercice précédent :

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]

La fonction create_embeddings() que vous avez créée plus tôt est également disponible. Rappelez-vous qu’elle prend du texte en entrée et renvoie une liste de listes contenant les embeddings pour chaque texte. Le dictionnaire products et les product_embeddings que vous avez créés précédemment ont aussi été chargés.

Cet exercice fait partie du cours

Introduction aux embeddings avec l’API OpenAI

Afficher le cours

Instructions

  • Créez le vecteur de requête à partir de query_text.
  • Trouvez les cinq distances les plus proches et leurs index correspondants à l’aide de la fonction find_n_closest().
  • Parcourez hits et extrayez le produit à chaque 'index' dans la liste hits.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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"])
Modifier et exécuter le code