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 de ejercicio
- Calcula la distancia coseno entre
query_vector
yembedding
. - Añade un diccionario que contenga
dist
y suindex
a la listadistances
. - Ordena la lista
distances
por la clave'distance'
de cada diccionario. - Devuelve los primeros
n
elementos endistances_sorted
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este 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 ____