ÎncepețiÎncepe gratuit

Căutare semantică pentru produse

E momentul să folosești funcția find_n_closest()! Vei testa căutarea semantică de produse pe o interogare de test, calculând o listă sortată cu cele mai asemănătoare cinci produse din punct de vedere semantic, pe baza datelor îmbogățite pe care le-ai furnizat modelului.

Iată un memento al funcției find_n_closest() pe care ai creat-o în exercițiul anterior:

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]

Funcția create_embeddings() pe care ai creat-o anterior este de asemenea disponibilă. Reamintește-ți că primește un text și returnează o listă de liste cu încorporările (embeddings) corespunzătoare fiecărui text. Dicționarul products și product_embeddings pe care le-ai creat anterior au fost, de asemenea, încărcate.

Acest exercițiu face parte din cursul

Introducere în Embeddings cu API-ul OpenAI

Vezi cursul

Instrucțiuni pentru exercițiu

  • Creează vectorul de interogare din query_text.
  • Găsește cele mai apropiate cinci distanțe și indexurile corespunzătoare folosind funcția find_n_closest().
  • Parcurge hits și extrage produsul de la fiecare 'index' din lista hits.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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"])
Editează și rulează codul