Ordenar por similitud
Ahora que has incrustado todas tus características, el siguiente paso es calcular las similitudes. En este ejercicio, definirás una función llamada find_n_closest(), que calcula las distancias coseno entre un vector de consulta y una lista de incrustaciones y devuelve las n distancias más pequeñas y sus índices.
En el siguiente ejercicio, utilizarás esta función para habilitar tu aplicación de búsqueda semántica de productos.
distance se ha importado de scipy.spatial.
Este ejercicio forma parte del curso
Introducción a las incrustaciones con la OpenAI API
Instrucciones del ejercicio
- Calcula la distancia coseno entre
query_vectoryembedding. - Añade un diccionario que contenga
disty suindexa la listadistances. - Ordena la lista
distancespor la clave'distance'de cada diccionario. - Devuelve los primeros
nelementos endistances_sorted.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
def find_n_closest(query_vector, embeddings, n=3):
distances = []
for index, embedding in enumerate(embeddings):
# Calculate the cosine distance between the query vector and embedding
dist = ____
# Append the distance and index to distances
distances.append({"distance": ____, "index": ____})
# Sort distances by the distance key
distances_sorted = ____
# Return the first n elements in distances_sorted
return ____