見出し画像

OpenAI API(GPT-3) 入門 (10) - Searchエンドポイント

「OpenAI API (GPT-3)」の「Searchエンドポイント」で「セマンティック検索」を行う手順をまとめました。

前回

1. Searchエンドポイント

「Searchエンドポイント」(/search)は、「GPT-3」で「セマンティック検索」を行う機能を提供しています。

「セマンティック検索」は、検索クエリの内容を理解することにより、検索の精度を向上させることを目的としています。 語彙の一致に基づいてドキュメントを検索する従来の検索エンジンとは対照的に、「セマンティック検索」では同義語も検索できます。

画像1

2. Searchエンドポイントの利用手順

「Searchエンドポイント」の利用手順は、次のとおりです。

(1) ドキュメントのJSONファイルの作成。
以下は、猫の気持ちのドキュメントの例です。拡張子は「jsonl」とします。

・train.jsonl

{"text": "猫Aは幸せ", "metadata": "猫Aの気持ち"}
{"text": "猫Aはイライラ", "metadata": "猫Aの気持ち"}
{"text": "猫Aはトキメキ", "metadata": "猫Aの気持ち"}
{"text": "猫Bはウキウキ", "metadata": "猫Bの気持ち"}
{"text": "猫Bはがっかり", "metadata": "猫Bの気持ち"}
{"text": "猫Bは不幸", "metadata": "猫Bの気持ち"}

(2) ドキュメントのJSONファイルのアップロード。
戻り値の「id」の値をメモします。

import openai

# APIキーの設定
openai.api_key = "<APIキー>"

# ドキュメントのJSONのアップロード
result = openai.File.create(file=open("train.jsonl"), purpose="search")
print(result)
{
  "bytes": 133,
  "created_at": 1624262273,
  "filename": "train.jsonl",
  "id": "file-i646739ZQXQGa4Fh50pXXXXX",
  "object": "file",
  "purpose": "search",
  "status": "uploaded",
  "status_details": null
}

(3) セマンティック検索の実行。
引数「file」に、戻り値の「id」を指定します。

import openai

# APIキーの設定
#openai.api_key = "<APIキー>"

# セマンティック検索
result = openai.Engine("davinci").search(
    file="file-i646739ZQXQGa4Fh50pXXXXX",
    query="幸せ",
    max_rerank=3
)
print(result)
{
  "data": [
    {
      "document": 0,
      "object": "search_result",
      "score": 195.077,
      "text": "猫Aは幸せ"
    },
    {
      "document": 1,
      "object": "search_result",
      "score": 145.738,
      "text": "猫Bは不幸"
    }
  ],
  "model": "davinci:2020-05-03",
  "object": "list"
}

結果は、以下のようになりました。

・猫Aは幸せ : 195.077
・猫Bは不幸 : 145.738

3. Searchエンドポイントのパラメータ

「Searchエンドポイント」のパラメータは、次のとおりです。

・documents : ドキュメントのリスト。
・file : アップロードされたファイルのID、
・query : ドキュメントを検索するクエリ。
・max_rerank : ランク付け後に返されるドキュメントの最大数。
・return_metadata : trueの場合、返されるJSONに、メタデータを含める。

次回



この記事が気に入ったらサポートをしてみませんか?