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
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 listahits.
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"])