プログラミング

バックエンド

【OpenAI API】FileSearchについて

メロンパン@プログラマー

メロンパン@プログラマー

#Oookey_blog_025

【OpenAI API】FileSearchについて

こんにちは!
プログラマーのメロンパンです。
近頃、画像や動画といった分野に特化した生成AIの登場をよく耳にします。
今回は「特定の情報のみ」の会話AIを作成する際に便利な「FileSearch」について紹介したいと思います。

目次

FileSearchについて
使用方法
仕様・設定要素について
まとめ
参考

FileSearchについて

FileSearchとは別名RAG機能とも呼ばれており、AIの情報元を絞って回答を行う機能です。
通常はAIが保持している記憶データをもとに文章を生成します。
しかしFileSearch機能では情報元を提供し、検索させることで情報が絞られてより正確に回答を得ることができます。


項目

通常

FileSearch(RAG)

情報源

事前学習データ

提供したドキュメント

情報の鮮度

最終学習時点まで

最新(ドキュメントに依存する)

ハルネーション

発生しやすい

発生しにくい

主な使用先

一般知識、文章作成、アイディア出し

社内規定、技術マニュアル、契約書検索

今回はOpenAIのAPIでの使用方法を解説いたします。

使用方法

情報元コンテナの作成

まずは、情報元となるコンテナを作成いたします。
このコンテナにPDFなどのドキュメントを格納し使用いたします。


openAIのダッシュボードを開き「Storage」→「Vector store」へと移動いたします。

FileSearch:コンテナ1

コンテナを作成していない場合は上記のような画面が表示されます。

「create」ボタンを押すことでコンテナの設定が行えます。

FileSearch:コンテナ2

黒塗りの部分の「ID」項目はFileSearch機能を使用する際の情報元を決める際に使用いたします。

「+ Add files」ボタンを押すことでコンテナにファイルを追加することができます。

FileSearch:コンテナ3

ファイル追加されていれば情報元の設定は完了です。

実装

コード上で実装する際はopenAIの使用処理にtools項目で下記を設定します。

Copied!

copyBtn


    const response = await client.responses.create({
        model: "gpt-4.1-mini",
        input: "送信内容",
        tools: [
            {
                type: "file_search",
                vector_store_ids: "情報コンテナのID",
            },
        ],
    })

                

これで実装完了です。

仕様・設定要素について

FileSearchは情報元のドキュメントから送信された内容に当てはまる文章をピックアップしそれらを元に返答文章を生成いたします。
ここからはFileSearchを使用する際に知っておくと便利な要素について紹介いたします。

ピックアップ文章の上限

FileSearchはドキュメントから文章をピックアップしてきますが、ピックアップする量が多いほどもちろん返答までにかかる時間も長くなります。
コード上でピックアップを行える上限値を設定することができます。

Copied!

copyBtn
// この設定であれば3つまで文章をピックアップする

    tools: [
        {
            type: "file_search",
            vector_store_ids: "情報コンテナのID",
            max_num_results: 3,
        },
    ],

                

上限値を設定しないと可能な限り文章のピックアップを行うため3〜5個程度で設定しておくことを推奨します。

実行ログ

コードに下記を加えることでFileSearchを実行している間の特殊なログを確認することができます。

Copied!

copyBtn


    tools: [
        {
            type: "file_search",
            vector_store_ids: "情報コンテナのID",
        },
    ],

    //ログの表示
    include: ["file_search_call.results"],

                

このログでは下記の項目を確認することができます。

スコア

ピックアップされた文章にはそれぞれスコアがつけられております。
このスコアが高いほど送信された内容に対して当てはまっている内容となっています。
このスコアを元に返答文章を生成いたします。
スコアは実行ログにて確認することができます。

Copied!

copyBtn

    //ログ
    results: [
        {
            ...
            "score": 0.7022,
            "text": ドキュメント内の文章
            ...
        }
    ]

                

まとめ

今回はOpenAI APIのFileSearchの実装方法について紹介いたしました。
実装も簡単で、OpenAI以外のAPIでも使用できるところが多くあるようなのでぜひ使ってみてください!
最後まで閲覧いただきありがとうございました!