Sortowanie według podobieństwa
Po osadzeniu wszystkich cech kolejnym krokiem jest obliczenie podobieństw. W tym ćwiczeniu zdefiniujesz funkcję find_n_closest(), która oblicza odległości cosinusowe między wektorem zapytania a listą osadzeń i zwraca n najmniejszych odległości wraz z ich indeksami.
W następnym ćwiczeniu użyjesz tej funkcji, aby zbudować aplikację do semantycznego wyszukiwania produktów.
Moduł distance został zaimportowany z scipy.spatial.
To ćwiczenie jest częścią kursu
Wprowadzenie do osadzeń z OpenAI API
Instrukcje do ćwiczenia
- Oblicz odległość cosinusową między
query_vectoraembedding. - Dołącz do listy
distancessłownik zawierającydistoraz jegoindex. - Posortuj listę
distanceswedług klucza'distance'w każdym słowniku. - Zwróć pierwsze
nelementów zdistances_sorted.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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 ____