1. 学ぶ
  2. /
  3. コース
  4. /
  5. OpenAI API ではじめる Embeddings 入門

Connected

演習

商品のセマンティック検索

作成した find_n_closest() 関数を実際に使ってみましょう。テスト用のクエリでセマンティックな商品検索を試し、モデルに与えた拡張データに基づいて、意味的に最も近い商品トップ5を並べ替えたリストとして計算します。

前の演習で作成した find_n_closest() 関数をもう一度示します。

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]

先に作成した create_embeddings() 関数も利用できます。これはテキストを受け取り、各テキストの埋め込みを含むリストのリストを返します。以前に作成した products 辞書と product_embeddings も読み込まれています。

指示

100 XP
  • query_text からクエリベクターを作成します。
  • find_n_closest() 関数を使って、最も近い5件の距離とそれに対応するインデックスを取得します。
  • hits をループし、hits リスト内の各 'index' にある商品を取り出します。