Aan de slagBegin gratis

Semantisch zoeken voor producten

Tijd om je find_n_closest()-functie te gebruiken! Je gaat je semantische productzoekopdracht testen op een testquery. Daarbij bereken je een gesorteerde lijst van de vijf semantisch meest vergelijkbare producten, gebaseerd op de verrijkte data die je het model hebt gegeven.

Hier is een herinnering aan de find_n_closest()-functie die je in de vorige oefening hebt gemaakt:

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]

De create_embeddings()-functie die je eerder hebt gemaakt is ook beschikbaar. Denk eraan: die neemt tekst aan en geeft een lijst van lijsten terug met de embeddings voor elke tekst. De products-dictionary en de product_embeddings die je eerder hebt gemaakt zijn ook geladen.

Deze oefening maakt deel uit van de cursus

Introductie tot Embeddings met de OpenAI API

Bekijk cursus

Oefeninstructies

  • Maak de queryvector op basis van query_text.
  • Zoek de vijf dichtstbijzijnde afstanden en bijbehorende indexen met de functie find_n_closest().
  • Loop over hits en haal het product op bij elke 'index' in de lijst hits.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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"])
Code bewerken en uitvoeren