Semantische Suche nach Produkten
Es ist Zeit, deine find_n_closest()
Funktion zu nutzen! Du testest deine semantische Produktsuche an einer Testabfrage und berechnest eine sortierte Liste der fünf semantisch ähnlichsten Produkte, basierend auf den angereicherten Daten, die du dem Modell gegeben hast.
Hier ist eine Erinnerung an die Funktion find_n_closest()
, die du in der vorherigen Übung erstellt hast:
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]
Die Funktion create_embeddings()
, die du zuvor erstellt hast, ist ebenfalls verfügbar. Erinnere dich daran, dass sie einen Text annimmt und eine Liste von Listen zurückgibt, die die Einbettungen für jeden Text enthält. Das products
Wörterbuch und die product_embeddings
, die du zuvor erstellt hast, wurden ebenfalls geladen.
Diese Übung ist Teil des Kurses
Einführung in Embeddings mit der OpenAI API
Anleitung zur Übung
- Erstelle den Abfragevektor aus
query_text
. - Finde die fünf nächstgelegenen Abstände und ihre entsprechenden Indizes mit der Funktion
find_n_closest()
. - Führe eine Schleife über
hits
und extrahiere das Produkt auf jeder'index'
in derhits
Liste.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# 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"])