OpenAIのAPIをつかってRAGを行う為に検索対象のファイルを準備してみた

題名のとおり、OpenAIのAPIをつかってRAGを行う為に検索対象のファイルを準備してみました。

大まかな流れは以下の通りです。

① 検索対象ファイルを作成

② File APIへアップロード

  File IDを取得

③ Vector Storeを作成

  Vector Store IDを取得

④ File IDをVector Storeへ登録

   Responses APIからFile Search

1.検索対象ファイルを作成

とりあえず今回は以下の料理レシピを作成し、RAGとして登録してみることにしました。なお最初、別のデータをcsvで登録しようとしたのですがなぜかうまくいかなかったので、マークダウンファイル(recipe.md)として作成しました。

# 鶏の照り焼き

##材料
鶏もも肉 300g
しょうゆ 大さじ2
みりん 大さじ2
砂糖 大さじ1

##所要時間
約20分


# 親子丼

##材料
鶏もも肉 150g
卵 2個
玉ねぎ 1/2個
しょうゆ 大さじ1
みりん 大さじ1

##所要時間
約15分

2.File APIへアップロード

対象ファイルを作成したら、まずは下記の curl コマンドを利用し、OpenAIのFile APIにアップロードします。

なお、$OPENAI_API_KEYでは環境編集として設定した API_Keyを読み込んでいます。また、purposeのところは色々な指定ができるようですが、今回は user_data (RAGなどの一般的なファイル利用に使える目的)としています。

curl https://api.openai.com/v1/files \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F purpose="user_data" \
-F file="@recipe.md"

うまくいくと以下のような回答が返ってきますので、”file-xxxxxxxxxxxxxxxx”(File ID)をメモしておきます。

{
"id": "file-xxxxxxxxxxxxxxxx",
"object": "file",
"bytes": 1234,
"created_at": 1750000000,
"filename": "recipe.md",
"purpose": "user_data"
}

3.Vector Storeを作成

次に以下の curlコマンドを実行し、Vector Storeを作ります。

curl.exe https://api.openai.com/v1/vector_stores `
-H "Authorization: Bearer $env:OPENAI_API_KEY" `
-H "Content-Type: application/json" `
-d '{\"name\":\"料理レシピRAG\"}'

こちらもうまくいくと以下のような回答が返ってくるので”vs_xxxxxxxxxxxxx”(Vector Store ID)をメモしておきます。

{
"id": "vs_xxxxxxxxxxxxx",
"object": "vector_store",
"name": "料理レシピRAG",
...
}

4.File IDをVector Storeへ登録

最後にこれまでで取得した”file-xxxxxxxxxxxxxxxx”(File ID)と”vs_xxxxxxxxxxxxx”(Vector Store ID)を使い、File IDをVector Storeへ登録します。

curl.exe https://api.openai.com/v1/vector_stores/vs-xxxxxxxx/files `
-H "Authorization: Bearer $env:OPENAI_API_KEY" `
-H "Content-Type: application/json" `
-d '{\"file_id\":\"file-xxxxxxxx\"}'

成功すると以下のような回答が返ってきます。

{
"id": "file-xxxxxxxxx",
"object": "vector_store.file",
"status": "in_progress",
"vector_store_id": "vs_xxxxxxxxx",
"created_at": 1750000000
}

なお、このとき大概の場合 “status”: “in_progress”となっているので、完了を確認するには以下のコマンドを続けて実行します。

curl.exe https://api.openai.com/v1/vector_stores/vs-xxxxxxxx/files/file-xxxxxxxx `
-H "Authorization: Bearer $env:OPENAI_API_KEY"

これで”status”: “completed”となっていれば完了です。

ちなみに冒頭で書いたように最初 csvで登録しようとしたら failed となったので、正しく登録できたかどうか”status”: “completed”になるまで確認したほうがよさそうです。

補足(ファイル一覧取得)

OpenAI APIには「Vector Storeに登録されたファイル一覧」を取得するAPIがあります。

curl.exe https://api.openai.com/v1/vector_stores/vs-xxxxxxxx/files `
-H "Authorization: Bearer $env:OPENAI_API_KEY"

これを実行すると以下のような回答が得られ、Vector Store内のファイル一覧を取得することが可能です。

{
"object": "list",
"data": [
{
"id": "file-xxxxxxxx",
"object": "vector_store.file",
"status": "completed"
}
]
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA