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
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
hitset extrayez le produit à chaque'index'dans la listehits.
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"])