Microsoft は 17 日、来年廃止予定の text-davinci-003
などの Completions 系モデルの後継となる gpt-35-turbo-instruct
を追加しました。まずは米国東部、スウェーデン中部リージョンで利用可能となっており、最大トークンは 4,097 となります。
gpt-35-turbo-instruct(0914)
モデルは Completions API 専用となっており、Chat Completions API では使用できません。
当初 Azure Cognitive Search を用いた RAG アーキテクチャにおいて、ユーザーの質問文から検索クエリーを生成するフェーズで text-davinci-003
を用いていましたが、これが廃止予定となったことで、一時的に Chat Completions API 経由で gpt-35-turbo
を用いて生成していました。
ぶっちゃけ gpt-35-turbo
の Few-shot でうまくいってたんですが、今回 gpt-35-turbo-instruct(0914)
がその代替となるのか感触を見てみたいと思います。
使用するプロンプトと条件
このアシスタントは、ユーザーの会話や新しい質問に基づいて質問文を検索クエリに変換して Search query: を補完します。
検索クエリは必ずスペースで区切ってください。
最低でも5つの同義語を生成して、synonym: を補完します。必ず Search query: と違うワードを使ってください。
Example:###
Question:徳川家康ってなにした人
Search query: 徳川家康 人物 歴史
synonym: 竹千代 将軍 武将 説明
Question:徳川家康の武功を教えてください
Search query: 徳川家康 人物 武功
synonym: 竹千代 業績 成果 武勲
Question:源範頼の墓所はどこにありますか?
Search query: 源範頼 墓所 場所
synonym: 蒲殿 墓 どこ
###
max_tokens
: 100
temperature
: 0
Completions API
使用するプロンプトに、以下の質問を付加して Completions API に送信します。
text-davinci-003
Question: 源義経が活躍した有名な戦いって何?
Search query: 源義経 戦い 活躍
synonym: 義経 名戦 勝利 栄光
Question: 源実朝の趣味とは?
Search query: 源実朝 趣味 嗜好
synonym: 蒲殿 好み 嗜む 遊び
同義語にミスあり。
gpt-35-turbo-instruct(0914)
Question: 源義経が活躍した有名な戦いって何?
Search query: 源義経 戦い 歴史
synonym: 源平合戦 闘い 著名な
5 つ生成してくれないケースあり。
Question: 源実朝の趣味とは?
Search query: 源実朝 趣味
synonym: 源仲宗根 嗜好 好み 趣向 趣味嗜好
同義語生成が一部怪しい・・・
Chat Completions API
使用するプロンプトを system
ロールに追加して、user
ロールで質問を送信します。
gpt-35-turbo(0301)
源義経が活躍した有名な戦いって何?
Search query: 源義経 戦い 有名
synonym: 義経 兄弟 闘い 著名 戦闘
源義経が活躍した有名な戦いとしては、壇ノ浦の戦いが挙げられます。
クエリー以外も生成してしまった。
源実朝の趣味とは?
Search query: 源実朝 趣味
synonym: 実朝 嗜好 好み 趣向 趣味嗜好
gpt-35-turbo(0613)
源義経が活躍した有名な戦いって何?
Search query: 源義経 戦い 歴史
synonym: 源義経 戦闘 著名な 戦争 有名な
源実朝の趣味とは?
Search query: 源実朝 趣味
synonym: 源実朝 嗜好 好み 趣向 趣味嗜好
0613
バージョンは System メッセージにちゃんと従って 5 つの同義語を頑張って生成してます。
感触
さくっと数パターンしか試してないのでなんとも言えませんが、gpt-35-turbo(0613)
がよく従う印象です。プロンプトの書き方や出力の構造化の仕方、パラメーターによっても変わってきますので、ちゃんとテストデータを用意して gpt-35-turbo-instruct(0914)
と gpt-35-turbo(0613)
で比較検証したほうがいいかなと思います。こーいう時の Prompt flow ですね。
Prompt flow による評価
Prompt flow で Completions API の Variant を作って 2 つのモデルを評価します。
Variant_0 が gpt-35-turbo-instruct
、Variant_1 が text-davinci-003
という感じで同じ入力データを使って評価します。
「バッチ実行」機能を使えば、Azure Machine Learning 上のテストデータアセットを使った自動評価もできますし、CSV、TSV、JSONL、PARQUET ファイルをアップロードして評価も可能です。定量評価のための様々なメトリクスも用意されています。
今後の使い道
RAG アーキテクチャにおける検索ワード生成アプローチはベクトル検索に完全に置き換わるというわけではありません。Microsoft が公表した RAG システムの定量評価結果では、ベクトル検索と検索キーワード生成による全文検索単体よりもハイブリッド検索およびセマンティックハイブリッド検索の精度が高いという結果になっており、今後も組み合わせ技でのアプローチが有効です。