Pesquisa semântica de produtos
É hora de você usar a função find_n_closest()
! Você testará sua pesquisa semântica de produtos em uma consulta de teste, calculando uma lista ordenada dos cinco produtos mais semelhantes semanticamente, com base nos dados enriquecidos que você forneceu ao modelo.
Aqui está um lembrete da função find_n_closest()
que você criou no exercício 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]
A função create_embeddings()
que você criou anteriormente também está disponível. Lembre-se de que ele recebe um texto e retorna uma lista de listas que contém os embeddings para cada texto. O dicionário products
e o product_embeddings
que você criou anteriormente também foram carregados.
Este exercício faz parte do curso
Introdução aos embeddings com o OpenAI API
Instruções de exercício
- Crie o vetor de consulta a partir de
query_text
. - Encontre as cinco distâncias mais próximas e seus índices correspondentes usando a função
find_n_closest()
. - Faça um loop em
hits
e extraia o produto em cada'index'
na listahits
.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
# 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"])