Recherche sémantique de produits
C'est le moment d'utiliser votre fonction find_n_closest() ! 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, selon les données enrichies que vous avez fournies au modèle.
Voici un rappel de la fonction find_n_closest() que vous avez créée à 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 aussi disponible. Rappelez-vous qu'elle prend du texte en entrée et retourne une liste de listes contenant les représentations (embeddings) pour chaque texte. Le dictionnaire products et les product_embeddings que vous avez créés précédemment ont également été chargés.
Cette activité fait partie du cours
Introduction aux embeddings avec l'API d'OpenAI
Instructions de l’exercice
- Créez le vecteur de requête à partir de
query_text. - Trouvez les cinq distances les plus proches et leurs index correspondants avec la fonction
find_n_closest(). - Parcourez
hitset extrayez le produit à chaque'index'dans la listehits.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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"])