Búsqueda semántica de productos
¡Es hora de poner en práctica tu función find_n_closest()
! Probarás tu búsqueda semántica de productos en una consulta de prueba, calculando una lista ordenada de los cinco productos más similares semánticamente, basándote en los datos enriquecidos que le diste al modelo.
Aquí tienes un recordatorio de la función find_n_closest()
que creaste en el ejercicio 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]
También está disponible la función create_embeddings()
que creaste anteriormente. Recuerda que toma un texto y devuelve una lista de listas con las incrustaciones de cada texto. También se han cargado el diccionario products
y el product_embeddings
que creaste anteriormente.
Este ejercicio forma parte del curso
Introducción a las incrustaciones con la OpenAI API
Instrucciones de ejercicio
- Crea el vector de consulta a partir de
query_text
. - Encuentra las cinco distancias más próximas y sus índices correspondientes utilizando la función
find_n_closest()
. - Haz un bucle sobre
hits
y extrae el producto en cada'index'
de la listahits
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# 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"])