類似度で並べ替える
すべての特徴量を埋め込みに変換できたので、次は類似度を計算します。この演習では、find_n_closest() という関数を定義します。これは、クエリベクトルと埋め込みのリストとのコサイン距離を計算し、最も小さい距離とそのインデックスを n 件返します。
次の演習では、この関数を使って意味検索対応のプロダクト検索アプリケーションを動かします。
distance は scipy.spatial からインポート済みです。
この演習はコースの一部です
OpenAI API ではじめる Embeddings 入門
演習の手順
query_vectorとembeddingのコサイン距離を計算します。distとそのindexを含む辞書をdistancesリストに追加します。- 各辞書の
'distance'キーでdistancesリストをソートします。 distances_sortedの先頭n要素を返します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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 ____