Sémantické vyhledávání produktů
Teď svou funkci find_n_closest() pořádně prověříš! Na testovacím dotazu si vyzkoušíš sémantické vyhledávání produktů – sestavíš seřazený seznam pěti produktů, které jsou sémanticky nejpodobnější zadanému dotazu, a to na základě obohacených dat, která jsi modelu poskytl/a.
Tady je připomenutí funkce find_n_closest(), kterou jsi vytvořil/a v předchozím cvičení:
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]
K dispozici máš také funkci create_embeddings(), kterou jsi vytvořil/a dříve. Ta přijme text a vrátí seznam seznamů s embeddingsy pro každý text. Slovník products a product_embeddings, které jsi vytvořil/a dříve, jsou také načteny.
Toto cvičení je součástí kurzu
Introduction to Embeddings with the OpenAI API
Pokyny k cvičení
- Vytvoř vektor dotazu z
query_text. - Pomocí funkce
find_n_closest()najdi pět nejbližších vzdáleností a jejich příslušné indexy. - Projdi
hitsve smyčce a pro každý'index'v seznamuhitsextrahuj odpovídající produkt.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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"])